def test_raises_not_found_if_token_invalue(self, pyramid_request, token_serializer): from pyramid.exceptions import HTTPNotFound pyramid_request.matchdict = {'token': 'wibble'} token_serializer.loads.side_effect = ValueError('token invalid') with pytest.raises(HTTPNotFound): views.unsubscribe(pyramid_request)
def test_raises_not_found_if_token_invalue(self, token_serializer): from pyramid.exceptions import HTTPNotFound request = DummyRequest(matchdict={'token': 'wibble'}, db=db.Session) token_serializer.loads.side_effect = ValueError('token invalid') with pytest.raises(HTTPNotFound): views.unsubscribe(request)
def test_successfully_unsubscribes_user(self, subscriptions, token_serializer): sub1, _, _ = subscriptions request = DummyRequest(matchdict={'token': 'wibble'}, db=db.Session) token_serializer.loads.return_value = {'type': 'reply', 'uri': 'acct:[email protected]'} views.unsubscribe(request) assert not sub1.active
def test_successfully_unsubscribes_user(self, pyramid_request, subscriptions, token_serializer): sub1, _, _ = subscriptions pyramid_request.matchdict = {'token': 'wibble'} token_serializer.loads.return_value = {'type': 'reply', 'uri': 'acct:[email protected]'} views.unsubscribe(pyramid_request) assert not sub1.active
def test_ignores_other_subscriptions(self, pyramid_request, subscriptions, token_serializer): _, sub2, sub3 = subscriptions pyramid_request.matchdict = {'token': 'wibble'} token_serializer.loads.return_value = {'type': 'reply', 'uri': 'acct:[email protected]'} views.unsubscribe(pyramid_request) assert sub2.active assert sub3.active
def test_ignores_other_subscriptions(self, subscriptions, token_serializer): _, sub2, sub3 = subscriptions request = DummyRequest(matchdict={'token': 'wibble'}, db=db.Session) token_serializer.loads.return_value = {'type': 'reply', 'uri': 'acct:[email protected]'} views.unsubscribe(request) assert sub2.active assert sub3.active
def test_invalid_token(config): """It raises an error if an invalid token is provided """ configure(config) request = DummyRequest() request.matchdict['token'] = 'foobar' from h.notification.views import unsubscribe with raises(ValueError) as excinfo: unsubscribe(request) assert str(excinfo.value) == 'Invalid signature'
def test_successfully_unsubscribes_user(self, pyramid_request, subscriptions, token_serializer): sub1, _, _ = subscriptions pyramid_request.matchdict = {'token': 'wibble'} token_serializer.loads.return_value = { 'type': 'reply', 'uri': 'acct:[email protected]' } views.unsubscribe(pyramid_request) assert not sub1.active
def test_ignores_other_subscriptions(self, pyramid_request, subscriptions, token_serializer): _, sub2, sub3 = subscriptions pyramid_request.matchdict = {'token': 'wibble'} token_serializer.loads.return_value = { 'type': 'reply', 'uri': 'acct:[email protected]' } views.unsubscribe(pyramid_request) assert sub2.active assert sub3.active
def test_idempotent_unsubscribe(config): """ if called a second time it should not update the model """ configure(config) with patch('h.notification.models.Subscriptions' '.get_templates_for_uri_and_type') as mock_subs: mock_db = Mock(add=Mock()) mock_subscription = Mock(active=False) mock_subs.return_value = [mock_subscription] request = _unsubscribe_request() request.db = mock_db from h.notification.views import unsubscribe unsubscribe(request) assert mock_subscription.active is False assert not mock_db.add.called
def test_successful_unsubscribe(config): """ ensure unsubscribe unsets the active flag on the subscription """ configure(config) with patch('h.notification.models.Subscriptions' '.get_templates_for_uri_and_type') as mock_subs: mock_db = Mock(add=Mock()) mock_subscription = Mock(active=True) mock_subs.return_value = [mock_subscription] request = _unsubscribe_request() request.db = mock_db from h.notification.views import unsubscribe unsubscribe(request) assert mock_subscription.active is False mock_db.add.assert_called_with(mock_subscription)
def test_deserializes_token(self, token_serializer): request = DummyRequest(matchdict={'token': 'wibble'}, db=db.Session) views.unsubscribe(request) token_serializer.loads.assert_called_once_with('wibble')
def test_deserializes_token(self, pyramid_request, token_serializer): pyramid_request.matchdict = {'token': 'wibble'} views.unsubscribe(pyramid_request) token_serializer.loads.assert_called_once_with('wibble')