Browse Source

Add intergration tests

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Roeland Jago Douma 7 years ago
parent
commit
4630ff536e

+ 10 - 0
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
 
 
 

+ 72 - 0
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();
+		}
+	}
+}

+ 59 - 0
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"