From 28c57004dda25f9d78a9679237d1ec747c1d60b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Calvi=C3=B1o=20S=C3=A1nchez?= <danxuliu@gmail.com>
Date: Thu, 12 Nov 2020 11:52:53 +0100
Subject: [PATCH] Add integration tests for creating shares with default
 expiration dates
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
---
 .../features/bootstrap/SharingContext.php     |   6 +
 .../sharing_features/sharing-v1.feature       | 106 ++++++++++++++++++
 2 files changed, 112 insertions(+)

diff --git a/build/integration/features/bootstrap/SharingContext.php b/build/integration/features/bootstrap/SharingContext.php
index 2fcca2ee2c7..b1a4c1aa48b 100644
--- a/build/integration/features/bootstrap/SharingContext.php
+++ b/build/integration/features/bootstrap/SharingContext.php
@@ -38,6 +38,12 @@ class SharingContext implements Context, SnippetAcceptingContext {
 
 	protected function resetAppConfigs() {
 		$this->deleteServerConfig('core', 'shareapi_default_permissions');
+		$this->deleteServerConfig('core', 'shareapi_default_internal_expire_date');
+		$this->deleteServerConfig('core', 'shareapi_internal_expire_after_n_days');
+		$this->deleteServerConfig('core', 'internal_defaultExpDays');
+		$this->deleteServerConfig('core', 'shareapi_default_expire_date');
+		$this->deleteServerConfig('core', 'shareapi_expire_after_n_days');
+		$this->deleteServerConfig('core', 'link_defaultExpDays');
 		$this->deleteServerConfig('sharebymail', 'enforcePasswordProtection');
 	}
 }
diff --git a/build/integration/sharing_features/sharing-v1.feature b/build/integration/sharing_features/sharing-v1.feature
index 38eb2d8a812..b5b4f5341af 100644
--- a/build/integration/sharing_features/sharing-v1.feature
+++ b/build/integration/sharing_features/sharing-v1.feature
@@ -391,6 +391,112 @@ Feature: sharing
     And Share fields of last share match with
       | permissions | 7 |
 
+  Scenario: Creating a new internal share with default expiration date
+    Given user "user0" exists
+    And user "user1" exists
+    And As an "user0"
+    And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
+    When creating a share with
+      | path | welcome.txt |
+      | shareWith | user1 |
+      | shareType | 0 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +3 days |
+
+  Scenario: Creating a new internal share with relaxed default expiration date
+    Given user "user0" exists
+    And user "user1" exists
+    And As an "user0"
+    And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
+    And parameter "internal_defaultExpDays" of app "core" is set to "1"
+    When creating a share with
+      | path | welcome.txt |
+      | shareWith | user1 |
+      | shareType | 0 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +1 days |
+
+  Scenario: Creating a new internal share with relaxed default expiration date too large
+    Given user "user0" exists
+    And user "user1" exists
+    And As an "user0"
+    And parameter "shareapi_default_internal_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_internal_expire_after_n_days" of app "core" is set to "3"
+    And parameter "internal_defaultExpDays" of app "core" is set to "10"
+    When creating a share with
+      | path | welcome.txt |
+      | shareWith | user1 |
+      | shareType | 0 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +3 days |
+
+  Scenario: Creating a new link share with default expiration date
+    Given user "user0" exists
+    And As an "user0"
+    And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +3 days |
+
+  Scenario: Creating a new link share with relaxed default expiration date
+    Given user "user0" exists
+    And As an "user0"
+    And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
+    And parameter "link_defaultExpDays" of app "core" is set to "1"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +1 days |
+
+  Scenario: Creating a new link share with relaxed default expiration date too large
+    Given user "user0" exists
+    And As an "user0"
+    And parameter "shareapi_default_expire_date" of app "core" is set to "yes"
+    And parameter "shareapi_expire_after_n_days" of app "core" is set to "3"
+    And parameter "link_defaultExpDays" of app "core" is set to "10"
+    When creating a share with
+      | path | welcome.txt |
+      | shareType | 3 |
+    And the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Getting info of last share
+    Then the OCS status code should be "100"
+    And the HTTP status code should be "200"
+    And Share fields of last share match with
+      | expiration | +3 days |
+
   Scenario: getting all shares of a user using that user
     Given user "user0" exists
     And user "user1" exists
-- 
GitLab