Example #1
0
    def test_subscription_update(self, config, dummy_db_session):
        """Make sure that the new status is written into the DB."""
        request = _get_fake_request('acct:john@doe', 'smith', True, True)
        configure(config)

        with patch('h.accounts.views.Subscriptions') as mock_subs:
            mock_subs.get_by_id = MagicMock()
            mock_subs.get_by_id.return_value = Mock(active=True)
            profile = ProfileController(request)
            profile.edit_profile()
            assert dummy_db_session.added
Example #2
0
def test_subscription_update(config, dummy_db_session):
    """
    Make sure that the new status is written into the DB
    """
    request = _get_fake_request('acct:john@doe', 'smith', True, True)
    configure(config)

    with patch('h.accounts.views.Subscriptions') as mock_subs:
        mock_subs.get_by_id = MagicMock()
        mock_subs.get_by_id.return_value = Mock(active=True)
        profile = ProfileController(request)
        profile.edit_profile()
        assert dummy_db_session.added
Example #3
0
def test_profile_invalid_password():
    """ Make sure our edit_profile call validates the user password
    """
    request = _get_fake_request('john', 'doe')

    with testConfig() as config:
        configure(config)
        with patch('horus.models.UserMixin') as mock_user:
            with patch('horus.lib.FlashMessage') as mock_flash:
                mock_user.get_user = MagicMock(side_effect=_bad_password)
                profile = ProfileController(request)
                profile.User = mock_user
                profile.edit_profile()
                assert mock_flash.called_with(request, _('Invalid password.'), kind='error')
Example #4
0
def test_subscription_update():
    """Make sure that the new status is written into the DB
    """
    request = _get_fake_request('acct:john@doe', 'smith', True, True)
    print "request", request.POST
    with testConfig() as config:
        configure(config)
        with patch('h.accounts.views.Subscriptions') as mock_subs:
            mock_subs.get_by_id = MagicMock()
            mock_subs.get_by_id.return_value = Mock(active=True)
            profile = ProfileController(request)
            profile.db = Mock()
            profile.db.add = MagicMock(name='add')
            profile.edit_profile()
            assert profile.db.add.called
Example #5
0
def test_profile_calls_super():
    """Make sure our method calls the superclasses edit_profile
       if the validations are successful
    """
    request = _get_fake_request('john', 'smith')
    with testConfig() as config:
        configure(config)
        with patch('horus.models.UserMixin') as mock_user:
            with patch('horus.views.ProfileController.edit_profile') as mock_super_profile:
                mock_user.get_user = MagicMock(side_effect=_good_password_simple)
                profile = ProfileController(request)
                profile.User = mock_user
                profile.edit_profile()
                assert profile.request.context is True
                assert mock_super_profile.called
Example #6
0
def test_subscription_update():
    """Make sure that the new status is written into the DB
    """
    request = _get_fake_request('acct:john@doe', 'smith', True, True)
    print "request", request.POST
    with testConfig() as config:
        configure(config)
        with patch('h.accounts.views.Subscriptions') as mock_subs:
            mock_subs.get_by_id = MagicMock()
            mock_subs.get_by_id.return_value = Mock(active=True)
            profile = ProfileController(request)
            profile.db = Mock()
            profile.db.add = MagicMock(name='add')
            profile.edit_profile()
            assert profile.db.add.called
Example #7
0
def test_profile_invalid_password():
    """ Make sure our edit_profile call validates the user password
    """
    request = _get_fake_request('john', 'doe')

    with testConfig() as config:
        configure(config)
        with patch('horus.models.UserMixin') as mock_user:
            with patch('horus.lib.FlashMessage') as mock_flash:
                mock_user.get_user = MagicMock(side_effect=_bad_password)
                profile = ProfileController(request)
                profile.User = mock_user
                profile.edit_profile()
                assert mock_flash.called_with(request,
                                              _('Invalid password.'),
                                              kind='error')
Example #8
0
def test_profile_calls_super():
    """Make sure our method calls the superclasses edit_profile
       if the validations are successful
    """
    request = _get_fake_request('john', 'smith')
    with testConfig() as config:
        configure(config)
        with patch('horus.models.UserMixin') as mock_user:
            with patch('horus.views.ProfileController.edit_profile'
                       ) as mock_super_profile:
                mock_user.get_user = MagicMock(
                    side_effect=_good_password_simple)
                profile = ProfileController(request)
                profile.User = mock_user
                profile.edit_profile()
                assert profile.request.context is True
                assert mock_super_profile.called
Example #9
0
def test_edit_profile_with_validation_failure(authn_policy, form_validator):
    """If form validation fails, return the error object."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = ({"errors": "BOOM!"}, None)

    request = DummyRequest(method='POST')
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result == {"errors": "BOOM!"}
Example #10
0
def test_edit_profile_with_validation_failure(authn_policy, form_validator):
    """If form validation fails, return the error object."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = ({"errors": "BOOM!"}, None)

    request = DummyRequest(method='POST')
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result == {"errors": "BOOM!"}
Example #11
0
def test_edit_profile_successfully(authn_policy, form_validator, user_model):
    """edit_profile() returns a dict with key "form" when successful."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = (None, {"username": "******", "pwd": "password", "subscriptions": ""})
    user_model.validate_user.return_value = True
    user_model.get_by_id.return_value = FakeUser(email="*****@*****.**")

    request = DummyRequest(method="POST")
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result == {"model": {"email": "*****@*****.**"}}
Example #12
0
    def test_profile_invalid_password(self, config, user_model):
        """Make sure our edit_profile call validates the user password."""
        request = _get_fake_request('john', 'doe')
        configure(config)

        # With an invalid password, get_user returns None
        user_model.get_user.return_value = None

        profile = ProfileController(request)
        result = profile.edit_profile()

        assert result['code'] == 401
        assert any('pwd' in err for err in result['errors'])
Example #13
0
def test_profile_invalid_password(config, user_model):
    """Make sure our edit_profile call validates the user password"""
    request = _get_fake_request('john', 'doe')
    configure(config)

    # With an invalid password, get_user returns None
    user_model.get_user.return_value = None

    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result['code'] == 401
    assert any('pwd' in err for err in result['errors'])
Example #14
0
def test_edit_profile_invalid_password(authn_policy, form_validator, user_model):
    """Make sure our edit_profile call validates the user password."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = (None, {"username": "******", "pwd": "blah", "subscriptions": ""})

    # Mock an invalid password
    user_model.validate_user.return_value = False

    request = DummyRequest(method="POST")
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result["code"] == 401
    assert any("pwd" in err for err in result["errors"])
Example #15
0
def test_edit_profile_successfully(authn_policy, form_validator, user_model):
    """edit_profile() returns a dict with key "form" when successful."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = (None, {
        "username": "******",
        "pwd": "password",
        "subscriptions": "",
    })
    user_model.validate_user.return_value = True
    user_model.get_by_id.return_value = FakeUser(email="*****@*****.**")

    request = DummyRequest(method='POST')
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result == {"model": {"email": "*****@*****.**"}}
Example #16
0
    def test_edit_profile_successfully(self, config, user_model):
        """edit_profile() returns a dict with key "form" when successful."""
        configure(config)
        profile = ProfileController(DummyRequest())

        with patch(
                "h.accounts.views._validate_edit_profile_request") as validate:
            validate.return_value = {
                "username": "******",
                "pwd": "password",
                "subscriptions": []
            }
            result = profile.edit_profile()

        assert "form" in result
        assert "errors" not in result
Example #17
0
def test_subscription_update(authn_policy, form_validator, subscriptions_model, user_model):
    """Make sure that the new status is written into the DB."""
    authn_policy.authenticated_userid.return_value = "acct:john@doe"
    form_validator.return_value = (
        None,
        {"username": "******", "pwd": "smith", "subscriptions": '{"active":true,"uri":"acct:john@doe","id":1}'},
    )
    mock_sub = Mock(active=False, uri="acct:john@doe")
    subscriptions_model.get_by_id.return_value = mock_sub
    user_model.get_by_id.return_value = FakeUser(email="john@doe")

    request = DummyRequest(method="POST")
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert mock_sub.active is True
    assert result == {"model": {"email": "john@doe"}}
Example #18
0
def test_edit_profile_invalid_password(authn_policy, form_validator, user_model):
    """Make sure our edit_profile call validates the user password."""
    authn_policy.authenticated_userid.return_value = "johndoe"
    form_validator.return_value = (None, {
        "username": "******",
        "pwd": "blah",
        "subscriptions": "",
    })

    # Mock an invalid password
    user_model.validate_user.return_value = False

    request = DummyRequest(method='POST')
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert result['code'] == 401
    assert any('pwd' in err for err in result['errors'])
Example #19
0
def test_subscription_update(authn_policy, form_validator,
                             subscriptions_model, user_model):
    """Make sure that the new status is written into the DB."""
    authn_policy.authenticated_userid.return_value = "acct:john@doe"
    form_validator.return_value = (None, {
        "username": "******",
        "pwd": "smith",
        "subscriptions": '{"active":true,"uri":"acct:john@doe","id":1}',
    })
    mock_sub = Mock(active=False, uri="acct:john@doe")
    subscriptions_model.get_by_id.return_value = mock_sub
    user_model.get_by_userid.return_value = FakeUser(email="john@doe")

    request = DummyRequest(method='POST')
    profile = ProfileController(request)
    result = profile.edit_profile()

    assert mock_sub.active is True
    assert result == {"model": {"email": "john@doe"}}
Example #20
0
    def test_edit_profile_with_validation_failure(self, config, user_model):
        """If validation raises edit_profile() should return an error.

        If _validate_edit_profile_request() raises an exception then
        edit_profile() should return a dict with an "errors" list containing a
        list of the error(s) from the exception's .errors property.

        """
        configure(config)
        profile = ProfileController(DummyRequest())
        errors = [
            ("email", ["That email is invalid", "That email is taken"]),
            ("emailAgain", "The emails must match."),
            ("password", ["That password is wrong"])
        ]

        with patch(
                "h.accounts.views._validate_edit_profile_request") as validate:
            validate.side_effect = (
                views._InvalidEditProfileRequestError(errors=errors))
            result = profile.edit_profile()

        assert result["errors"] == errors