|
16 | 16 |
|
17 | 17 | Test-Suite to ensure that the /images endpoint is working as expected. |
18 | 18 | """ |
19 | | -import copy |
20 | 19 | import json |
21 | 20 | from http import HTTPStatus |
22 | 21 |
|
23 | 22 | import pytest |
24 | 23 | from faker import Faker |
25 | 24 |
|
26 | | -from met_api.models.tenant import Tenant as TenantModel |
27 | | -from met_api.utils.constants import TENANT_ID_HEADER |
| 25 | +from met_api.models.image_info import ImageInfo |
28 | 26 | from met_api.utils.enums import ContentType |
29 | 27 | from tests.utilities.factory_scenarios import TestImageInfo, TestJwtClaims, TestTenantInfo |
30 | 28 | from tests.utilities.factory_utils import factory_auth_header, factory_tenant_model |
@@ -79,40 +77,28 @@ def test_get_images_invalid_authorization(client, jwt, session, role): # pylint |
79 | 77 |
|
80 | 78 | def test_cannot_get_images_with_different_tenant_ids(client, jwt, session): # pylint:disable=unused-argument |
81 | 79 | """Assert that a user from tenant 1 cannot see images from tenant 2.""" |
82 | | - tenant_1 = TestTenantInfo.tenant1 # Create tenant 1 |
83 | | - factory_tenant_model(tenant_1) |
84 | | - tenant_1_short_name = tenant_1.value['short_name'] |
85 | | - tenant_1 = TenantModel.find_by_short_name(tenant_1_short_name) |
86 | | - assert tenant_1 is not None |
87 | | - |
88 | | - tenant_2 = TestTenantInfo.tenant2 # Create tenant 2 |
89 | | - factory_tenant_model(tenant_2) |
90 | | - tenant_2_short_name = tenant_2.value['short_name'] |
91 | | - tenant_2 = TenantModel.find_by_short_name(tenant_2_short_name) |
92 | | - assert tenant_2 is not None |
| 80 | + other_tenant = factory_tenant_model(TestTenantInfo.tenant2) |
| 81 | + headers = factory_auth_header(jwt=jwt, claims=TestJwtClaims.met_admin_role) |
93 | 82 |
|
94 | | - user_1 = copy.deepcopy(TestJwtClaims.met_admin_role.value) # Create a user for tenant 1 |
95 | | - user_1['tenant_id'] = tenant_1.id |
| 83 | + # Create two images for tenant 1 |
| 84 | + image_1 = client.post('/api/image_info/', data=json.dumps(TestImageInfo.image_1), |
| 85 | + headers=headers, content_type=ContentType.JSON.value) |
| 86 | + image_2 = client.post('/api/image_info/', data=json.dumps(TestImageInfo.image_1), |
| 87 | + headers=headers, content_type=ContentType.JSON.value) |
96 | 88 |
|
97 | | - user_2 = copy.deepcopy(TestJwtClaims.met_admin_role.value) # Create a user for tenant 2 |
98 | | - user_2['tenant_id'] = tenant_2.id |
| 89 | + # Fetch the images and assert we see both |
| 90 | + rv = client.get('/api/image_info/', headers=headers, content_type=ContentType.JSON.value) |
| 91 | + assert rv.json.get('total') == 2 # Assert we see just the 2 image for our tenant |
99 | 92 |
|
| 93 | + # Change the tenant_id of one of the images to be the other tenant |
| 94 | + image_info = session.query(ImageInfo).filter(ImageInfo.id == image_2.json.get('id')).one_or_none() |
| 95 | + image_info.tenant_id = other_tenant.id |
| 96 | + session.add(image_info) |
100 | 97 | session.commit() |
101 | 98 |
|
102 | | - headers = factory_auth_header(jwt=jwt, claims=user_1) |
103 | | - headers[TENANT_ID_HEADER] = tenant_1_short_name |
104 | | - rv = client.post('/api/image_info/', data=json.dumps(TestImageInfo.image_1), |
105 | | - headers=headers, content_type=ContentType.JSON.value) |
106 | | - response_tenant_id = rv.json.get('tenant_id') |
107 | | - user_tenant_id = user_1.get('tenant_id') |
108 | | - assert int(response_tenant_id) == int(user_tenant_id) # Create image for tenant 1 |
109 | | - |
110 | | - headers = factory_auth_header(jwt=jwt, claims=user_1) |
111 | | - headers[TENANT_ID_HEADER] = tenant_1_short_name |
112 | | - rv = client.get('/api/image_info/', headers=headers, content_type=ContentType.JSON.value) |
113 | | - assert rv.json.get('total') == 1 # Assert user 1 can see image |
114 | | - |
115 | | - headers = factory_auth_header(jwt=jwt, claims=user_2) |
116 | | - headers[TENANT_ID_HEADER] = tenant_2_short_name |
| 99 | + # Fetch the images and assert we see just 1 now |
117 | 100 | rv = client.get('/api/image_info/', headers=headers, content_type=ContentType.JSON.value) |
118 | | - assert rv.json.get('total') == 0 # Assert user from different tenant cannot see image |
| 101 | + # Assert we see just the 1 image for our tenant |
| 102 | + assert rv.json.get('total') == 1 |
| 103 | + # Check to make sure we get the right image |
| 104 | + assert rv.json.get('items')[0].get('id') == image_1.json.get('id') |
0 commit comments