1 | 'use strict';
|
2 |
|
3 |
|
4 | var test = require('tape').test
|
5 | var parse = require('..')
|
6 |
|
7 | test('parsing a proper link header with next and last', function (t) {
|
8 | var link =
|
9 | '<https://api.github.com/user/9287/repos?client_id=1&client_secret=2&page=2&per_page=100>; rel="next", ' +
|
10 | '<https://api.github.com/user/9287/repos?client_id=1&client_secret=2&page=3&per_page=100>; rel="last"'
|
11 |
|
12 | var res = parse(link)
|
13 | t.deepEqual(
|
14 | parse(link)
|
15 | , { next:
|
16 | { client_id: '1',
|
17 | client_secret: '2',
|
18 | page: '2',
|
19 | per_page: '100',
|
20 | rel: 'next',
|
21 | url: 'https://api.github.com/user/9287/repos?client_id=1&client_secret=2&page=2&per_page=100' },
|
22 | last:
|
23 | { client_id: '1',
|
24 | client_secret: '2',
|
25 | page: '3',
|
26 | per_page: '100',
|
27 | rel: 'last',
|
28 | url: ' https://api.github.com/user/9287/repos?client_id=1&client_secret=2&page=3&per_page=100' } }
|
29 | , 'parses out link, page and perPage for next and last'
|
30 | )
|
31 | t.end()
|
32 | })
|
33 |
|
34 | test('parsing a proper link header with next, prev and last', function (t) {
|
35 | var linkHeader =
|
36 | '<https://api.github.com/user/9287/repos?page=3&per_page=100>; rel="next", ' +
|
37 | '<https://api.github.com/user/9287/repos?page=1&per_page=100>; rel="prev", ' +
|
38 | '<https://api.github.com/user/9287/repos?page=5&per_page=100>; rel="last"'
|
39 |
|
40 | var res = parse(linkHeader)
|
41 |
|
42 | t.deepEqual(
|
43 | parse(linkHeader)
|
44 | , { next:
|
45 | { page: '3',
|
46 | per_page: '100',
|
47 | rel: 'next',
|
48 | url: 'https://api.github.com/user/9287/repos?page=3&per_page=100' },
|
49 | prev:
|
50 | { page: '1',
|
51 | per_page: '100',
|
52 | rel: 'prev',
|
53 | url: ' https://api.github.com/user/9287/repos?page=1&per_page=100' },
|
54 | last:
|
55 | { page: '5',
|
56 | per_page: '100',
|
57 | rel: 'last',
|
58 | url: ' https://api.github.com/user/9287/repos?page=5&per_page=100' } }
|
59 | , 'parses out link, page and perPage for next, prev and last'
|
60 | )
|
61 | t.end()
|
62 | })
|
63 |
|
64 | test('parsing an empty link header', function (t) {
|
65 | var linkHeader = ''
|
66 | var res = parse(linkHeader)
|
67 |
|
68 | t.equal( parse(linkHeader) , null , 'returns null')
|
69 | t.end()
|
70 | })
|
71 |
|
72 | test('parsing a proper link header with next and a link without rel', function (t) {
|
73 | var linkHeader =
|
74 | '<https://api.github.com/user/9287/repos?page=3&per_page=100>; rel="next", ' +
|
75 | '<https://api.github.com/user/9287/repos?page=1&per_page=100>; pet="cat", '
|
76 |
|
77 | var res = parse(linkHeader)
|
78 |
|
79 | t.deepEqual(
|
80 | parse(linkHeader)
|
81 | , { next:
|
82 | { page: '3',
|
83 | per_page: '100',
|
84 | rel: 'next',
|
85 | url: 'https://api.github.com/user/9287/repos?page=3&per_page=100' } }
|
86 | , 'parses out link, page and perPage for next only'
|
87 | )
|
88 | t.end()
|
89 | })
|
90 |
|
91 | test('parsing a proper link header with next and properties besides rel', function (t) {
|
92 | var linkHeader =
|
93 | '<https://api.github.com/user/9287/repos?page=3&per_page=100>; rel="next"; hello="world"; pet="cat"'
|
94 |
|
95 | var res = parse(linkHeader)
|
96 |
|
97 | t.deepEqual(
|
98 | parse(linkHeader)
|
99 | , { next:
|
100 | { page: '3',
|
101 | per_page: '100',
|
102 | rel: 'next',
|
103 | hello: 'world',
|
104 | pet: 'cat',
|
105 | url: 'https://api.github.com/user/9287/repos?page=3&per_page=100' } }
|
106 | , 'parses out link, page and perPage for next and all other properties'
|
107 | )
|
108 | t.end()
|
109 | })
|