Exemplo n.º 1
0
    def test_create_user_with_non_existing_referral(self):
        request = testing.DummyRequest()
        request.params['email'] = '*****@*****.**'
        test_uuid = str(uuid.uuid4())
        request.params['referral'] = test_uuid

        mock_referral = mock(Referral)
        mock_referral.num_referrals = 0
        mock_referral.user_id = 1
        request.dbsession = mock(sqlalchemy.orm.session.Session)
        mock_user = mock(User)
        mock_user.id = 1
        # TODO: take another look at mocking this constructor
        when(referral_program.models.user).User(
            email=ANY(str)).thenReturn(mock_user)
        when(request.dbsession).add(ANY(User))
        mock_referral_query = query.Query([])
        when(request.dbsession).query(Referral).thenReturn(mock_referral_query)
        err = IntegrityError('', params=None, orig=None)
        err.args = [
            '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL:  Key (user_id)=(360) is not present in table "user".\n
        '''
        ]
        when(mock_referral_query).filter_by(id=ANY).thenRaise(err)

        view_being_tested = ReferralView(request)
        response = view_being_tested.create_user()
        self.assertEqual(response.status_code, 400)
Exemplo n.º 2
0
    def test_update_error(self, mock_upd, simple_model, memory_db):
        memory_db()

        err = IntegrityError(None, None, None, None)
        err.args = ('duplicate',)
        mock_upd.side_effect = err

        with pytest.raises(JHTTPConflict) as ex:
            simple_model(id=4).update({'name': 'q'})
        assert 'There was a conflict' in str(ex.value)
Exemplo n.º 3
0
    def test_save_error(self, obj_session, simple_model, memory_db):
        memory_db()

        err = IntegrityError(None, None, None, None)
        err.args = ('duplicate',)
        obj_session().flush.side_effect = err

        with pytest.raises(JHTTPConflict) as ex:
            simple_model(id=4).save()
        assert 'There was a conflict' in str(ex.value)
Exemplo n.º 4
0
    def test_update_error(self, mock_upd, simple_model, memory_db):
        memory_db()

        err = IntegrityError(None, None, None, None)
        err.args = ('duplicate', )
        mock_upd.side_effect = err

        with pytest.raises(JHTTPConflict) as ex:
            simple_model(id=4).update({'name': 'q'})
        assert 'There was a conflict' in str(ex.value)
Exemplo n.º 5
0
    def test_save_error(self, obj_session, simple_model, memory_db):
        memory_db()

        err = IntegrityError(None, None, None, None)
        err.args = ('duplicate', )
        obj_session().flush.side_effect = err

        with pytest.raises(JHTTPConflict) as ex:
            simple_model(id=4).save()
        assert 'There was a conflict' in str(ex.value)
    def test_create_referral_with_invalid_user(self):
        from referral_program.views.views import ReferralView

        # Setup our dummy request before using it
        request = testing.DummyRequest()
        request.matchdict['user_id'] = '777'
        request.dbsession = mock(sqlalchemy.orm.session.Session)
        when(request.dbsession).add(ANY(Referral))
        err = IntegrityError('', params=None, orig=None)
        err.args = [
            '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL:  Key (user_id)=(360) is not present in table "user".\n
        ''']
        when(request.dbsession).flush().thenRaise(err)

        view_being_tested = ReferralView(request)
        response = view_being_tested.create_referral()

        self.assertEqual(response.status_code, 400)
Exemplo n.º 7
0
    def test_create_user_non_existing_referral(self):
        """  For this test we use a uuid which is not in the system """
        # Setup our dummy request before using it
        request = testing.DummyRequest()
        request.params['email'] = '*****@*****.**'
        test_uuid = str(uuid.uuid4())
        request.params['referral'] = test_uuid

        request.dbsession = mock(sqlalchemy.orm.session.Session)
        err = IntegrityError('', params=None, orig=None)
        err.args = [
            '''(psycopg2.errors.ForeignKeyViolation) insert or update on table "referral" violates foreign key constraint "fk_referral_user_id_user"\nDETAIL:  Key (user_id)=(360) is not present in table "user".\n
        '''
        ]
        when(request.dbsession).add(ANY(User)).thenRaise(err)

        view_being_tested = ReferralView(request)
        response = view_being_tested.create_user()

        self.assertEqual(response.status_code, 400)