core
Version:
Core Libs
652 lines (563 loc) • 24.5 kB
JavaScript
describe('Request', function(){
var Request = null;
it('require Request', function(){
Request = require('../../lib/index.js').http.Request;
expect(Request).toBeTruthy();
beforeEach(function(){
Request = require('../../lib/index.js').http.Request;
});
});
it('Request - construction #1', function(){
var request = new Request("http://www.onet.pl/");
expect(request.getUrl()).toBe('http://www.onet.pl/');
});
it('Request - construction #2', function(){
var baseRequest = new Request("http://www.onet.pl/");
var request = new Request(baseRequest);
expect(request.getUrl()).toBe('http://www.onet.pl/');
});
it('Request - construction #3', function(){
var http = require('http');
var httpRequest = new http.IncomingMessage({});
httpRequest.headers.host = 'www.onet.pl';
httpRequest.url = "/";
var request = new Request(httpRequest);
expect(request.getUrl()).toBe('http://www.onet.pl/');
});
it('Request - construction #4', function(){
var httpString = 'GET /index.html HTTP/1.1\r\n' +
'Pragma: no-cache\r\n' +
'\r\n' +
'body-data';
var httpBuffer = new Buffer(httpString, 'binary');
expect(function(){
new Request(httpBuffer);
}).toThrow();
});
it('Request - toBuffer #1', function(){
var request = new Request();
expect(function(){
request.toBuffer();
}).toThrow();
});
it('Request - toBuffer #2', function(){
var request = new Request();
request.setBody('body-test');
expect(function(){
// ta funkcja dziala tylko z obiektem Response
request.toBuffer();
}).toThrow();
});
it('Request - toBinaryData #1', function(){
var request = new Request();
expect(function(){
// ta funkcja dziala tylko z obiektem Response
request.toBinaryData();
}).toThrow();
});
it('Request - setUrl #1', function(){
var request = new Request();
request.setUrl('http://www.onet.pl');
expect(request.getUrl()).toBe('http://www.onet.pl/');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #2', function(){
var request = new Request();
request.setUrl('http://www.onet.pl/');
expect(request.getUrl()).toBe('http://www.onet.pl/');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #3', function(){
var request = new Request();
request.setUrl('http://www.onet.pl:80');
expect(request.getUrl()).toBe('http://www.onet.pl/');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #4', function(){
var request = new Request();
request.setUrl('http://www.onet.pl:80/');
expect(request.getUrl()).toBe('http://www.onet.pl/');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #5', function(){
var request = new Request();
request.setUrl('http://www.onet.pl/index.html');
expect(request.getUrl()).toBe('http://www.onet.pl/index.html');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/index.html');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #6', function(){
var request = new Request();
request.setUrl('http://www.onet.pl/path/index.html');
expect(request.getUrl()).toBe('http://www.onet.pl/path/index.html');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/path/index.html');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #7', function(){
var request = new Request();
request.setUrl('https://www.onet.pl:81/path/index.html');
expect(request.getUrl()).toBe('https://www.onet.pl:81/path/index.html');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(81);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/path/index.html');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #8', function(){
var request = new Request();
request.setUrl('https://www.onet.pl:81/path/index.html?arg1=5');
expect(request.getUrl()).toBe('https://www.onet.pl:81/path/index.html?arg1=5');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(81);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/path/index.html');
expect(request.getQuery()).toEqual({arg1:'5'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #9', function(){
var request = new Request();
request.setUrl('https://www.onet.pl:81/path/index.html?arg1=1&arg2=2');
expect(request.getUrl()).toBe('https://www.onet.pl:81/path/index.html?arg1=1&arg2=2');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(81);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/path/index.html');
expect(request.getQuery()).toEqual({arg1:'1', arg2:'2'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #10', function(){
var request = new Request();
request.setUrl('https://sjanecki:password@www.onet.pl:81/path/index.html?arg1=1&arg2=2');
expect(request.getUrl()).toBe('https://sjanecki:password@www.onet.pl:81/path/index.html?arg1=1&arg2=2');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(81);
expect(request.getConnectionHost()).toBe('www.onet.pl');
expect(request.getPath()).toBe('/path/index.html');
expect(request.getQuery()).toEqual({arg1:'1', arg2:'2'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #11', function(){
var request = new Request();
expect(function(){
request.setUrl();
}).toThrow();
expect(function(){
request.setUrl(null);
}).toThrow();
expect(function(){
request.setUrl(undefined);
}).toThrow();
});
it('Request - setUrl #12', function(){
var request = new Request();
expect(function(){
request.setUrl('');
}).toThrow();
});
it('Request - setUrl #13', function(){
var request = new Request();
request.setUrl('somestring');
expect(request.getUrl()).toBe('http://null/somestring');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getHost()).toBe(null);
expect(request.getPath()).toBe('/somestring');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #13', function(){
var request = new Request();
request.setUrl('somestring/index.txt');
expect(request.getUrl()).toBe('http://null/somestring/index.txt');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getHost()).toBe(null);
expect(request.getPath()).toBe('/somestring/index.txt');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #14', function(){
var request = new Request();
request.setUrl('/somestring/index.txt');
expect(request.getUrl()).toBe('http://null/somestring/index.txt');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getHost()).toBe(null);
expect(request.getPath()).toBe('/somestring/index.txt');
expect(request.getQuery()).toEqual({});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #15', function(){
var request = new Request();
request.setUrl('?arg1=1&arg2=2');
expect(request.getUrl()).toBe('http://null/?arg1=1&arg2=2');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(80);
expect(request.getHost()).toBe(null);
expect(request.getPath()).toBe('/');
expect(request.getQuery()).toEqual({arg1:'1', arg2:'2'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #16', function(){
var request = new Request();
request.setUrl('https://accelerator.dreamlab.pl/_variant?q=1');
expect(request.getUrl()).toBe('https://accelerator.dreamlab.pl/_variant?q=1');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(443);
expect(request.getConnectionHost()).toBe('accelerator.dreamlab.pl');
expect(request.getPath()).toBe('/_variant');
expect(request.getQuery()).toEqual({q:'1'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #17', function(){
var request = new Request();
request.setUrl('https://accelerator.dreamlab.pl:80/_variant?q=1');
expect(request.getUrl()).toBe('https://accelerator.dreamlab.pl:80/_variant?q=1');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toEqual(80);
expect(request.getConnectionHost()).toBe('accelerator.dreamlab.pl');
expect(request.getPath()).toBe('/_variant');
expect(request.getQuery()).toEqual({q:'1'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
it('Request - setUrl #18', function(){
var request = new Request();
request.setUrl('http://accelerator.dreamlab.pl:443/_variant?q=1');
expect(request.getUrl()).toBe('http://accelerator.dreamlab.pl:443/_variant?q=1');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toEqual(443);
expect(request.getConnectionHost()).toBe('accelerator.dreamlab.pl');
expect(request.getPath()).toBe('/_variant');
expect(request.getQuery()).toEqual({q:'1'});
expect(Object.keys(request.getHeaders()).length).toBe(0);
});
xit('Request - setUrl #19', function(){
var request = new Request();
request.setUrl('http://emisjawidgeet.onet.pl/quad/xml_spliter/?b=1&a=1&a=2&c=3&d%5B%5D=5&d%5B%5D=6');
expect(JSON.stringify(request.getQuery())).toEqual(JSON.stringify({b: '1', a: ['1', '2'], c: '3', d: ['5', '6']}));
expect(request.getQueryString()).toBe('?b=1&a=1&a=2&c=3&d%5B%5D=5&d%5B%5D=6');
});
it('Request - setUrl #20', function(){
var request = new Request();
request.setUrl('//accelerator.dreamlab.pl:443/_variant?q=1');
expect(request.getUrl()).toBe('http://accelerator.dreamlab.pl:443/_variant?q=1');
});
it('Request - setUrl #21', function(){
var request = new Request();
request.setUrl('http://a.csr.onet.pl/?advideo/3.0/1290.1/0/0//cc=2;vidRT=VAST;vidRTV=2.0.1');
expect(JSON.stringify(request.getQuery())).toEqual(JSON.stringify({'advideo/3.0/1290.1/0/0//cc':'2','vidRT':'VAST','vidRTV':'2.0.1'}));
expect(request.getQueryString()).toBe('?advideo/3.0/1290.1/0/0//cc=2;vidRT=VAST;vidRTV=2.0.1');
expect(request.getUrl()).toBe('http://a.csr.onet.pl/?advideo/3.0/1290.1/0/0//cc=2;vidRT=VAST;vidRTV=2.0.1');
});
it('Request - setUrl #22', function(){
var request = new Request();
request.setUrl('/.!$%^&*()_=+feed');
expect(request.getPath()).toBe('/.!$%^&*()_=+feed');
});
it('Request - setUrl #23', function(){
var request = new Request();
request.setUrl('http://www.dreamlab.pl/path?a');
expect(request.getQueryParam('a')).toBe('');
expect(request.getQueryParam('b')).toBe(null);
expect(request.hasQueryParam('a')).toBe(true);
expect(request.hasQueryParam('b')).toBe(false);
expect(request.getQueryString()).toBe('?a');
expect(request.getUrl()).toBe('http://www.dreamlab.pl/path?a');
});
it('Request - setUrl #24', function(){
var request = new Request();
request.setUrl('http://www.dreamlab.pl/path?a=');
expect(request.getQueryParam('a')).toBe('');
expect(request.getQueryParam('b')).toBe(null);
expect(request.hasQueryParam('a')).toBe(true);
expect(request.hasQueryParam('b')).toBe(false);
expect(request.getQueryString()).toBe('?a=');
expect(request.getUrl()).toBe('http://www.dreamlab.pl/path?a=');
});
it('Request - setQuery #1', function(){
var request = new Request();
request.setQuery({arg1: '1', arg2:'2'});
expect(request.getQuery()).toEqual({arg1:'1', arg2:'2'});
expect(request.getQueryParam('arg2')).toEqual('2');
expect(request.getQueryString()).toEqual('?arg1=1&arg2=2');
});
it('Request - setQuery #2', function(){
var request = new Request();
request.setQuery({});
expect(request.getQuery()).toEqual({});
expect(request.getQueryParam('arg2')).toEqual(null);
expect(request.getQueryString()).toEqual('');
});
it('Request - setQuery #3', function(){
var request = new Request();
request.setQuery();
expect(request.getQuery()).toEqual(null);
expect(request.getQueryParam('arg2')).toEqual(null);
expect(request.getQueryString()).toEqual('');
});
it('Request - setQuery #4', function(){
var request = new Request();
request.setQuery('somestring');
expect(request.getQuery()).toEqual('somestring');
expect(request.getQueryParam('arg2')).toEqual(null);
expect(request.getQueryParam(0)).toEqual('s');
expect(request.getQueryParam(1)).toEqual('o');
expect(request.getQueryString()).toEqual('?0=s&1=o&2=m&3=e&4=s&5=t&6=r&7=i&8=n&9=g');
});
it('Request - setQuery #5', function () {
var request = new Request();
request.setQueryParam('a', ['1', '2']);
expect(request.getQueryParam('a')).toEqual(['1', '2']);
expect(request.getQueryString()).toEqual('?a[]=1&a[]=2');
});
it('Request - setMethod #1', function(){
var request = new Request();
request.setMethod(Request.GET);
expect(request.getMethod()).toEqual(Request.GET);
});
it('Request - setMethod #1', function(){
var request = new Request();
request.setMethod('somestring');
expect(request.getMethod()).toEqual('somestring');
});
it('Request - setHost #1', function(){
var request = new Request();
request.setHost('www.onet.pl');
expect(request.getHost()).toEqual('www.onet.pl');
});
it('Request - setHost #2', function(){
var request = new Request();
request.setHost();
expect(request.getHost()).toBe(undefined);
});
it('Request - setPort #1', function(){
var request = new Request();
request.setPort(8081);
expect(request.getPort()).toEqual(8081);
});
it('Request - setPort #2', function(){
var request = new Request();
request.setPort();
expect(request.getPort()).toBe(undefined);
});
it('Request - setPath #1', function(){
var request = new Request();
request.setPath('/somepath/index.html');
expect(request.getPath()).toBe('/somepath/index.html');
});
it('Request - setPath #2', function(){
var request = new Request();
request.setPath();
expect(request.getPath()).toBe(undefined);
});
it('Request - setProto #1', function(){
var request = new Request();
request.setProto('http');
expect(request.getProto()).toBe('http');
});
it('Request - setProto #2', function(){
var request = new Request();
request.setProto('http:');
expect(request.getProto()).toBe('http:');
});
it('Request - setProto #3', function(){
var request = new Request();
request.setProto('somestring');
expect(request.getProto()).toBe('somestring');
});
it('Request - setProto #4', function(){
var request = new Request();
request.setUrl('http://www.onet.pl/index.html');
request.setProto('somestring');
expect(request.getProto()).toBe('somestring');
expect(request.getUrl()).toBe('somestring//www.onet.pl:80/index.html');
});
it('Request - setProto #5', function () {
var request = new Request('http://www.onet.pl');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toBe(80);
expect(request.getUrl()).toBe('http://www.onet.pl/');
request.setProto('https:');
expect(request.getProto()).toBe('https:');
expect(request.getPort()).toBe(443);
expect(request.getUrl()).toBe('https://www.onet.pl/');
request.setProto('http:');
expect(request.getProto()).toBe('http:');
expect(request.getPort()).toBe(80);
expect(request.getUrl()).toBe('http://www.onet.pl/');
});
it('Request - setAuth #1', function(){
var request = new Request();
request.setAuth('user:pass');
expect(request.getAuthUser()).toBe('user');
expect(request.getAuthPassword()).toBe('pass');
});
it('Request - setAuth #2', function(){
var request = new Request();
request.setAuth('user-pass');
expect(request.getAuthUser()).toBe('user-pass');
expect(request.getAuthPassword()).toBe(undefined);
});
it('Request - setBody #1', function(){
var request = new Request();
request.setBody('post-data');
expect(request.getBody().toUTF8String()).toBe('post-data');
});
it('Request - setBody #2', function(){
var request = new Request();
request.setBody();
expect(function(){
request.getBody().toUTF8String();
}).not.toThrow();
});
it('Request - setBody #3', function(){
var request = new Request();
expect(function(){
request.getBody().toUTF8String();
}).toThrow();
});
it('Request - isConditional #1', function(){
var request = new Request();
request.setHeader('if-modified-since', Date.now());
expect(request.isConditional()).toBeTruthy();
});
it('Request - isConditional #2', function(){
var request = new Request();
expect(request.isConditional()).toBeFalsy();
});
it('Request - isCompressedContentAccepted #1', function(){
var request = new Request();
request.setHeader('accept-encoding', 'gzip, deflate');
expect(request.isCompressedContentAccepted()).toBeTruthy();
});
it('Request - isCompressedContentAccepted #2', function(){
var request = new Request();
expect(request.isCompressedContentAccepted()).toBeFalsy();
});
it('Request - isCompressedContentAccepted #3', function(){
// nie obslugujemy deflate'a ze wzgledu na bledy w IE678
var request = new Request();
request.setHeader('accept-encoding', 'deflate');
expect(request.isCompressedContentAccepted()).toBeFalsy();
});
it('Request - isGenerating #1', function(){
var request = new Request();
request.setHeader('x-onet-regenerate', 'YES');
expect(request.isGenerating()).toBeTruthy();
});
it('Request - isGenerating #2', function(){
var request = new Request();
expect(request.isGenerating()).toBeFalsy();
});
it('Copying requests #1', function () {
var r1 = new Request();
r1.setUrl("http://www.onet.pl/0");
r1.setHost("www.onet.pl");
r1.setConnectionHost("fx.m1r2.onet");
var r2 = new Request(r1);
expect(r2.getUrl()).toEqual("http://www.onet.pl/0");
expect(r2.getHost()).toEqual("www.onet.pl");
expect(r2.getConnectionHost()).toEqual("fx.m1r2.onet");
});
it('toJson #1', function () {
var data = {
url :"http://www.onet.pl/",
method: Request.GET,
headers: {abc: [123]},
body: null,
httpVersion: '1.0'
};
var r = new Request(data.url);
r.setMethod(data.method);
r.setHeaders(data.headers);
expect(r.toJson()).toEqual(data);
});
it('toJson #2', function () {
var data = {
url :"http://www.onet.pl/",
method: Request.GET,
headers: {abc: [123]},
body: "abcdef",
httpVersion: '1.0'
};
var r = new Request(data.url);
r.setMethod(data.method);
r.setHeaders(data.headers);
r.setBody(data.body);
expect(r.toJson()).toEqual(data);
});
it('removeCookie', function () {
var data = {
url: 'http://www.onet.pl/',
method: Request.GET,
headers: {cookie: 'aaaa=test; bbbb=test2'},
httpVersion: '1.1'
};
var r = new Request(data.url);
r.setMethod(data.method);
r.setHeaders(data.headers);
expect(r.getCookie('aaaa')).toEqual('test');
expect(r.getCookie('bbbb')).toEqual('test2');
r.removeCookie('aaaa');
expect(r.getCookie('aaaa')).toBeFalsy();
expect(r.getCookie('bbbb')).toEqual('test2');
expect(r.getHeader('cookie')).toEqual('bbbb=test2');
});
it('add and remove cookie', function () {
var data = {
url: 'http://www.onet.pl/',
method: Request.GET,
headers: {},
httpVersion: '1.1'
};
var r = new Request(data.url);
r.setMethod(data.method);
r.setHeaders(data.headers);
expect(r.getHeader('cookie')).toBeFalsy();
r.setCookie('aaaa=test');
expect(r.getCookie('aaaa')).toEqual('test');
});
describe('remove cookies', function () {
beforeEach(function () {
this.request = new Request();
this.request.setCookie('testa=value1');
this.request.setCookie('test=value2');
this.request.removeCookie('test');
});
it('should remove cookie test', function () {
expect(this.request.getCookie('test')).toEqual(null);
});
it('should leave cookie testa', function () {
expect(this.request.getCookie('testa')).toBeTruthy();
});
})
});