summaryrefslogtreecommitdiffstats
path: root/core/js/tests
diff options
context:
space:
mode:
Diffstat (limited to 'core/js/tests')
-rw-r--r--core/js/tests/specs/coreSpec.js67
1 files changed, 66 insertions, 1 deletions
diff --git a/core/js/tests/specs/coreSpec.js b/core/js/tests/specs/coreSpec.js
index 57ea5be8be0..94a397b7892 100644
--- a/core/js/tests/specs/coreSpec.js
+++ b/core/js/tests/specs/coreSpec.js
@@ -268,7 +268,72 @@ describe('Core base tests', function() {
// still nothing
expect(counter).toEqual(0);
});
-
+ });
+ describe('Parse query string', function() {
+ it('Parses query string from full URL', function() {
+ var query = OC.parseQueryString('http://localhost/stuff.php?q=a&b=x');
+ expect(query).toEqual({q: 'a', b: 'x'});
+ });
+ it('Parses query string from query part alone', function() {
+ var query = OC.parseQueryString('q=a&b=x');
+ expect(query).toEqual({q: 'a', b: 'x'});
+ });
+ it('Returns null hash when empty query', function() {
+ var query = OC.parseQueryString('');
+ expect(query).toEqual(null);
+ });
+ it('Returns empty hash when empty query with question mark', function() {
+ var query = OC.parseQueryString('?');
+ expect(query).toEqual({});
+ });
+ it('Decodes regular query strings', function() {
+ var query = OC.parseQueryString('a=abc&b=def');
+ expect(query).toEqual({
+ a: 'abc',
+ b: 'def'
+ });
+ });
+ it('Ignores empty parts', function() {
+ var query = OC.parseQueryString('&q=a&&b=x&');
+ expect(query).toEqual({q: 'a', b: 'x'});
+ });
+ it('Ignores lone equal signs', function() {
+ var query = OC.parseQueryString('&q=a&=&b=x&');
+ expect(query).toEqual({q: 'a', b: 'x'});
+ });
+ it('Includes extra equal signs in value', function() {
+ var query = OC.parseQueryString('u=a=x&q=a=b');
+ expect(query).toEqual({u: 'a=x', q: 'a=b'});
+ });
+ it('Decodes plus as space', function() {
+ var query = OC.parseQueryString('space+key=space+value');
+ expect(query).toEqual({'space key': 'space value'});
+ });
+ it('Decodes special characters', function() {
+ var query = OC.parseQueryString('unicode=%E6%B1%89%E5%AD%97');
+ expect(query).toEqual({unicode: '汉字'});
+ query = OC.parseQueryString('b=spaace%20value&space%20key=normalvalue&slash%2Fthis=amp%26ersand');
+ expect(query).toEqual({
+ b: 'spaace value',
+ 'space key': 'normalvalue',
+ 'slash/this': 'amp&ersand'
+ });
+ });
+ it('Decodes empty values', function() {
+ var query = OC.parseQueryString('keywithemptystring=&keywithnostring');
+ expect(query).toEqual({
+ 'keywithemptystring': '',
+ 'keywithnostring': null
+ });
+ });
+ it('Does not interpret data types', function() {
+ var query = OC.parseQueryString('booleanfalse=false&booleantrue=true&number=123');
+ expect(query).toEqual({
+ 'booleanfalse': 'false',
+ 'booleantrue': 'true',
+ 'number': '123'
+ });
+ });
});
describe('Generate Url', function() {
it('returns absolute urls', function() {