diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2016-12-02 10:43:11 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2016-12-02 13:17:53 +0100 |
commit | 4630ff536ea433d2e81ebe18b04f202bbe6b89ea (patch) | |
tree | 06cc7d9e95d6141379e786b94ffd5e558ca848e6 /build | |
parent | 1f387ad1e6f8f0a14a63bb0c9734c305b1d6ced1 (diff) | |
download | nextcloud-server-4630ff536ea433d2e81ebe18b04f202bbe6b89ea.tar.gz nextcloud-server-4630ff536ea433d2e81ebe18b04f202bbe6b89ea.zip |
Add intergration tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'build')
-rw-r--r-- | build/integration/config/behat.yml | 10 | ||||
-rw-r--r-- | build/integration/features/bootstrap/FilesDropContext.php | 72 | ||||
-rw-r--r-- | build/integration/filesdrop_features/filesdrop.feature | 59 |
3 files changed, 141 insertions, 0 deletions
diff --git a/build/integration/config/behat.yml b/build/integration/config/behat.yml index 3728e5461d8..9ef36f083e9 100644 --- a/build/integration/config/behat.yml +++ b/build/integration/config/behat.yml @@ -62,6 +62,16 @@ default: - admin - admin regular_user_password: 123456 + filesdrop: + paths: + - %paths.base%/../filesdrop_features + contexts: + - FilesDropContext: + baseUrl: http://localhost:8080 + admin: + - admin + - admin + regular_user_password: 123456 diff --git a/build/integration/features/bootstrap/FilesDropContext.php b/build/integration/features/bootstrap/FilesDropContext.php new file mode 100644 index 00000000000..760d76ac5e5 --- /dev/null +++ b/build/integration/features/bootstrap/FilesDropContext.php @@ -0,0 +1,72 @@ +<?php + +use Behat\Behat\Context\Context; +use Behat\Behat\Context\SnippetAcceptingContext; +use Behat\Behat\Tester\Exception\PendingException; +use GuzzleHttp\Client; + +require __DIR__ . '/../../vendor/autoload.php'; + +class FilesDropContext implements Context, SnippetAcceptingContext { + use WebDav; + + /** + * @When Dropping file :path with :content + */ + public function droppingFileWith($path, $content) { + $client = new Client(); + $options = []; + if (count($this->lastShareData->data->element) > 0){ + $token = $this->lastShareData->data[0]->token; + } else { + $token = $this->lastShareData->data[0]->token; + } + + $base = substr($this->baseUrl, 0, -4); + $fullUrl = $base . '/public.php/webdav' . $path; + + $options['auth'] = [$token, '']; + $options['headers'] = [ + 'X-REQUESTED-WITH' => 'XMLHttpRequest' + ]; + + $request = $client->createRequest('PUT', $fullUrl, $options); + $file = \GuzzleHttp\Stream\Stream::factory($content); + $request->setBody($file); + + try { + $this->response = $client->send($request); + } catch (\GuzzleHttp\Exception\ClientException $e) { + $this->response = $e->getResponse(); + } + } + + /** + * @When Creating folder :folder in drop + */ + public function creatingFolderInDrop($folder) { + $client = new Client(); + $options = []; + if (count($this->lastShareData->data->element) > 0){ + $token = $this->lastShareData->data[0]->token; + } else { + $token = $this->lastShareData->data[0]->token; + } + + $base = substr($this->baseUrl, 0, -4); + $fullUrl = $base . '/public.php/webdav/' . $folder; + + $options['auth'] = [$token, '']; + $options['headers'] = [ + 'X-REQUESTED-WITH' => 'XMLHttpRequest' + ]; + + $request = $client->createRequest('MKCOL', $fullUrl, $options); + + try { + $this->response = $client->send($request); + } catch (\GuzzleHttp\Exception\ClientException $e) { + $this->response = $e->getResponse(); + } + } +} diff --git a/build/integration/filesdrop_features/filesdrop.feature b/build/integration/filesdrop_features/filesdrop.feature new file mode 100644 index 00000000000..4a8759e241a --- /dev/null +++ b/build/integration/filesdrop_features/filesdrop.feature @@ -0,0 +1,59 @@ +Feature: FilesDrop + + Scenario: Put file via files drop + Given user "user0" exists + And As an "user0" + And user "user0" created a folder "/drop" + And as "user0" creating a share with + | path | drop | + | shareType | 3 | + | publicUpload | true | + And Updating last share with + | permissions | 4 | + When Dropping file "/a.txt" with "abc" + And Downloading file "/drop/a.txt" + Then Downloaded content should be "abc" + + Scenario: Put file same file multiple times via files drop + Given user "user0" exists + And As an "user0" + And user "user0" created a folder "/drop" + And as "user0" creating a share with + | path | drop | + | shareType | 3 | + | publicUpload | true | + And Updating last share with + | permissions | 4 | + When Dropping file "/a.txt" with "abc" + And Dropping file "/a.txt" with "def" + And Downloading file "/drop/a.txt" + Then Downloaded content should be "abc" + And Downloading file "/drop/a (2).txt" + Then Downloaded content should be "def" + + Scenario: Files drop ignores directory + Given user "user0" exists + And As an "user0" + And user "user0" created a folder "/drop" + And as "user0" creating a share with + | path | drop | + | shareType | 3 | + | publicUpload | true | + And Updating last share with + | permissions | 4 | + When Dropping file "/folder/a.txt" with "abc" + And Downloading file "/drop/a.txt" + Then Downloaded content should be "abc" + + Scenario: Files drop forbis MKCOL + Given user "user0" exists + And As an "user0" + And user "user0" created a folder "/drop" + And as "user0" creating a share with + | path | drop | + | shareType | 3 | + | publicUpload | true | + And Updating last share with + | permissions | 4 | + When Creating folder "folder" in drop + Then the HTTP status code should be "405" |