7
7
8
8
base_url = "https://signal.authsignal.com/v1"
9
9
10
+ base_challenge_url = 'https://api.authsignal.com/v1'
11
+
10
12
class Test (unittest .TestCase ):
11
13
def setUp (self ):
12
14
self .authsignal_client = client .Client (api_key = 'SECRET' )
@@ -109,41 +111,57 @@ def setUp(self):
109
111
110
112
@responses .activate
111
113
def test_it_returns_success_if_user_id_is_correct (self ):
112
- responses .add (responses .GET , f"{ base_url } /users/legitimate_user_id/actions/alwaysChallenge/a682af7d-c929-4c29-9c2a-71e69ab5c603" ,
113
- json = {"state" : "CHALLENGE_SUCCEEDED" , "ruleIds" : [], "stateUpdatedAt" : "2022-07-25T03:19:00.316Z" , "createdAt" : "2022-07-25T03:19:00.316Z" },
114
+ responses .add (responses .POST , f"{ base_challenge_url } /validate" ,
115
+ json = {
116
+ 'isValid' : True ,
117
+ 'state' : 'CHALLENGE_SUCCEEDED' ,
118
+ 'stateUpdatedAt' : '2024-07-11T22:03:39.037Z' ,
119
+ 'userId' : 'legitimate_user_id' ,
120
+ 'actionCode' : 'signin' ,
121
+ 'idempotencyKey' : 'f2a0275e-bdbb-464a-8398-13c60c98097c'
122
+ },
114
123
status = 200
115
124
)
116
125
117
126
response = self .authsignal_client .validate_challenge (user_id = "legitimate_user_id" , token = self .jwt_token )
118
127
119
128
self .assertEqual (response ["user_id" ], "legitimate_user_id" )
120
129
self .assertEqual (response ["state" ], "CHALLENGE_SUCCEEDED" )
121
- self .assertTrue (response ["success " ])
130
+ self .assertTrue (response ["is_valid " ])
122
131
123
132
@responses .activate
124
133
def test_it_returns_success_false_if_user_id_is_incorrect (self ):
125
- responses .add (responses .GET , f"{ base_url } /users/spoofed_id/actions/alwaysChallenge/a682af7d-c929-4c29-9c2a-71e69ab5c603 " ,
126
- json = {"state" : "CHALLENGE_SUCCEEDED" , "ruleIds" : [], "stateUpdatedAt" : "2022-07-25T03:19:00.316Z" , "createdAt" : "2022-07-25T03:19:00.316Z" },
127
- status = 200
134
+ responses .add (responses .POST , f"{ base_challenge_url } /validate " ,
135
+ json = {'isValid' : False , 'error' : 'User is invalid.' },
136
+ status = 400
128
137
)
129
138
130
139
response = self .authsignal_client .validate_challenge (user_id = "spoofed_id" , token = self .jwt_token )
131
140
132
- self .assertIsNone (response ['state' ])
133
- self .assertFalse (response ['success' ])
141
+ self .assertIsNone (response ['action' ])
142
+ self .assertFalse (response ['is_valid' ])
143
+ self .assertEqual (response .get ("error" ), "User is invalid." )
134
144
135
145
@responses .activate
136
146
def test_it_returns_success_true_if_no_user_id_is_provided (self ):
137
- responses .add (responses .GET , f"{ base_url } /users/legitimate_user_id/actions/alwaysChallenge/a682af7d-c929-4c29-9c2a-71e69ab5c603" ,
138
- json = {"state" : "CHALLENGE_SUCCEEDED" , "ruleIds" : [], "stateUpdatedAt" : "2022-07-25T03:19:00.316Z" , "createdAt" : "2022-07-25T03:19:00.316Z" },
147
+ responses .add (responses .POST , f"{ base_challenge_url } /validate" ,
148
+ json = {
149
+ 'isValid' : True ,
150
+ 'state' : 'CHALLENGE_SUCCEEDED' ,
151
+ 'stateUpdatedAt' : '2024-07-11T22:39:23.613Z' ,
152
+ 'userId' : 'legitimate_user_id' ,
153
+ 'actionCode' : 'signin' ,
154
+ 'idempotencyKey' : '6d09db21-1aa9-4b7f-826f-dbc6a0af79eb' ,
155
+ 'verificationMethod' : 'EMAIL_MAGIC_LINK'
156
+ },
139
157
status = 200
140
158
)
141
159
142
160
response = self .authsignal_client .validate_challenge (token = self .jwt_token )
143
161
144
162
self .assertEqual (response ["user_id" ], "legitimate_user_id" )
145
163
self .assertEqual (response ["state" ], "CHALLENGE_SUCCEEDED" )
146
- self .assertTrue (response ["success " ])
164
+ self .assertTrue (response ["is_valid " ])
147
165
148
166
if __name__ == "__main__" :
149
167
unittest .main ()
0 commit comments