1
+ from http import HTTPStatus
1
2
from testcontainers .core .container import DockerContainer
2
3
from testcontainers .core .docker_client import DockerClient
4
+ from testcontainers .core .labels import LABEL_SESSION_ID
3
5
from testcontainers .core .network import Network
4
6
7
+ import docker .errors
8
+ import pytest
9
+
5
10
NGINX_ALPINE_SLIM_IMAGE = "nginx:1.25.4-alpine-slim"
6
11
7
12
@@ -14,6 +19,31 @@ def test_network_gets_created_and_cleaned_up():
14
19
assert not docker .client .networks .list (network .name )
15
20
16
21
22
+ def test_network_create_wo_cm ():
23
+ network = Network ()
24
+ network .create ()
25
+ docker = DockerClient ()
26
+ networks_list = docker .client .networks .list (network .name )
27
+ assert networks_list [0 ].name == network .name
28
+ assert networks_list [0 ].id == network .id
29
+
30
+ network .remove ()
31
+ assert not docker .client .networks .list (network .name )
32
+
33
+
34
+ def test_network_create_errors ():
35
+ network = Network ()
36
+ network .create ()
37
+
38
+ # calling create the second time should raise an error
39
+ with pytest .raises (docker .errors .APIError ) as excinfo :
40
+ network .create ()
41
+
42
+ assert excinfo .value .response .status_code == HTTPStatus .CONFLICT
43
+ excinfo .match (f"network with name { network .name } already exists" )
44
+ network .remove ()
45
+
46
+
17
47
def test_containers_can_communicate_over_network ():
18
48
with Network () as network :
19
49
with (
@@ -41,3 +71,13 @@ def assert_can_ping(container: DockerContainer, remote_name: str):
41
71
status , output = container .exec ("ping -c 1 %s" % remote_name )
42
72
assert status == 0
43
73
assert "64 bytes" in str (output )
74
+
75
+
76
+ def test_network_has_labels ():
77
+ network = Network ()
78
+ try :
79
+ network .create ()
80
+ network = network ._docker .client .networks .get (network_id = network .id )
81
+ assert LABEL_SESSION_ID in network .attrs .get ("Labels" )
82
+ finally :
83
+ network .remove ()
0 commit comments