mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
75 lines
3.4 KiB
JavaScript
75 lines
3.4 KiB
JavaScript
var expect = require('expect.js'),
|
|
urlEncoder = require('./index.js');
|
|
|
|
describe('Url Encoding', function () {
|
|
|
|
describe('Encodes' , function() {
|
|
it('%', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?charwithPercent=%foo');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?charwithPercent=%25foo');
|
|
});
|
|
|
|
it('( and )', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=foo(a)');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=foo%28a%29');
|
|
});
|
|
|
|
it('Space', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=foo bar');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=foo%20bar');
|
|
});
|
|
|
|
it('multibyte character "𝌆"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?multibyte=𝌆');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?multibyte=%F0%9D%8C%86');
|
|
});
|
|
|
|
it('Russian charcters "обязательный"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=обязательный');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=%D0%BE%D0%B1%D1%8F%D0%B7%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9');
|
|
});
|
|
|
|
it('Chinese charcters "你好"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=你好');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=%E4%BD%A0%E5%A5%BD');
|
|
});
|
|
|
|
it('Japanese charcters "ハローポストマン"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=ハローポストマン');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=%E3%83%8F%E3%83%AD%E3%83%BC%E3%83%9D%E3%82%B9%E3%83%88%E3%83%9E%E3%83%B3');
|
|
});
|
|
|
|
it('Partial Russian charcters "Hello Почтальон"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=Hello Почтальон');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=Hello%20%D0%9F%D0%BE%D1%87%D1%82%D0%B0%D0%BB%D1%8C%D0%BE%D0%BD');
|
|
});
|
|
})
|
|
|
|
describe('Do not encode' , function() {
|
|
|
|
it('/, &, =, :, ?, +', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=b&c=d&e=f+g');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=b&c=d&e=f+g');
|
|
});
|
|
|
|
it('[ and ]', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a[0]=foo&a[1]=bar');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a[0]=foo&a[1]=bar');
|
|
});
|
|
|
|
it('pre encoded text( must avoid double encoding) - "email=foo%2Bbar%40domain.com"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?email=foo%2Bbar%40domain.com');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?email=foo%2Bbar%40domain.com');
|
|
});
|
|
|
|
it('pre-encoded multibyte character - "multibyte=%F0%9D%8C%86"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?multibyte=%F0%9D%8C%86');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?multibyte=%F0%9D%8C%86');
|
|
});
|
|
|
|
it('pre-encoded russian text - "a=Hello%20%D0%9F%D0%BE%D1%87%D1%82%D0%B0%D0%BB%D1%8C%D0%BE%D0%BD"', function () {
|
|
var encodedUrl = urlEncoder.encode('http://foo.bar.com?a=Hello%20%D0%9F%D0%BE%D1%87%D1%82%D0%B0%D0%BB%D1%8C%D0%BE%D0%BD');
|
|
expect(encodedUrl).to.equal('http://foo.bar.com?a=Hello%20%D0%9F%D0%BE%D1%87%D1%82%D0%B0%D0%BB%D1%8C%D0%BE%D0%BD');
|
|
});
|
|
})
|
|
});
|