def test_is_valid_succeeds_missing_ref_p_end_date(self): jwt = { "user_id": "1", "form_type": "a", "collection_exercise_sid": "test-sid", "eq_id": "2", "period_id": "3", "period_str": "2016-01-01", "ref_p_start_date": "2016-02-02", "ru_ref": "2016-04-04", "ru_name": "Apple", "return_by": "2016-07-07" } valid, _ = is_valid_metadata(jwt) self.assertTrue(valid)
def test_is_valid_fails_missing_form_type(self): jwt = { "user_id": "1", "collection_exercise_sid": "test-sid", "eq_id": "2", "period_id": "3", "period_str": "2016-01-01", "ref_p_start_date": "2016-02-02", "ref_p_end_date": "2016-03-03", "ru_ref": "2016-04-04", "ru_name": "Apple", "return_by": "2016-07-07" } valid, field = is_valid_metadata(jwt) self.assertFalse(valid) self.assertEqual("form_type", field)
def test_is_valid_does_not_fail_missing_optional_value_in_token(self): # tx_id, trad_as and employment_date are optional and might not be in the token jwt = { "user_id": "1", "form_type": "a", "collection_exercise_sid": "test-sid", "eq_id": "2", "period_id": "3", "period_str": "2016-01-01", "ref_p_start_date": "2016-02-02", "ref_p_end_date": "2016-03-03", "ru_ref": "2016-04-04", "ru_name": "Apple", "return_by": "2016-07-07" } valid, _ = is_valid_metadata(jwt) self.assertTrue(valid)
def test_is_valid_fails_invalid_return_by(self): jwt = { "user_id": "1", "form_type": "a", "collection_exercise_sid": "test-sid", "eq_id": "2", "period_id": "3", "period_str": "2016-01-01", "ref_p_start_date": "2016-12-31", "ref_p_end_date": "2016-03-31", "ru_ref": "2016-04-04", "ru_name": "Apple", "return_by": "2016-09-31" } valid, _ = is_valid_metadata(jwt) self.assertTrue(valid) with self.assertRaises(InvalidTokenException) as ite: parse_metadata(jwt) self.assertIn("incorrect data in token", ite.exception.value)
def test_malformed_tx_id(self): jwt = { "user_id": "1", "form_type": "a", "collection_exercise_sid": "test-sid", "eq_id": "2", "period_id": "3", "period_str": "2016-01-01", "ref_p_start_date": "2016-02-02", "ref_p_end_date": "2016-03-03", "ru_ref": "2016-04-04", "ru_name": "Apple", "return_by": "2016-07-07", # one character short "tx_id": "83a3db82-bea7-403c-a411-6357ff70f2f" } valid, _ = is_valid_metadata(jwt) self.assertTrue(valid) with self.assertRaises(InvalidTokenException) as ite: parse_metadata(jwt) self.assertIn("incorrect data in token", ite.exception.value)
def decrypt_token(encrypted_token): logger.debug("decrypting token") if encrypted_token is None: raise NoTokenException("Please provide a token") decoder = JWTDecryptor( current_app.config['EQ_USER_AUTHENTICATION_SR_PRIVATE_KEY'], current_app.config['EQ_USER_AUTHENTICATION_SR_PRIVATE_KEY_PASSWORD'], current_app.config['EQ_USER_AUTHENTICATION_RRM_PUBLIC_KEY'], ) decrypted_token = decoder.decrypt_jwt_token( encrypted_token, current_app.config['EQ_JWT_LEEWAY_IN_SECONDS'], ) valid, field = is_valid_metadata(decrypted_token) if not valid: raise InvalidTokenException("Missing value {}".format(field)) logger.debug("token decrypted") return decrypted_token
def test_is_valid(self): with self.application.test_request_context(): self.assertTrue(is_valid_metadata(self.jwt))