def test_no_direct_login(client, token_for_dummy_user, post_data_step_3, cleanup_dummy_user, mocker): """Failure logging the user in directly""" mocker.patch( "noggin.controller.registration.maybe_ipa_login", side_effect=python_freeipa.exceptions.FreeIPAError( message="something went wrong", code="4242"), ) record_signal = mocker.Mock() with fml_testing.mock_sends( UserCreateV1({"msg": { "agent": "dummy", "user": "******" }})), user_registered.connected_to(record_signal): result = client.post( f"/register/activate?token={token_for_dummy_user}", data=post_data_step_3) assert_redirects_with_flash( result, expected_url="/", expected_message= ("Congratulations, your account has been created! Go ahead and sign in to proceed." ), expected_category="success", ) record_signal.assert_called_once()
def test_generic_pwchange_error(client, token_for_dummy_user, post_data_step_3, cleanup_dummy_user, mocker): """Change user's password with an unhandled error""" ipa_client = mocker.Mock() ipa_client.change_password.side_effect = python_freeipa.exceptions.FreeIPAError( message="something went wrong", code="4242") untouched_ipa_client = mocker.patch( "noggin.controller.registration.untouched_ipa_client") untouched_ipa_client.return_value = ipa_client record_signal = mocker.Mock() with fml_testing.mock_sends( UserCreateV1({"msg": { "agent": "dummy", "user": "******" }})), user_registered.connected_to(record_signal): result = client.post( f"/register/activate?token={token_for_dummy_user}", data=post_data_step_3) assert_redirects_with_flash( result, expected_url="/", expected_message= ('Your account has been created, but an error occurred while setting your ' 'password (something went wrong). You may need to change it after logging in.' ), expected_category="warning", ) record_signal.assert_called_once()
def test_short_password_policy(client, post_data_step_3, token_for_dummy_user, cleanup_dummy_user, mocker): """Register a user with a password rejected by the server policy""" record_signal = mocker.Mock() with fml_testing.mock_sends( UserCreateV1({"msg": { "agent": "dummy", "user": "******" }})), user_registered.connected_to(record_signal): post_data_step_3["password"] = post_data_step_3[ "password_confirm"] = "1234567" result = client.post( f"/register/activate?token={token_for_dummy_user}", data=post_data_step_3) assert_redirects_with_flash( result, expected_url="/", expected_message= ('Your account has been created, but the password you chose does not comply ' 'with the policy (Constraint violation: Password is too short) and has thus ' 'been set as expired. You will be asked to change it after logging in.' ), expected_category="warning", ) record_signal.assert_called_once()
def test_field_error_step_3(client, token_for_dummy_user, mocker, post_data_step_3, cleanup_dummy_user): """Activate a user with a password that the server errors on""" user_mod = mocker.patch( "noggin.controller.registration.ipa_admin.user_mod") user_mod.side_effect = python_freeipa.exceptions.ValidationError( message="invalid 'password': this is invalid", code="4242") record_signal = mocker.Mock() with fml_testing.mock_sends(UserCreateV1), user_registered.connected_to( record_signal): result = client.post( f"/register/activate?token={token_for_dummy_user}", data=post_data_step_3) assert_form_field_error(result, field_name="password", expected_message="this is invalid") record_signal.assert_called_once()
def test_step_3(client, post_data_step_3, token_for_dummy_user, cleanup_dummy_user, mocker): """Register a user, step 3""" record_signal = mocker.Mock() with fml_testing.mock_sends( UserCreateV1({"msg": { "agent": "dummy", "user": "******" }})), user_registered.connected_to(record_signal): result = client.post( f"/register/activate?token={token_for_dummy_user}", data=post_data_step_3) assert_redirects_with_flash( result, expected_url="/", expected_message= "Congratulations, your account has been created! Welcome, Dummy User.", expected_category="success", ) record_signal.assert_called_once()