1 |
|
2 | 'use strict';
|
3 |
|
4 | const Crawler = require('../lib/crawler');
|
5 | const request = require('request');
|
6 | const expect = require('chai').expect;
|
7 |
|
8 |
|
9 | const nock = require('nock');
|
10 |
|
11 | describe('Jar Options', function() {
|
12 |
|
13 | before(function() {
|
14 | nock.cleanAll();
|
15 | nock('http://test.crawler.com/').get('/setCookie').reply(function() {
|
16 | let response = [
|
17 | 200,
|
18 | 'ok',
|
19 | { 'Set-Cookie': `ping=pong; Domain=.crawler.com; Expires=${new Date(Date.now()+86400000).toUTCString()}; Path=/` }
|
20 | ];
|
21 | return response;
|
22 | }).persist();
|
23 | nock('http://test.crawler.com/').get('/getCookie').reply(200, function() {
|
24 | return this.req.headers.cookie;
|
25 | }).persist();
|
26 | });
|
27 |
|
28 | after(function() {
|
29 | delete require.cache[nock];
|
30 | });
|
31 |
|
32 | let jar = request.jar();
|
33 | jar.setCookie(request.cookie('foo=bar'), 'http://test.crawler.com');
|
34 |
|
35 | let crawler = new Crawler({
|
36 | jquery: false,
|
37 | jar: jar
|
38 | });
|
39 |
|
40 | it('should send with cookie when setting jar options', function(finishTest) {
|
41 | crawler.queue({
|
42 | uri: 'http://test.crawler.com/getCookie',
|
43 | callback: (error, response, done) => {
|
44 | expect(error).to.be.null;
|
45 | expect(response.body).to.equal(jar.getCookieString('http://test.crawler.com'));
|
46 | done();
|
47 | finishTest();
|
48 | }
|
49 | });
|
50 | });
|
51 |
|
52 | it('should set cookie when response set-cookie headers exist', function(finishTest) {
|
53 | crawler.queue({
|
54 | uri: 'http://test.crawler.com/setCookie',
|
55 | callback: (error, response, done) => {
|
56 | expect(error).to.be.null;
|
57 | expect(jar.getCookieString('http://test.crawler.com').indexOf('ping=pong') > -1).to.be.true;
|
58 | done();
|
59 | finishTest();
|
60 | }
|
61 | });
|
62 | });
|
63 | }); |
\ | No newline at end of file |