diff --git a/apps/files_sharing/tests/js/fileDropSpec.js b/apps/files_sharing/tests/js/fileDropSpec.js
new file mode 100644
index 0000000000000000000000000000000000000000..fb139788c50de37e1f11a5b8a5c0195473c40460
--- /dev/null
+++ b/apps/files_sharing/tests/js/fileDropSpec.js
@@ -0,0 +1,99 @@
+/**
+ *
+ * @copyright Copyright (c) 2017, Artur Neumann (info@individual-it.net)
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+describe("files Drop tests", function() {
+	//some testing data
+	var sharingToken = "fVCiSMhScgWfiuv";
+	var testFiles = [
+		{ name: 'test.txt', expectedValidationResult: true },
+		{ name: 'testनेपाल.txt', expectedValidationResult: true },
+		{ name: 'test.part', expectedValidationResult: false },
+		{ name: 'test.filepart', expectedValidationResult: false },
+		{ name: '.', expectedValidationResult: false },
+		{ name: '..', expectedValidationResult: false },
+	];
+
+	//this pre/post positions should not change the result of the file name validation
+	var prePostPositions = [""," ","  ","	"];
+	
+	//use the testFiles and the pre/post positions to generate more testing data
+	var replicatedTestFiles = [];
+	prePostPositions.map(function (prePostPosition) {
+		testFiles.map(function (testFile) {
+			replicatedTestFiles.push(
+				{
+					name: testFile.name + prePostPosition,
+					expectedValidationResult: testFile.expectedValidationResult
+				}
+			);
+			replicatedTestFiles.push(
+				{
+					name: prePostPosition + testFile.name,
+					expectedValidationResult: testFile.expectedValidationResult
+				}
+			);
+			replicatedTestFiles.push(
+				{
+					name: prePostPosition + testFile.name + prePostPosition,
+					expectedValidationResult: testFile.expectedValidationResult
+				}
+			);
+		});
+	});
+
+	beforeEach (function () {
+		//fake input for the sharing token
+		$('#testArea').append(
+				'<input name="sharingToken" value="" id="sharingToken" type="hidden">'
+		);
+	});
+
+
+	replicatedTestFiles.map(function (testFile) {
+		fit("validates the filenames correctly", function() {
+			testFile = { name: 'test.txt', expectedValidationResult: true };
+				data = {
+					'submit': function() {},
+					'files': [testFile]
+				}
+				expect(OCA.FilesSharingDrop.addFileToUpload('',data)).
+					toBe(
+						testFile.expectedValidationResult,
+						'wrongly validated file named "'+testFile.name+'"'
+						);
+		});
+		
+		if (testFile.expectedValidationResult === true) {
+			it("should set correct PUT URL, Auth header and submit", function () {
+				data = {
+						'submit': sinon.stub(),
+						'files': [testFile]
+					}
+				$('#sharingToken').val(sharingToken);
+				
+				OCA.FilesSharingDrop.addFileToUpload('',data);
+				expect(data.submit.calledOnce).toEqual(true);
+				expect(data.url).toContain("/public.php/webdav/" + encodeURI(testFile.name));
+				expect(data.headers['Authorization']).toEqual('Basic ' + btoa(sharingToken+":"));
+			});
+		}
+	});
+});
diff --git a/tests/karma.config.js b/tests/karma.config.js
index 91052f62cd2fcffd643390a8bb638af0c198725e..014a8709615374b89431c95376dbc867a1f60e92 100644
--- a/tests/karma.config.js
+++ b/tests/karma.config.js
@@ -56,7 +56,8 @@ module.exports = function(config) {
 					'apps/files_sharing/js/share.js',
 					'apps/files_sharing/js/sharebreadcrumbview.js',
 					'apps/files_sharing/js/public.js',
-					'apps/files_sharing/js/sharetabview.js'
+					'apps/files_sharing/js/sharetabview.js',
+					'apps/files_sharing/js/files_drop.js'
 				],
 				testFiles: ['apps/files_sharing/tests/js/*.js']
 			},