Skip to content

Commit a61bebb

Browse files
Add unit tests for api keys
1 parent db99f39 commit a61bebb

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
const customers = require('../_common/customers-controller')
2+
const promiser = require('../../setup-jest').promiser
3+
4+
describe('customersController', () => {
5+
test('ensureCustomerItem verifies that DDB is up-to-date', async () => {
6+
let error = jest.fn(),
7+
callback = jest.fn(),
8+
entry = {
9+
Id: 'cognitoIdentityId',
10+
UserPoolId: 'cognitoUserId',
11+
ApiKeyId: 'keyId'
12+
}
13+
14+
customers.dynamoDb.get = jest.fn().mockReturnValue(promiser({ Item: entry }))
15+
16+
let returnValue = await customers.ensureCustomerItem('cognitoIdentityId', 'cognitoUserId', 'keyId', error, callback)
17+
18+
expect(customers.dynamoDb.get).toHaveBeenCalledTimes(1)
19+
expect(customers.dynamoDb.get).toHaveBeenCalledWith({
20+
TableName: 'DevPortalCustomers',
21+
Key: {
22+
Id: 'cognitoIdentityId'
23+
}
24+
})
25+
26+
expect(returnValue).toEqual(entry)
27+
})
28+
29+
test('ensureCustomerItem fixes DDB if it is not up-to-date', async () => {
30+
let error = jest.fn(),
31+
callback = jest.fn(),
32+
entry = {
33+
Id: 'cognitoIdentityId',
34+
UserPoolId: 'cognitoUserId',
35+
ApiKeyId: 'keyId'
36+
}
37+
38+
customers.dynamoDb.get = jest.fn().mockReturnValue(promiser({ Item: undefined }))
39+
40+
customers.dynamoDb.put = jest.fn().mockReturnValue(promiser({}))
41+
42+
let returnValue = await customers.ensureCustomerItem('cognitoIdentityId', 'cognitoUserId', 'keyId', error, callback)
43+
44+
expect(customers.dynamoDb.get).toHaveBeenCalledTimes(1)
45+
expect(customers.dynamoDb.get).toHaveBeenCalledWith({
46+
TableName: 'DevPortalCustomers',
47+
Key: {
48+
Id: 'cognitoIdentityId'
49+
}
50+
})
51+
52+
expect(customers.dynamoDb.put).toHaveBeenCalledTimes(1)
53+
expect(customers.dynamoDb.put).toHaveBeenCalledWith({
54+
TableName: 'DevPortalCustomers',
55+
Item: entry
56+
})
57+
58+
expect(returnValue).toEqual(entry)
59+
})
60+
61+
test('ensureCustomerItem backfills UserPoolId', async () => {
62+
let error = jest.fn(),
63+
callback = jest.fn(),
64+
oldEntry = {
65+
Id: 'cognitoIdentityId',
66+
ApiKeyId: 'keyId'
67+
},
68+
entry = {
69+
Id: 'cognitoIdentityId',
70+
UserPoolId: 'cognitoUserId',
71+
ApiKeyId: 'keyId'
72+
}
73+
74+
customers.dynamoDb.get = jest.fn().mockReturnValue(promiser({ Item: oldEntry }))
75+
76+
customers.dynamoDb.put = jest.fn().mockReturnValue(promiser({}))
77+
78+
let returnValue = await customers.ensureCustomerItem('cognitoIdentityId', 'cognitoUserId', 'keyId', error, callback)
79+
80+
expect(customers.dynamoDb.get).toHaveBeenCalledTimes(1)
81+
expect(customers.dynamoDb.get).toHaveBeenCalledWith({
82+
TableName: 'DevPortalCustomers',
83+
Key: {
84+
Id: 'cognitoIdentityId'
85+
}
86+
})
87+
88+
expect(customers.dynamoDb.put).toHaveBeenCalledTimes(1)
89+
expect(customers.dynamoDb.put).toHaveBeenCalledWith({
90+
TableName: 'DevPortalCustomers',
91+
Item: entry
92+
})
93+
94+
expect(returnValue).toEqual(entry)
95+
})
96+
})

0 commit comments

Comments
 (0)