]> source.dussan.org Git - nextcloud-server.git/commitdiff
fixing test 41459/head
authorMaxence Lange <maxence@artificial-owl.com>
Thu, 23 Nov 2023 01:43:19 +0000 (00:43 -0100)
committerMaxence Lange <maxence@artificial-owl.com>
Thu, 23 Nov 2023 01:43:26 +0000 (00:43 -0100)
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
build/integration/features/bootstrap/CommentsContext.php

index ad2d752b4dd9def6d4d0a79c6df6d172ca29933f..989f34692ca42bfeb00bcf0433afc7cb64528963 100644 (file)
@@ -49,6 +49,37 @@ class CommentsContext implements \Behat\Behat\Context\Context {
                }
        }
 
+
+
+       /**
+        * get a named entry from response instead of picking a random entry from values
+        *
+        * @param string $path
+        *
+        * @return array|string
+        * @throws Exception
+        */
+       private function getValueFromNamedEntries(string $path, array $response): mixed {
+               $next = '';
+               if (str_contains($path, ' ')) {
+                       [$key, $next] = explode(' ', $path, 2);
+               } else {
+                       $key = $path;
+               }
+
+               foreach ($response as $entry) {
+                       if ($entry['name'] === $key) {
+                               if ($next !== '') {
+                                       return $this->getValueFromNamedEntries($next, $entry['value']);
+                               } else {
+                                       return $entry['value'];
+                               }
+                       }
+               }
+
+               return null;
+       }
+
        /** @AfterScenario */
        public function teardownScenario() {
                $client = new \GuzzleHttp\Client();
@@ -175,7 +206,7 @@ class CommentsContext implements \Behat\Behat\Context\Context {
                if ($res->getStatusCode() === 207) {
                        $service = new Sabre\Xml\Service();
                        $this->response = $service->parse($res->getBody()->getContents());
-                       $this->commentId = (int) ($this->response[0]['value'][2]['value'][0]['value'][0]['value'] ?? 0);
+                       $this->commentId = (int) ($this->getValueFromNamedEntries('{DAV:}response {DAV:}propstat {DAV:}prop {http://owncloud.org/ns}id', $this->response ?? []) ?? 0);
                }
        }
 
@@ -238,7 +269,8 @@ class CommentsContext implements \Behat\Behat\Context\Context {
         * @throws \Exception
         */
        public function theResponseShouldContainAPropertyWithValue($key, $value) {
-               $keys = $this->response[0]['value'][2]['value'][0]['value'];
+//             $keys = $this->response[0]['value'][1]['value'][0]['value'];
+               $keys = $this->getValueFromNamedEntries('{DAV:}response {DAV:}propstat {DAV:}prop', $this->response);
                $found = false;
                foreach ($keys as $singleKey) {
                        if ($singleKey['name'] === '{http://owncloud.org/ns}' . substr($key, 3)) {