-
Notifications
You must be signed in to change notification settings - Fork 85
Expand file tree
/
Copy pathtest_obj.py
More file actions
215 lines (165 loc) · 6.41 KB
/
test_obj.py
File metadata and controls
215 lines (165 loc) · 6.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
import time
from test.integration.helpers import send_request_when_resource_available
import pytest
from linode_api4.common import RegionPrice
from linode_api4.linode_client import LinodeClient
from linode_api4.objects.object_storage import (
ObjectStorageACL,
ObjectStorageBucket,
ObjectStorageCluster,
ObjectStorageEndpointType,
ObjectStorageKeyPermission,
ObjectStorageKeys,
ObjectStorageType,
)
@pytest.fixture(scope="session")
def region(test_linode_client: LinodeClient):
return "us-southeast" # uncomment get_region(test_linode_client, {"Object Storage"}).id
@pytest.fixture(scope="session")
def endpoints(test_linode_client: LinodeClient):
return test_linode_client.object_storage.endpoints()
@pytest.fixture(scope="session")
def bucket(
test_linode_client: LinodeClient, region: str
) -> ObjectStorageBucket:
bucket = test_linode_client.object_storage.bucket_create(
cluster_or_region=region,
label="bucket-" + str(time.time_ns()),
acl=ObjectStorageACL.PRIVATE,
cors_enabled=False,
)
yield bucket
send_request_when_resource_available(timeout=100, func=bucket.delete)
@pytest.fixture(scope="session")
def bucket_with_endpoint(
test_linode_client: LinodeClient, endpoints
) -> ObjectStorageBucket:
selected_endpoint = next(
(
e
for e in endpoints
if e.endpoint_type == ObjectStorageEndpointType.E1
),
None,
)
bucket = test_linode_client.object_storage.bucket_create(
cluster_or_region=selected_endpoint.region,
label="bucket-" + str(time.time_ns()),
acl=ObjectStorageACL.PRIVATE,
cors_enabled=False,
endpoint_type=selected_endpoint.endpoint_type,
)
yield bucket
send_request_when_resource_available(timeout=100, func=bucket.delete)
@pytest.fixture(scope="session")
def obj_key(test_linode_client: LinodeClient):
key = test_linode_client.object_storage.keys_create(
label="obj-key-" + str(time.time_ns()),
)
yield key
key.delete()
@pytest.fixture(scope="session")
def obj_limited_key(
test_linode_client: LinodeClient, region: str, bucket: ObjectStorageBucket
):
key = test_linode_client.object_storage.keys_create(
label="obj-limited-key-" + str(time.time_ns()),
bucket_access=test_linode_client.object_storage.bucket_access(
cluster_or_region=region,
bucket_name=bucket.label,
permissions=ObjectStorageKeyPermission.READ_ONLY,
),
regions=[region],
)
yield key
key.delete()
def test_keys(
test_linode_client: LinodeClient,
obj_key: ObjectStorageKeys,
obj_limited_key: ObjectStorageKeys,
):
loaded_key = test_linode_client.load(ObjectStorageKeys, obj_key.id)
loaded_limited_key = test_linode_client.load(
ObjectStorageKeys, obj_limited_key.id
)
assert loaded_key.label == obj_key.label
assert loaded_limited_key.label == obj_limited_key.label
assert (
loaded_limited_key.regions[0].endpoint_type
in ObjectStorageEndpointType.__members__.values()
)
def test_bucket(test_linode_client: LinodeClient, bucket: ObjectStorageBucket):
loaded_bucket = test_linode_client.load(
ObjectStorageBucket,
target_id=bucket.label,
target_parent_id=bucket.region,
)
assert loaded_bucket.label == bucket.label
assert loaded_bucket.region == bucket.region
def test_bucket_with_endpoint(
test_linode_client: LinodeClient, bucket_with_endpoint: ObjectStorageBucket
):
loaded_bucket = test_linode_client.load(
ObjectStorageBucket,
target_id=bucket_with_endpoint.label,
target_parent_id=bucket_with_endpoint.region,
)
assert loaded_bucket.label == bucket_with_endpoint.label
assert loaded_bucket.region == bucket_with_endpoint.region
assert loaded_bucket.s3_endpoint is not None
assert loaded_bucket.endpoint_type == "E1"
def test_buckets_in_region(
test_linode_client: LinodeClient,
bucket: ObjectStorageBucket,
region: str,
):
buckets = test_linode_client.object_storage.buckets_in_region(region=region)
assert len(buckets) >= 1
assert any(b.label == bucket.label for b in buckets)
@pytest.mark.smoke
def test_list_obj_storage_bucket(
test_linode_client: LinodeClient,
bucket: ObjectStorageBucket,
):
buckets = test_linode_client.object_storage.buckets()
target_bucket_id = bucket.id
assert any(target_bucket_id == b.id for b in buckets)
def test_bucket_access_get(bucket: ObjectStorageBucket):
access = bucket.access_get()
assert access.acl is not None
assert access.acl_xml is not None
assert access.cors_enabled is not None
def test_bucket_access_modify(bucket: ObjectStorageBucket):
bucket.access_modify(ObjectStorageACL.PRIVATE, cors_enabled=True)
def test_bucket_access_update(bucket: ObjectStorageBucket):
bucket.access_update(ObjectStorageACL.PRIVATE, cors_enabled=True)
def test_get_ssl_cert(bucket: ObjectStorageBucket):
assert not bucket.ssl_cert().ssl
def test_get_cluster(
test_linode_client: LinodeClient, bucket: ObjectStorageBucket
):
cluster = test_linode_client.load(ObjectStorageCluster, bucket.cluster)
assert "linodeobjects.com" in cluster.domain
assert cluster.id == bucket.cluster
assert "available" == cluster.status
def test_get_buckets_in_cluster(
test_linode_client: LinodeClient, bucket: ObjectStorageBucket
):
cluster = test_linode_client.load(ObjectStorageCluster, bucket.cluster)
assert any(bucket.id == b.id for b in cluster.buckets_in_cluster())
def test_object_storage_types(test_linode_client):
types = test_linode_client.object_storage.types()
if len(types) > 0:
for object_storage_type in types:
assert type(object_storage_type) is ObjectStorageType
assert object_storage_type.price.monthly is None or (
isinstance(object_storage_type.price.monthly, (float, int))
and object_storage_type.price.monthly >= 0
)
if len(object_storage_type.region_prices) > 0:
region_price = object_storage_type.region_prices[0]
assert type(region_price) is RegionPrice
assert object_storage_type.price.monthly is None or (
isinstance(object_storage_type.price.monthly, (float, int))
and object_storage_type.price.monthly >= 0
)