Ejemplo n.º 1
0
    def test_get_item_include_pictures__success(self):
        data, errors = ItemSchema.jsonapi(
            self.item1, include_data=['pictures'])

        assert errors == {}
        expected_result = EXPECTED_ITEMS['get_item_include_pictures__success']
        assert_valid_response(data, expected_result)
Ejemplo n.º 2
0
    def test_put_address__success(self):
        addr_id = '943d754e-5826-4d5c-b878-47edc478b789'
        user = add_user('*****@*****.**',
                        '123',
                        id='943d754e-5826-4d5c-b878-47edc478b789')
        add_address(user,
                    city="Firenze",
                    post_code='50132',
                    address="Via Rossi 10",
                    id=addr_id)
        addr1 = new_addr(user,
                         city="Roma",
                         post_code="10000",
                         address="Via Bianchi 20")

        addr1 = format_jsonapi_request('address', addr1)

        resp = open_with_auth(self.app,
                              '/addresses/{}'.format(addr_id),
                              'PATCH',
                              user.email,
                              TEST_USER_PSW,
                              data=json.dumps(addr1),
                              content_type='application/json')

        assert resp.status_code == OK
        upd_addr = Address.get(Address.uuid == addr_id).json()
        expected_result = EXPECTED_RESULTS['put_address__success']
        # Check that the response data is what is expected and is also
        # the same as what has ben actually saved
        assert_valid_response(resp.data, expected_result)
        assert expected_result == json.loads(upd_addr)
Ejemplo n.º 3
0
    def test_get_orders__success(self):
        item = Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=12,
            category='accessori',
        )
        user = add_user(None,
                        TEST_USER_PSW,
                        id='f3f72634-7054-43ef-9119-9e8f54a9531e')
        addr = add_address(user=user,
                           id='85c6cba6-3ddd-4847-9d07-1337ff4e8506')
        Order.create(delivery_address=addr,
                     user=user,
                     uuid='06451e0a-8fa2-40d2-8c51-1af50d369ca6').add_item(
                         item, 2)

        Order.create(delivery_address=addr,
                     user=user,
                     uuid='429994bf-784e-47cc-a823-e0c394b823e8').add_item(
                         item, 5)

        resp = self.app.get('/orders/')

        expected_result = EXPECTED_RESULTS['get_orders__success']

        assert resp.status_code == OK
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 4
0
    def test_address_json_include_user__success(self):
        data, errors = AddressSchema.jsonapi(self.addr, include_data=['user'])

        assert errors == {}
        assert type(data) is str

        expected_result = EXPECTED_ADDRESSES['get_address_json_include_user__success']
        assert_valid_response(data, expected_result)
Ejemplo n.º 5
0
    def test_user_json__success(self):
        parsed_user, errors = UserSchema.jsonapi(self.user2)
        expected_result = EXPECTED_USERS['user_json__success']

        assert type(parsed_user) is str

        assert_valid_response(parsed_user, expected_result)
        assert errors == {}
Ejemplo n.º 6
0
    def test_get_items__success(self):
        Item.create(**TEST_ITEM)
        Item.create(**TEST_ITEM2)

        resp = self.app.get('/items/')

        assert resp.status_code == client.OK
        assert_valid_response(resp.data, EXPECTED_RESULTS['get_items__success'])
Ejemplo n.º 7
0
    def test_get_addresses_list__success(self):
        add_address(
            self.user, id='4373d5d7-cae5-42bc-b218-d6fc6d18626f')

        addr_list = [a for a in Address.select()]
        data = AddressSchema.jsonapi_list(addr_list)

        expected_result = EXPECTED_ADDRESSES['get_addresses_list__success']
        assert_valid_response(data, expected_result)
Ejemplo n.º 8
0
 def test_get_favorites__success(self):
     user = add_user(USER1, PASS1)
     item = add_item()
     add_favorite(user, item)
     resp = open_with_auth(self.app, API_ENDPOINT.format('favorites/'),
                           'GET', user.email, PASS1, None, None)
     assert resp.status_code == OK
     expected_result = EXPECTED_RESULTS['get_favorites__success']
     assert_valid_response(resp.data, expected_result)
Ejemplo n.º 9
0
    def test_create_order__success(self):
        Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=4,
            category='scarpe',
        )
        Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=10,
            category='accessori',
        )
        user = add_user('*****@*****.**',
                        TEST_USER_PSW,
                        id='e736a9a6-448b-4b92-9e38-4cf745b066db')
        add_address(user=user, id='8473fbaa-94f0-46db-939f-faae898f001c')

        order = {
            'relationships': {
                'items': [{
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                    'type': 'item',
                    'quantity': 4
                }, {
                    'id': '577ad826-a79d-41e9-a5b2-7955bcf03499',
                    'type': 'item',
                    'quantity': 10
                }],
                'delivery_address': {
                    'type': 'address',
                    'id': '8473fbaa-94f0-46db-939f-faae898f001c'
                },
                'user': {
                    'type': 'user',
                    'id': 'e736a9a6-448b-4b92-9e38-4cf745b066db'
                }
            }
        }
        data = format_jsonapi_request('order', order)

        path = 'orders/'
        resp = open_with_auth(self.app, API_ENDPOINT.format(path), 'POST',
                              user.email, TEST_USER_PSW, 'application/json',
                              json.dumps(data))

        assert resp.status_code == CREATED

        assert len(Order.select()) == 1
        assert len(OrderItem.select()) == 2
        order = Order.get()
        expected_result = EXPECTED_RESULTS['create_order__success']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 10
0
    def test_update_order__success_admin_not_own_order(self):
        item1 = Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=5,
            category='scarpe',
        )
        item2 = Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=2,
            category='accessori',
        )

        user = add_user('*****@*****.**',
                        TEST_USER_PSW,
                        id='35b9d92a-83c4-48c6-bc2a-580d95951f99')
        addr_A = add_address(user=user,
                             id='7f7bc402-469c-4f7b-8918-d4e150469ac7')

        order1 = Order.create(
            delivery_address=addr_A,
            user=user,
            uuid='54a2b917-6c21-42b5-b273-39ad6c765187').add_item(
                item1, 2).add_item(item2)

        order = {
            'relationships': {
                'items': [{
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                    'type': 'item',
                    'quantity': 5
                }, {
                    'id': '577ad826-a79d-41e9-a5b2-7955bcf03499',
                    'type': 'item',
                    'quantity': 1
                }],
            }
        }
        data = format_jsonapi_request('order', order)

        user_B = add_admin_user('*****@*****.**', TEST_USER_PSW)
        path = 'orders/{}'.format(order1.uuid)
        resp = open_with_auth(self.app, API_ENDPOINT.format(path), 'PATCH',
                              user_B.email, TEST_USER_PSW, 'application/json',
                              json.dumps(data))

        assert resp.status_code == OK

        expected_result = EXPECTED_RESULTS[
            'update_order__success_admin_not_owner']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 11
0
    def test_address_validate_input__fail(self):
        data = copy.deepcopy(self.data)
        data['country'] = ''
        del data['relationships']['user']

        post_data = format_jsonapi_request('address', data)
        errors = AddressSchema.validate_input(post_data)

        expected_result = EXPECTED_ADDRESSES['address_validate_input__fail']
        assert_valid_response(errors, expected_result)
Ejemplo n.º 12
0
    def test_post_item__success(self):
        data = format_jsonapi_request('item', TEST_ITEM)
        resp = self.app.post('/items/', data=json.dumps(data),
                             content_type='application/json')

        assert resp.status_code == client.CREATED
        assert len(Item.select()) == 1

        expected_result = EXPECTED_RESULTS['post_item__success']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 13
0
    def test_get_item_pictures__success(self):
        item = Item.create(**TEST_ITEM)
        Picture.create(item=item, **TEST_PICTURE)
        Picture.create(item=item, **TEST_PICTURE2)
        resp = self.app.get(
            '/items/{item_uuid}/pictures/'.format(item_uuid=item.uuid))
        assert resp.status_code == client.OK

        test_utils.assert_valid_response(
            resp.data, EXPECTED_RESULTS['get_item_pictures__success'])
Ejemplo n.º 14
0
    def test_post_item_missing_field__fail(self):
        item = TEST_ITEM.copy()
        del item['price']
        data = format_jsonapi_request('item', item)

        resp = self.app.post('/items/', data=json.dumps(data),
                             content_type='application/json')

        assert resp.status_code == client.BAD_REQUEST
        expected_result = EXPECTED_RESULTS['post_item_missing_field__fail']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 15
0
    def test_update_order__remove_item_without_delete(self):
        item1 = Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=10,
            category='scarpe',
        )
        item2 = Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=20,
            category='accessori',
        )

        user = add_user('*****@*****.**', TEST_USER_PSW)
        addr = add_address(user=user,
                           id='86ba7e70-b3c0-4c9c-8d26-a14f49360e47')
        add_address(user=user, id='429994bf-784e-47cc-a823-e0c394b823e8')

        order = Order.create(
            delivery_address=addr,
            user=user,
        ).add_item(item1, 10).add_item(item2, 20)

        post_data = {
            "relationships": {
                'items': [{
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                    'type': 'item',
                    'quantity': 0,
                }],
                'delivery_address': {
                    'type': 'address',
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                }
            }
        }
        post_data = format_jsonapi_request('order', post_data)
        path = 'orders/{}'.format(order.uuid)
        resp = open_with_auth(self.app, API_ENDPOINT.format(path), 'PATCH',
                              user.email, TEST_USER_PSW, 'application/json',
                              json.dumps(post_data))
        assert resp.status_code == OK

        expected_result = EXPECTED_RESULTS[
            'update_order__remove_item_without_delete']

        assert_valid_response(resp.data, expected_result)
        assert len(order.order_items) == 1
        assert order.order_items[0].quantity == 20
Ejemplo n.º 16
0
    def test_user_validate_input__fail(self):
        wrong_user_data = USER_TEST_DICT.copy()
        del wrong_user_data['password']             # missing field validation
        wrong_user_data['last_name'] = ''           # empty field validation
        wrong_user_data['email'] = 'email.is.not'   # email validation

        post_data = format_jsonapi_request('user', wrong_user_data)

        errors = UserSchema.validate_input(post_data)

        expected_result = EXPECTED_USERS['user_validate_input__fail']
        assert_valid_response(errors, expected_result)
Ejemplo n.º 17
0
    def test_get_order__success(self):
        user = add_user(None,
                        TEST_USER_PSW,
                        id='f79d9cd9-d5a3-4285-b6c0-54e0a8497b2a')
        addr_A = add_address(user=user,
                             id='fe17b62d-9e02-4889-862f-5b3323e689f5')
        addr_B = add_address(user=user,
                             city='Firenze',
                             post_code='50132',
                             address='Via Rossi 10',
                             phone='055432433',
                             id='03e071e4-e89e-46a3-8dfd-3da1bd52c02f')

        item1 = Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=3,
            category='scarpe',
        )
        item2 = Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=30,
            category='accessori',
        )

        order1 = Order.create(
            delivery_address=addr_A,
            user=user,
            uuid='b975ed38-f426-4965-8633-85a48442aaa5',
        ).add_item(item1, 2)

        order2 = Order.create(
            delivery_address=addr_B,
            user=user,
            uuid='c121e159-1d88-49b0-a36c-b2169ac69474',
        ).add_item(item1).add_item(item2, 2)

        resp = self.app.get('/orders/{}'.format(order1.uuid))

        expected_result = EXPECTED_RESULTS['get_order__success']
        assert resp.status_code == OK
        assert_valid_response(resp.data, expected_result)

        resp2 = self.app.get('/orders/{}'.format(order2.uuid))

        expected_result2 = EXPECTED_RESULTS['get_order__success_2']
        assert resp.status_code == OK
        assert json.loads(resp2.data) == expected_result2
Ejemplo n.º 18
0
    def test_get_users_list__success(self):
        user = add_admin_user('*****@*****.**', TEST_USER_PSW)
        add_user('*****@*****.**', TEST_USER_PSW,
                 id='4373d5d7-cae5-42bc-b218-d6fc6d18626f')
        add_user('*****@*****.**', TEST_USER_PSW,
                 id='9630b105-ca99-4a27-a51d-ab3430bf52d1')

        resp = open_with_auth(self.app, API_ENDPOINT.format('users/'), 'GET',
                              user.email, TEST_USER_PSW, None, None)

        assert resp.status_code == OK
        expected_result = EXPECTED_RESULTS['get_users_list__success']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 19
0
    def test_patch_change1item__success(self):
        item = Item.create(**TEST_ITEM)

        post_data = format_jsonapi_request('item', {'name': 'new-name'})
        resp = self.app.patch('/items/{item_uuid}'.format(item_uuid=item.uuid),
                              data=json.dumps(post_data),
                              content_type='application/json')

        assert resp.status_code == client.OK
        expected_result = EXPECTED_RESULTS['patch_change1item__success']
        assert_valid_response(resp.data, expected_result)

        assert Item.get().name == 'new-name'
Ejemplo n.º 20
0
    def test_item_validate_input__fail(self):
        data = {
            'name': '',          # not empty
            'price': -2,         # more than 0
            'availability': -2,  # more than 0
            'description': '',   # not empty
            'category': '',      # not empty
        }
        post_data = format_jsonapi_request('item', data)
        errors = ItemSchema.validate_input(post_data)

        expected_result = EXPECTED_ITEMS['item_validate_input__fail']
        assert_valid_response(errors, expected_result)
Ejemplo n.º 21
0
    def test_post_item__round_price(self):
        data = format_jsonapi_request('item', TEST_ITEM_PRECISION)
        resp = self.app.post('/items/', data=json.dumps(data),
                             content_type='application/json')
        assert resp.status_code == client.CREATED

        expected_result = EXPECTED_RESULTS['post_item__round_price']
        assert_valid_response(resp.data, expected_result)

        item = Item.select()[0]
        assert round(TEST_ITEM_PRECISION['price'], 5) == float(item.price)
        assert not TEST_ITEM_PRECISION['price'] == item.price
        assert TEST_ITEM_PRECISION['availability'] == item.availability
Ejemplo n.º 22
0
    def test_order_json__success(self):
        order = Order.create(
            delivery_address=self.addr, user=self.user,
            uuid='451b3bba-fe4d-470d-bf48-cb306c939bc6',
            created_at=datetime(2017, 5, 1, 9, 4, 47)
        ).add_item(self.item1, 2).add_item(self.item2, 5)

        parsed, _ = OrderSchema.jsonapi(
            order, include_data=['items', 'user', 'delivery_address'])

        assert type(parsed) == str

        expected_result = EXPECTED_ORDERS['order_json__success']
        assert_valid_response(parsed, expected_result)
Ejemplo n.º 23
0
    def test_get_address(self):
        user = add_user('*****@*****.**',
                        '123',
                        id='74df5166-db94-4738-8209-69aa733e36d1')
        addr = add_address(user,
                           city='Firenze',
                           post_code='50132',
                           address='Via Rossi 10',
                           id='4dbf5f2b-e164-4967-9a82-022996a17cc9')

        resp = open_with_auth(self.app, '/addresses/{}'.format(addr.uuid),
                              'GET', user.email, TEST_USER_PSW, None, None)

        assert resp.status_code == OK
        assert_valid_response(resp.data, EXPECTED_RESULTS['get_address'])
Ejemplo n.º 24
0
    def test_get_usersme__success(self):
        email = '*****@*****.**'
        user = add_user(email, TEST_USER_PSW)

        resp = open_with_auth(self.app, API_ENDPOINT.format('users/me/'), 'GET',
                              user.email, TEST_USER_PSW, None, None)

        assert resp.status_code == OK

        expected_result = EXPECTED_RESULTS['get_usersme__success']
        assert_valid_response(resp.data, expected_result)

        assert User.select().count() == 1
        assert User.get().admin is False
        assert User.get().email == email
Ejemplo n.º 25
0
    def test_create_address__success(self):
        user = add_user('*****@*****.**',
                        '123',
                        id='1777e816-3051-4faf-bbba-0c8a87baf08f')
        addr = format_jsonapi_request('address', new_addr(user))

        resp = open_with_auth(self.app, '/addresses/', 'POST', user.email,
                              TEST_USER_PSW, 'application/json',
                              json.dumps(addr))

        assert resp.status_code == CREATED
        assert len(Address.select()) == 1

        expected_result = EXPECTED_RESULTS['create_address__success']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 26
0
    def test_create_address__failure_missing_field(self):
        user = add_user('*****@*****.**', '123')
        addr = new_addr(user)
        del addr['country']
        addr = format_jsonapi_request('address', addr)

        resp = open_with_auth(self.app, '/addresses/', 'POST', user.email,
                              TEST_USER_PSW, 'application/json',
                              json.dumps(addr))

        assert resp.status_code == BAD_REQUEST
        assert len(Address.select()) == 0
        expected_result = EXPECTED_RESULTS[
            'create_address__failure_missing_field']
        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 27
0
    def test_update_order__new_item(self):

        item1 = Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=15,
            category='scarpe',
        )
        Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=15,
            category='accessori',
        )

        user = add_user('*****@*****.**', TEST_USER_PSW)
        addr = add_address(user=user,
                           id='429994bf-784e-47cc-a823-e0c394b823e8')

        order1 = Order.create(delivery_address=addr,
                              user=user).add_item(item1, 2)

        order = {
            "relationships": {
                'items': [{
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                    'type': 'item',
                    'quantity': 5,
                }, {
                    'id': '577ad826-a79d-41e9-a5b2-7955bcf03499',
                    'type': 'item',
                    'quantity': 10,
                }]
            }
        }
        post_data = format_jsonapi_request('order', order)
        path = 'orders/{}'.format(order1.uuid)
        resp = open_with_auth(self.app, API_ENDPOINT.format(path), 'PATCH',
                              '*****@*****.**', TEST_USER_PSW,
                              'application/json', json.dumps(post_data))
        order = Order.get()
        expected_result = EXPECTED_RESULTS['update_order__new_item']

        assert_valid_response(resp.data, expected_result)
Ejemplo n.º 28
0
    def test_create_order__failure_missing_field(self):
        Item.create(
            uuid='429994bf-784e-47cc-a823-e0c394b823e8',
            name='mario',
            price=20.20,
            description='svariati mariii',
            availability=4,
            category='scarpe',
        )
        Item.create(
            uuid='577ad826-a79d-41e9-a5b2-7955bcf03499',
            name='GINO',
            price=30.20,
            description='svariati GINIIIII',
            availability=10,
            category='accessori',
        )
        user = add_user('*****@*****.**', TEST_USER_PSW)

        order = {
            'relationships': {
                'items': [{
                    'id': '429994bf-784e-47cc-a823-e0c394b823e8',
                    'type': 'item',
                    'quantity': 4
                }, {
                    'id': '577ad826-a79d-41e9-a5b2-7955bcf03499',
                    'type': 'item',
                    'quantity': 10
                }],
                'user': {
                    'type': 'user',
                    'id': 'e736a9a6-448b-4b92-9e38-4cf745b066db'
                }
            }
        }
        data = format_jsonapi_request('order', order)

        path = 'orders/'
        resp = open_with_auth(self.app, API_ENDPOINT.format(path), 'POST',
                              user.email, TEST_USER_PSW, 'application/json',
                              json.dumps(data))
        assert resp.status_code == BAD_REQUEST
        expected_result = EXPECTED_RESULTS[
            'create_order__failure_missing_field']
        assert_valid_response(resp.data, expected_result)
        assert len(Order.select()) == 0
Ejemplo n.º 29
0
    def test_order_validate_fields__fail(self):
        order = {
            'relationships': {
                'items': [
                    # Items relationship should not be empty
                ],
                # Missing delivery_address relationship
                # Missing user relationship
            }
        }

        post_data = format_jsonapi_request('order', order)

        errors = OrderSchema.validate_input(post_data)

        expected_result = EXPECTED_ORDERS['order_validate_fields__fail']
        assert_valid_response(errors, expected_result)
Ejemplo n.º 30
0
 def test_post_favorites__fail(self):
     user = add_user(USER1, PASS1)
     data = {
         "data": {
             "type": "favorite",
             "attributes": {
                 "item_uuid": "2aabf825-40b3-03d5-e686-9eaebd156c0e"
             }
         }
     }
     resp = open_with_auth(self.app, API_ENDPOINT.format('favorites/'),
                           'POST', user.email, PASS1, 'application/json',
                           json.dumps(data))
     assert resp.status_code == NOT_FOUND
     assert Favorite.select().count() == 0
     expected_result = EXPECTED_RESULTS['post_favorites__fail']
     assert_valid_response(resp.data, expected_result)