Skip to content

Commit 037b305

Browse files
committed
Update integration tests for private image sharing feature
1 parent b2bf5d9 commit 037b305

File tree

1 file changed

+109
-37
lines changed

1 file changed

+109
-37
lines changed

test/integration/models/sharegroups/test_sharegroups.py

Lines changed: 109 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
2+
from test.integration.conftest import get_region
33
from test.integration.helpers import (
44
get_test_label,
55
)
@@ -9,7 +9,11 @@
99
from linode_api4.objects import (
1010
Image,
1111
ImageShareGroup,
12+
ImageShareGroupImagesToAdd,
13+
ImageShareGroupImageToAdd,
14+
ImageShareGroupImageToUpdate,
1215
ImageShareGroupMemberToAdd,
16+
ImageShareGroupMemberToUpdate,
1317
ImageShareGroupToken,
1418
)
1519

@@ -29,22 +33,40 @@ def wait_for_image_status(test_linode_client, image_id, expected_status, timeout
2933
)
3034

3135

32-
@pytest.fixture(scope="function")
33-
def create_image_id(test_linode_client, linode_for_legacy_interface_tests):
34-
# TODO: list disks by linode_for_legacy_interface_tests.id
35-
create_image = test_linode_client.images.create(disks[0], label="linode-api4python-test-image-sharing-image")
36+
@pytest.fixture(scope="class")
37+
def sample_linode(test_linode_client, e2e_test_firewall):
38+
client = test_linode_client
39+
region = get_region(client, {"Linodes", "Cloud Firewall"}, site_type="core")
40+
label = get_test_label(length=8)
41+
42+
linode_instance, password = client.linode.instance_create(
43+
"g6-nanode-1",
44+
region,
45+
image="linode/debian12",
46+
label=label + "_modlinode",
47+
)
48+
yield linode_instance
49+
linode_instance.delete()
50+
51+
52+
@pytest.fixture(scope="class")
53+
def create_image_id(test_linode_client, sample_linode):
54+
create_image = test_linode_client.images.create(sample_linode.disks[0],
55+
label="linode-api4python-test-image-sharing-image")
3656
wait_for_image_status(test_linode_client, create_image.id, "available")
3757
yield create_image.id
58+
create_image.delete()
3859

3960

4061
@pytest.fixture(scope="function")
4162
def share_group_id(test_linode_client):
4263
group_label = get_test_label(8) + "_sharegroup_api4_test"
43-
response = test_linode_client.sharegroups.create_sharegroup(
64+
group = test_linode_client.sharegroups.create_sharegroup(
4465
label=group_label,
4566
description="Test api4python",
4667
)
47-
yield response.id
68+
yield group.id
69+
group.delete()
4870

4971

5072
def test_get_share_groups(test_linode_client):
@@ -66,45 +88,71 @@ def test_get_share_groups(test_linode_client):
6688

6789
def test_add_update_remove_share_group(test_linode_client):
6890
group_label = get_test_label(8) + "_sharegroup_api4_test"
69-
response_create = test_linode_client.sharegroups.create_sharegroup(
91+
share_group = test_linode_client.sharegroups.create_sharegroup(
7092
label=group_label,
7193
description="Test api4python create",
7294
)
73-
assert response_create.api_endpoint == '/images/sharegroups/{id}'
74-
assert response_create.id > 0
75-
assert response_create.description == 'Test api4python create'
76-
assert isinstance(response_create.images_count, int)
77-
assert response_create.is_suspended == False
78-
assert response_create.label == group_label
79-
assert isinstance(response_create.members_count, int)
80-
assert response_create.uuid != ''
81-
assert isinstance(response_create.created, datetime.date)
82-
assert not response_create.updated
83-
assert not response_create.expiry
84-
85-
# TODO: update sharegroup label or description
86-
87-
response_get = test_linode_client.load(ImageShareGroup, response_create.id)
88-
assert response_get.id == response_create.id
89-
assert response_get.description == 'Test api4python create'
90-
91-
response_create.delete()
95+
assert share_group.api_endpoint == '/images/sharegroups/{id}'
96+
assert share_group.id > 0
97+
assert share_group.description == 'Test api4python create'
98+
assert isinstance(share_group.images_count, int)
99+
assert share_group.is_suspended == False
100+
assert share_group.label == group_label
101+
assert isinstance(share_group.members_count, int)
102+
assert share_group.uuid != ''
103+
assert isinstance(share_group.created, datetime.date)
104+
assert not share_group.updated
105+
assert not share_group.expiry
106+
107+
load_share_group = test_linode_client.load(ImageShareGroup, share_group.id)
108+
assert load_share_group.id == share_group.id
109+
assert load_share_group.description == 'Test api4python create'
110+
111+
load_share_group.label = 'Updated Sharegroup Label'
112+
load_share_group.description = 'Test update description'
113+
load_share_group.save()
114+
load_share_group_after_update = test_linode_client.load(ImageShareGroup, share_group.id)
115+
assert load_share_group_after_update.id == share_group.id
116+
assert load_share_group_after_update.label == 'Updated Sharegroup Label'
117+
assert load_share_group_after_update.description == 'Test update description'
118+
119+
share_group.delete()
92120
with pytest.raises(RuntimeError) as err:
93-
test_linode_client.load(ImageShareGroup, response_create.id)
121+
test_linode_client.load(ImageShareGroup, share_group.id)
94122
assert "[404] Not found" in str(err.value)
95123

96124

97-
def test_create_and_list_share_groups_by_image_id(test_linode_client, create_image_id):
98-
group_label = get_test_label(8) + "_sharegroup_api4_test"
99-
response_create_share_group = test_linode_client.sharegroups.create_sharegroup(
100-
label=group_label,
101-
description="Test api4python create",
125+
def test_add_get_update_revoke_image_to_share_group(test_linode_client, create_image_id, share_group_id):
126+
share_group = test_linode_client.load(ImageShareGroup, share_group_id)
127+
add_image_response = share_group.add_images(
128+
ImageShareGroupImagesToAdd(
129+
images=[
130+
ImageShareGroupImageToAdd(id=create_image_id),
131+
]
132+
)
102133
)
134+
assert 0 < len(add_image_response)
135+
assert add_image_response[0].image_sharing.shared_by.sharegroup_id == share_group.id
136+
assert add_image_response[0].image_sharing.shared_by.source_image_id == create_image_id
137+
138+
get_response = share_group.get_image_shares()
139+
assert 0 < len(get_response)
140+
assert get_response[0].image_sharing.shared_by.sharegroup_id == share_group.id
141+
assert get_response[0].image_sharing.shared_by.source_image_id == create_image_id
142+
assert get_response[0].description == ""
143+
144+
update_response = share_group.update_image_share(
145+
ImageShareGroupImageToUpdate(image_share_id=get_response[0].id, description="Description update")
146+
)
147+
assert update_response.description == "Description update"
103148

104-
response_create_share_group.sharegroups_by_image_id(image_id=create_image_id)
105-
# TODO: Add assertions
149+
share_groups_by_image_id_response = test_linode_client.sharegroups.sharegroups_by_image_id(create_image_id)
150+
assert 0 < len(share_groups_by_image_id_response.lists)
151+
assert share_groups_by_image_id_response.lists[0][0].id == share_group.id
106152

107-
response_create_share_group.delete()
153+
share_group.revoke_image_share(get_response[0].id)
154+
get_after_revoke_response = share_group.get_image_shares()
155+
assert len(get_after_revoke_response) == 0
108156

109157

110158
def test_list_tokens(test_linode_client):
@@ -143,5 +191,29 @@ def test_try_to_add_member_invalid_token(test_linode_client, share_group_id):
143191
)
144192
)
145193
assert "[500] Invalid token format" in str(err.value)
146-
share_group.delete()
147194

195+
196+
def test_list_share_group_members(test_linode_client, share_group_id):
197+
share_group = test_linode_client.load(ImageShareGroup, share_group_id)
198+
response = share_group.get_members()
199+
assert 0 == len(response)
200+
201+
202+
def test_try_to_get_update_revoke_share_group_member_by_invalid_token(test_linode_client, share_group_id):
203+
share_group = test_linode_client.load(ImageShareGroup, share_group_id)
204+
with pytest.raises(RuntimeError) as err:
205+
share_group.get_member("notExistingToken")
206+
assert "[404] Not found" in str(err.value)
207+
208+
with pytest.raises(RuntimeError) as err:
209+
share_group.update_member(
210+
ImageShareGroupMemberToUpdate(
211+
token_uuid="notExistingToken",
212+
label="Update Member",
213+
)
214+
)
215+
assert "[404] Not found" in str(err.value)
216+
217+
with pytest.raises(RuntimeError) as err:
218+
share_group.remove_member("notExistingToken")
219+
assert "[404] Not found" in str(err.value)

0 commit comments

Comments
 (0)