-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.test.js
130 lines (120 loc) · 5.28 KB
/
index.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
const { describe } = require('tape-plus')
const Server = function TestBot (opts) {
return require('scuttle-testbot').use(require('..')).call(opts)
}
describe('Ephemeral Keys', context => {
let server, message, dbKey, contextMessage
context.beforeEach(c => {
server = Server()
message = 'its nice to be important but its more important to be nice'
dbKey = 'someKey'
contextMessage = 'test'
})
context.afterEach(c => {
server.close()
})
context('Encrypts and decrypts successfully', (assert, next) => {
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
assert.notOk(err, 'error from generating and storing keys is null')
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.notOk(err, 'error from unbox is null')
assert.equal(message, msg, 'output is the same as input')
server.ephemeral.deleteKeyPair(dbKey, (err) => {
assert.notOk(err, 'error from delete Keypair is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'fails to unencrypt message after deleting keys')
assert.notOk(msg, 'returns no keys')
next()
})
})
})
})
})
})
context('Encrypts and decrypts successfully with message id as dbKey', (assert, next) => {
dbKey = '%RzgT1rYz75SyeA7Hw+X2l79WyGGv9C/XOrS6CgAaXVo=.sha256'
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
assert.notOk(err, 'error from generating and storing keys is null')
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.notOk(err, 'error from unbox is null')
assert.equal(message, msg, 'output is the same as input')
server.ephemeral.deleteKeyPair(dbKey, (err) => {
assert.notOk(err, 'error from delete Keypair is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'fails to unencrypt message after deleting keys')
assert.notOk(msg, 'returns no keys')
next()
})
})
})
})
})
})
context('Encrypts and decrypts successfully with object as dbKey', (assert, next) => {
dbKey = { foo: 'bar', baz: 5 }
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
assert.notOk(err, 'error from generating and storing keys is null')
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.notOk(err, 'error from unbox is null')
assert.equal(message, msg, 'output is the same as input')
server.ephemeral.deleteKeyPair(dbKey, (err) => {
assert.notOk(err, 'error from delete Keypair is null')
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'fails to unencrypt message after deleting keys')
assert.notOk(msg, 'returns no keys')
next()
})
})
})
})
})
})
context('Returns an error when given the wrong message to decrypt', (assert, next) => {
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
if (err) console.error(err)
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
boxedMsg = 'something else.box'
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'throws error')
assert.notOk(msg, 'message is null')
next()
})
})
})
})
context('Returns an error when ciphertext has incorrect suffix', (assert, next) => {
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
if (err) console.error(err)
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
boxedMsg = boxedMsg + '.wrong'
server.ephemeral.unBoxMessage(dbKey, boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'throws error')
assert.notOk(msg, 'message is null')
next()
})
})
})
})
context('Throws an error when given an incorrect key', (assert, next) => {
server.ephemeral.generateAndStore(dbKey, (err, pk) => {
assert.notOk(err, 'error from generating and storing keys is null')
server.ephemeral.boxMessage(message, pk, contextMessage, (err, boxedMsg) => {
assert.notOk(err, 'error from boxMessage is null')
server.ephemeral.unBoxMessage('the wrong key', boxedMsg, contextMessage, (err, msg) => {
assert.ok(err, 'throws error')
assert.notOk(msg, 'msg is null')
next()
})
})
})
})
// context('Throws error on encountering unsupported key type')
})