-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtgt_lifetime.test.js
37 lines (35 loc) · 1.78 KB
/
tgt_lifetime.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
const assert = require('assert')
const helpers = require('./helpers');
const cas = require('./cas');
const conf = require('./conf');
const test_without_jest = (name, cb) => cb()
test_without_jest('tgt_lifetime', async () => {
const try_after = async (rememberMe, delay, how_many_times) => {
const { tgc } = await cas.get_tgc_and_ticket_using_form_post(conf.test_services.p2, conf.user, rememberMe)
for (let i = 0; i < how_many_times; i++) {
await helpers.waitHours(delay)
console.log('test_tgt_lifetime with tgc', tgc, 'and rememberMe', rememberMe, 'round #' + i, ': delay', delay, 'hours', how_many_times)
const ticket = await cas.get_ticket_using_TGT(conf.test_services.p2, tgc)
const xml = await cas.p2_serviceValidate(conf.test_services.p2, ticket)
console.log('test_tgt_lifetime with tgc', tgc, 'got ticket', ticket, xml)
assert.match(xml, new RegExp(`<cas:user>${conf.user.login}</cas:user>`))
}
}
return await Promise.all([
async () => {
await assert.doesNotReject(try_after(false, 4 /*hours*/, 6 * 4 /*days*/), 'TGT should not expire if used often')
},
async () => {
await assert.rejects(try_after(false, 10 /*hours*/, 1), 'TGT expired if unused after 10h')
},
async () => {
await assert.doesNotReject(try_after(true, 10 /*hours*/, 1), 'rememberMe TGT should not expire after 10h')
},
async () => {
await assert.doesNotReject(try_after(true, 20 /*days*/ * 24, 2), 'rememberMe TGT should not expire if used every 20d')
},
async () => {
await assert.rejects(try_after(true, 31 /*days*/ * 24, 1), 'TGT rememberMe expired if unused after 31d')
},
].map(f => f()))
})