]> source.dussan.org Git - nextcloud-server.git/commitdiff
Making propfinds, having depth in mind and checking it in gherkin description
authorSergio Bertolin <sbertolin@solidgear.es>
Mon, 30 Nov 2015 12:20:05 +0000 (12:20 +0000)
committerSergio Bertolin <sbertolin@solidgear.es>
Mon, 30 Nov 2015 12:20:05 +0000 (12:20 +0000)
build/integration/features/bootstrap/WebDav.php
build/integration/features/sharing-v1.feature

index 20c2d0f79943d7763941a0089c959f83cef513c4..2bbe44e9c59dd528a82e7628569474553fec1e06 100644 (file)
@@ -58,7 +58,8 @@ trait WebDav{
                $this->response = $this->makeDavRequest($user, "MOVE", $fileSource, $headers);
        }
 
-       public function listFolder($user, $path){
+       /*Returns the elements of a propfind, $folderDepth requires 1 to see elements without children*/
+       public function listFolder($user, $path, $folderDepth){
                $fullUrl = substr($this->baseUrl, 0, -4);
 
                $settings = array(
@@ -66,9 +67,6 @@ trait WebDav{
                        'userName' => $user,
                );
 
-               echo "password del admin: " . $this->adminUser[1] . "\n";
-               echo "fullUrl: " . $fullUrl . "\n";
-
                if ($user === 'admin') {
                        $settings['password'] = $this->adminUser[1];
                } else {
@@ -78,22 +76,28 @@ trait WebDav{
                $client = new SClient($settings);
 
                $response = $client->propfind($this->davPath . "/", array(
-                       '{DAV:}getetag',
-                       1
-               ));
-
-               print_r($response);
-               /*$features = $client->options();
+                       '{DAV:}getetag'
+               ), $folderDepth);
 
-               print_r($features);*/
-               //return $this->response->xml();
+               return $response;
        }
 
        /**
-        * @Then /^user "([^"]*)" should see following folders$/
+        * @Then /^user "([^"]*)" should see following elements$/
+        * @param \Behat\Gherkin\Node\TableNode|null $expectedElements
         */
-       public function checkList($user){
-               $this->listFolder($user, '/');
+       public function checkElementList($user, $expectedElements){
+               $elementList = $this->listFolder($user, '/', 2);
+               if ($expectedElements instanceof \Behat\Gherkin\Node\TableNode) {
+                       $elementRows = $expectedElements->getRows();
+                       $elementsSimplified = $this->simplifyArray($elementRows);
+                       foreach($elementsSimplified as $expectedElement) {
+                               $webdavPath = "/" . $this->davPath . $expectedElement;
+                               if (!array_key_exists($webdavPath,$elementList)){
+                                       PHPUnit_Framework_Assert::fail("$webdavPath" . " is not in propfind answer");
+                               }
+                       }
+               }
        }
        
 
index fc2da430663c0f684c3c4e347a7f587d1a4d8b54..f32e2fa2f3e6e8850b5ec12bec6deec7a8587a9c 100644 (file)
@@ -371,8 +371,12 @@ Feature: sharing
     And user "user1" belongs to group "group0"
     And file "/PARENT" from user "user0" is shared with user "user1"
     When file "/PARENT/CHILD" from user "user0" is shared with group "group0"
-    And As an "admin"
-    Then user "user1" should see following folders
+    Then user "user1" should see following elements
+      | /FOLDER/ |
+      | /PARENT/ |
+      | /CHILD/ |
+      | /PARENT/parent.txt |
+      | /CHILD/child.txt |
     And the HTTP status code should be "200"
 
   Scenario: Delete all group shares