summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/tests
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2015-01-21 16:51:56 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2015-01-21 16:51:56 +0100
commit9921308c6207a3f0af8cbd5179c2f2d430dceb30 (patch)
tree97a6e90bc8c464f4aa24292689eb4388ba6401c4 /apps/files_sharing/tests
parent5864394d1a6e79f0022db9d7a87c29aa9b0103c0 (diff)
parentf3d696599a0733b1e621af504ed0249d01873fd3 (diff)
downloadnextcloud-server-9921308c6207a3f0af8cbd5179c2f2d430dceb30.tar.gz
nextcloud-server-9921308c6207a3f0af8cbd5179c2f2d430dceb30.zip
Merge pull request #13540 from owncloud/s2s-fixpasswordfromdialog
External share dialog must properly read entered password
Diffstat (limited to 'apps/files_sharing/tests')
-rw-r--r--apps/files_sharing/tests/js/externalSpec.js123
1 files changed, 123 insertions, 0 deletions
diff --git a/apps/files_sharing/tests/js/externalSpec.js b/apps/files_sharing/tests/js/externalSpec.js
new file mode 100644
index 00000000000..2f8f4508d46
--- /dev/null
+++ b/apps/files_sharing/tests/js/externalSpec.js
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2015 Vincent Petry <pvince81@owncloud.com>
+ *
+ * This file is licensed under the Affero General Public License version 3
+ * or later.
+ *
+ * See the COPYING-README file.
+ *
+ */
+
+describe('OCA.Sharing external tests', function() {
+ var plugin;
+ var urlQueryStub;
+ var promptDialogStub;
+ var confirmDialogStub;
+
+ function dummyShowDialog() {
+ var deferred = $.Deferred();
+ deferred.resolve();
+ return deferred.promise();
+ }
+
+ beforeEach(function() {
+ plugin = OCA.Sharing.ExternalShareDialogPlugin;
+ urlQueryStub = sinon.stub(OC.Util.History, 'parseUrlQuery');
+
+ confirmDialogStub = sinon.stub(OC.dialogs, 'confirm', dummyShowDialog);
+ promptDialogStub = sinon.stub(OC.dialogs, 'prompt', dummyShowDialog);
+
+ plugin.filesApp = {
+ fileList: {
+ reload: sinon.stub()
+ }
+ }
+ });
+ afterEach(function() {
+ urlQueryStub.restore();
+ confirmDialogStub.restore();
+ promptDialogStub.restore();
+ plugin = null;
+ });
+ describe('confirmation dialog from URL', function() {
+ var testShare;
+
+ /**
+ * Checks that the server call's query matches what is
+ * expected.
+ *
+ * @param {Object} expectedQuery expected query params
+ */
+ function checkRequest(expectedQuery) {
+ var request = fakeServer.requests[0];
+ var query = OC.parseQueryString(request.requestBody);
+ expect(request.method).toEqual('POST');
+ expect(query).toEqual(expectedQuery);
+
+ request.respond(
+ 200,
+ {'Content-Type': 'application/json'},
+ JSON.stringify({status: 'success'})
+ );
+ expect(plugin.filesApp.fileList.reload.calledOnce).toEqual(true);
+ }
+
+ beforeEach(function() {
+ testShare = {
+ remote: 'http://example.com/owncloud',
+ token: 'abcdefg',
+ owner: 'theowner',
+ name: 'the share name'
+ };
+ });
+ it('does nothing when no share was passed in URL', function() {
+ urlQueryStub.returns({});
+ plugin.processIncomingShareFromUrl();
+ expect(promptDialogStub.notCalled).toEqual(true);
+ expect(confirmDialogStub.notCalled).toEqual(true);
+ expect(fakeServer.requests.length).toEqual(0);
+ });
+ it('sends share info to server on confirm', function() {
+ urlQueryStub.returns(testShare);
+ plugin.processIncomingShareFromUrl();
+ expect(promptDialogStub.notCalled).toEqual(true);
+ expect(confirmDialogStub.calledOnce).toEqual(true);
+ confirmDialogStub.getCall(0).args[2](true);
+ expect(fakeServer.requests.length).toEqual(1);
+ checkRequest({
+ remote: 'http://example.com/owncloud',
+ token: 'abcdefg',
+ owner: 'theowner',
+ name: 'the share name',
+ password: ''
+ });
+ });
+ it('sends share info with password to server on confirm', function() {
+ testShare = _.extend(testShare, {protected: 1});
+ urlQueryStub.returns(testShare);
+ plugin.processIncomingShareFromUrl();
+ expect(promptDialogStub.calledOnce).toEqual(true);
+ expect(confirmDialogStub.notCalled).toEqual(true);
+ promptDialogStub.getCall(0).args[2](true, 'thepassword');
+ expect(fakeServer.requests.length).toEqual(1);
+ checkRequest({
+ remote: 'http://example.com/owncloud',
+ token: 'abcdefg',
+ owner: 'theowner',
+ name: 'the share name',
+ password: 'thepassword'
+ });
+ });
+ it('does not send share info on cancel', function() {
+ urlQueryStub.returns(testShare);
+ plugin.processIncomingShareFromUrl();
+ expect(promptDialogStub.notCalled).toEqual(true);
+ expect(confirmDialogStub.calledOnce).toEqual(true);
+ confirmDialogStub.getCall(0).args[2](false);
+ expect(fakeServer.requests.length).toEqual(0);
+ });
+ });
+ describe('show dialog for each share to confirm', function() {
+ // TODO test plugin.processSharesToConfirm()
+ });
+});