NewsBlur/node/node_modules/postman-url-encoder/unit-test.spec.js
2019-04-13 14:44:10 -04:00

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');
});
})
});