Skip to content

Commit d56ca1c

Browse files
committed
feat(core): add vcr package
1 parent ecfee66 commit d56ca1c

File tree

8 files changed

+1095
-6
lines changed

8 files changed

+1095
-6
lines changed

.github/workflows/nightly.yml

Whitespace-only changes.

scaleway-async/poetry.lock

Lines changed: 489 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scaleway-async/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ classifiers = [
2525
[tool.poetry.dependencies]
2626
python = ">=3.10"
2727
scaleway-core = "*"
28+
vcrpy = "^7.0.0"
2829

2930
[tool.poetry.group.dev.dependencies]
3031
scaleway-core = { path = "../scaleway-core", develop = true }

scaleway/poetry.lock

Lines changed: 487 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scaleway/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ classifiers = [
2626
python = ">=3.10"
2727
scaleway-core = "*"
2828
pyrefly = ">=0.24.2,<0.27.0"
29+
vcrpy = "^7.0.0"
2930

3031
[tool.poetry.group.dev.dependencies]
3132
scaleway-core = { path = "../scaleway-core", develop = true }

scaleway/scaleway/vpc/tests/__init__.py

Whitespace-only changes.
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
import pytest
2+
import vcr
3+
from scaleway.vpc.v2 import VpcV2API
4+
from scaleway_core.api import ScalewayException
5+
from scaleway_core.client import Client
6+
from scaleway_core.utils import random_name
7+
from vcr_config import scw_vcr
8+
9+
region = "fr-par"
10+
tags = ["sdk-python", "regression-test"]
11+
created_pn_count = 5
12+
created_vpc_count = 1
13+
14+
@pytest.fixture(scope="module")
15+
def vpc_api():
16+
with scw_vcr.use_cassette("vpc_api.yaml"):
17+
client = Client.from_config_file_and_env()
18+
api = VpcV2API(client)
19+
return api, client.default_project_id, region
20+
21+
22+
@pytest.fixture(scope="module")
23+
def create_delete_vpc_setup(vpc_api):
24+
api, project_id, region = vpc_api
25+
with scw_vcr.use_cassette("vpc_create_fixture_setup.yaml"):
26+
vpc = api.create_vpc(
27+
enable_routing=True,
28+
region=region,
29+
project_id=project_id,
30+
name=random_name("vpc-test-sdk-python"),
31+
)
32+
yield vpc
33+
with scw_vcr.use_cassette("vpc_delete_fixture_teardown.yaml"):
34+
api.delete_vpc(vpc_id=vpc.id, region=region)
35+
36+
37+
@pytest.fixture
38+
def private_networks_to_cleanup(vpc_api):
39+
api, _, _ = vpc_api
40+
items = []
41+
yield items
42+
with scw_vcr.use_cassette("private_networks_delete_cleanup_fixture.yaml"):
43+
for pn in items:
44+
api.delete_private_network(private_network_id=pn.id)
45+
46+
47+
@scw_vcr.use_cassette("test_delete_vpc.yaml")
48+
def test_delete_vpc(vpc_api):
49+
api, project_id, region = vpc_api
50+
vpc = api.create_vpc(
51+
enable_routing=True,
52+
region=region,
53+
project_id=project_id,
54+
name=random_name("vpc-test-sdk-python"),
55+
)
56+
57+
assert vpc.id is not None
58+
assert vpc.region == region
59+
60+
api.delete_vpc(vpc_id=vpc.id)
61+
62+
with pytest.raises(ScalewayException):
63+
api.get_vpc(vpc_id=vpc.id)
64+
65+
66+
@scw_vcr.use_cassette("test_vpc_list.yaml")
67+
def test_list_vpcs(vpc_api):
68+
api, _, region = vpc_api
69+
vpcs = api.list_vp_cs(region=region)
70+
assert isinstance(vpcs.vpcs, list)
71+
assert vpcs.total_count >= created_vpc_count
72+
73+
74+
@scw_vcr.use_cassette("test_private_network_create.yaml")
75+
def test_create_private_network(vpc_api, vpc, private_networks_to_cleanup):
76+
api, project_id, _ = vpc_api
77+
for i in range(created_pn_count):
78+
pn = api.create_private_network(
79+
vpc_id=vpc.id,
80+
default_route_propagation_enabled=True,
81+
project_id=project_id,
82+
name=random_name(f"sdk-python-pn-{i}"),
83+
)
84+
private_networks_to_cleanup.append(pn)
85+
assert pn.vpc_id == vpc.id
86+
87+
88+
@scw_vcr.use_cassette("test_private_network_list.yaml")
89+
def test_list_private_network(vpc_api):
90+
api, _, region = vpc_api
91+
networks = api.list_private_networks(region=region)
92+
assert isinstance(networks.private_networks, list)
93+
assert networks.total_count >= created_pn_count
94+
95+
96+
@scw_vcr.use_cassette("test_vpc_get.yaml")
97+
def test_get_vpc(vpc_api, vpc):
98+
api, _, region = vpc_api
99+
fetched = api.get_vpc(vpc_id=vpc.id, region=region)
100+
assert fetched is not None
101+
assert fetched.id == vpc.id
102+
103+
104+
@scw_vcr.use_cassette("test_vpc_update.yaml")
105+
def test_update_vpc(vpc_api, vpc):
106+
api, _, _ = vpc_api
107+
updated = api.update_vpc(vpc_id=vpc.id, tags=tags)
108+
assert updated.tags == tags
109+
assert updated.id == vpc.id
110+
111+
112+
@scw_vcr.use_cassette("test_vpc_list _all.yaml")
113+
def test_list_vpc_all(vpc_api):
114+
api, _, _ = vpc_api
115+
vpcs = api.list_vp_cs_all()
116+
assert isinstance(vpcs, list)
117+
assert len(vpcs) >= created_vpc_count

scaleway/vcr_config.py

Whitespace-only changes.

0 commit comments

Comments
 (0)