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