Skip to content

Commit 36867af

Browse files
committed
Create integration tests for share groups - part 1
1 parent 8eea059 commit 36867af

1 file changed

Lines changed: 122 additions & 0 deletions

File tree

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
import datetime
2+
3+
from test.integration.helpers import (
4+
get_test_label,
5+
)
6+
7+
import pytest
8+
9+
from linode_api4.objects import (
10+
Image,
11+
ImageShareGroup,
12+
ImageShareGroupToken,
13+
)
14+
15+
16+
def wait_for_image_status(test_linode_client, image_id, expected_status, timeout=180, interval=5):
17+
import time
18+
19+
get_image = test_linode_client.load(Image, image_id)
20+
timer = 0
21+
while get_image.status != expected_status and timer < timeout:
22+
time.sleep(interval)
23+
timer += interval
24+
get_image = test_linode_client.load(Image, image_id)
25+
if timer >= timeout:
26+
raise TimeoutError(
27+
f"Created image did not reach status '{expected_status}' within {timeout} seconds."
28+
)
29+
30+
31+
@pytest.fixture(scope="function")
32+
def create_image_id(test_linode_client, linode_for_legacy_interface_tests):
33+
# TODO: list disks by linode_for_legacy_interface_tests.id
34+
create_image = test_linode_client.images.create(disks[0], label="linode-api4python-test-image-sharing-image")
35+
wait_for_image_status(test_linode_client, create_image.id, "available")
36+
yield create_image.id
37+
38+
39+
def test_get_share_groups(test_linode_client):
40+
response = test_linode_client.sharegroups()
41+
sharegroups_list = response.lists[0]
42+
assert len(sharegroups_list) > 0
43+
assert sharegroups_list[0].api_endpoint == '/images/sharegroups/{id}'
44+
assert sharegroups_list[0].id > 0
45+
assert sharegroups_list[0].description != ''
46+
assert isinstance(sharegroups_list[0].images_count, int)
47+
assert sharegroups_list[0].is_suspended == False
48+
assert sharegroups_list[0].label != ''
49+
assert isinstance(sharegroups_list[0].members_count, int)
50+
assert sharegroups_list[0].uuid != ''
51+
assert isinstance(sharegroups_list[0].created, datetime.date)
52+
assert isinstance(sharegroups_list[0].updated, datetime.date)
53+
assert not sharegroups_list[0].expiry
54+
55+
56+
def test_add_update_remove_share_group(test_linode_client):
57+
group_label = get_test_label(8) + "_sharegroup_api4_test"
58+
response_create = test_linode_client.sharegroups.create_sharegroup(
59+
label=group_label,
60+
description="Test api4python create",
61+
)
62+
assert response_create.api_endpoint == '/images/sharegroups/{id}'
63+
assert response_create.id > 0
64+
assert response_create.description == 'Test api4python create'
65+
assert isinstance(response_create.images_count, int)
66+
assert response_create.is_suspended == False
67+
assert response_create.label == group_label
68+
assert isinstance(response_create.members_count, int)
69+
assert response_create.uuid != ''
70+
assert isinstance(response_create.created, datetime.date)
71+
assert not response_create.updated
72+
assert not response_create.expiry
73+
74+
# TODO: update sharegroup label or description
75+
76+
response_get = test_linode_client.load(ImageShareGroup, response_create.id)
77+
assert response_get.id == response_create.id
78+
assert response_get.description == 'Test api4python create'
79+
80+
response_create.delete()
81+
with pytest.raises(RuntimeError) as err:
82+
test_linode_client.load(ImageShareGroup, response_create.id)
83+
assert "[404] Not found" in str(err.value)
84+
85+
86+
def test_create_and_list_share_groups_by_image_id(test_linode_client, create_image_id):
87+
group_label = get_test_label(8) + "_sharegroup_api4_test"
88+
response_create_share_group = test_linode_client.sharegroups.create_sharegroup(
89+
label=group_label,
90+
description="Test api4python create",
91+
)
92+
93+
response_create_share_group.sharegroups_by_image_id(image_id=create_image_id)
94+
# TODO: Add assertions
95+
96+
response_create_share_group.delete()
97+
98+
99+
def test_list_tokens(test_linode_client):
100+
response = test_linode_client.sharegroups.tokens()
101+
assert response.page_endpoint == 'images/sharegroups/tokens'
102+
assert len(response.lists[0]) >= 0
103+
104+
105+
def test_create_token_to_own_share_group_error(test_linode_client):
106+
group_label = get_test_label(8) + "_sharegroup_api4_test"
107+
response_create_share_group = test_linode_client.sharegroups.create_sharegroup(
108+
label=group_label,
109+
description="Test api4python create",
110+
)
111+
with pytest.raises(RuntimeError) as err:
112+
test_linode_client.sharegroups.create_token(response_create_share_group.uuid)
113+
assert "[400] valid_for_sharegroup_uuid" in str(err.value)
114+
assert "You may not create a token for your own sharegroup" in str(err.value)
115+
116+
response_create_share_group.delete()
117+
118+
119+
def test_get_invalid_token(test_linode_client):
120+
with pytest.raises(RuntimeError) as err:
121+
test_linode_client.load(ImageShareGroupToken, "36b0-4d52_invalid")
122+
assert "[404] Not found" in str(err.value)

0 commit comments

Comments
 (0)