Browse code

integration: migrate TestAPICreateDeletePredefinedNetworks from integration-cli

Signed-off-by: Go Charan Kilaru <sharkmagic07@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

5h4rk-lab authored on 2025/09/19 06:29:33
Showing 2 changed files
... ...
@@ -296,23 +296,6 @@ func getNwResource(t *testing.T, name string) *network.Inspect {
296 296
 	assert.NilError(t, err)
297 297
 	return &nr[0]
298 298
 }
299
-
300
-func (s *DockerNetworkSuite) TestDockerNetworkLsDefault(c *testing.T) {
301
-	defaults := []string{"bridge", "host", "none"}
302
-	for _, nn := range defaults {
303
-		assertNwIsAvailable(c, nn)
304
-	}
305
-}
306
-
307
-func (s *DockerNetworkSuite) TestDockerNetworkCreatePredefined(c *testing.T) {
308
-	predefined := []string{"bridge", "host", "none", "default"}
309
-	for _, nw := range predefined {
310
-		// predefined networks can't be created again
311
-		out, _, err := dockerCmdWithError("network", "create", nw)
312
-		assert.ErrorContains(c, err, "", out)
313
-	}
314
-}
315
-
316 299
 func (s *DockerNetworkSuite) TestDockerNetworkCreateHostBind(c *testing.T) {
317 300
 	cli.DockerCmd(c, "network", "create", "--subnet=192.168.10.0/24", "--gateway=192.168.10.1", "-o", "com.docker.network.bridge.host_binding_ipv4=192.168.10.1", "testbind")
318 301
 	assertNwIsAvailable(c, "testbind")
... ...
@@ -323,15 +306,6 @@ func (s *DockerNetworkSuite) TestDockerNetworkCreateHostBind(c *testing.T) {
323 323
 	assert.Assert(c, is.Contains(out, "192.168.10.1:5000->5000/tcp"))
324 324
 }
325 325
 
326
-func (s *DockerNetworkSuite) TestDockerNetworkRmPredefined(c *testing.T) {
327
-	predefined := []string{"bridge", "host", "none", "default"}
328
-	for _, nw := range predefined {
329
-		// predefined networks can't be removed
330
-		out, _, err := dockerCmdWithError("network", "rm", nw)
331
-		assert.ErrorContains(c, err, "", out)
332
-	}
333
-}
334
-
335 326
 func (s *DockerNetworkSuite) TestDockerNetworkLsFilter(c *testing.T) {
336 327
 	testRequires(c, func() bool { return OnlyDefaultNetworks(testutil.GetContext(c)) })
337 328
 
... ...
@@ -4,6 +4,7 @@ import (
4 4
 	"encoding/json"
5 5
 	"fmt"
6 6
 	"net/http"
7
+	"slices"
7 8
 	"testing"
8 9
 
9 10
 	cerrdefs "github.com/containerd/errdefs"
... ...
@@ -167,3 +168,46 @@ func TestNetworkInspectWithScope(t *testing.T) {
167 167
 	_, err = cli.NetworkInspect(ctx, name, client.NetworkInspectOptions{Scope: "local"})
168 168
 	assert.Check(t, is.ErrorType(err, cerrdefs.IsNotFound))
169 169
 }
170
+
171
+func TestCreateDeletePredefinedNetworks(t *testing.T) {
172
+	ctx := setupTest(t)
173
+	apiClient := testEnv.APIClient()
174
+
175
+	// Predefined networks differ per OS.
176
+	predefined := []string{"bridge", "host", "none"}
177
+	if testEnv.DaemonInfo.OSType == "windows" {
178
+		predefined = []string{"nat", "none"}
179
+	}
180
+
181
+	// Verify the daemon actually has those networks.
182
+	res, err := apiClient.NetworkList(ctx, client.NetworkListOptions{})
183
+	assert.NilError(t, err)
184
+
185
+	var actual []string
186
+	for _, nw := range res.Items {
187
+		if slices.Contains(predefined, nw.Name) {
188
+			actual = append(actual, nw.Name)
189
+		}
190
+	}
191
+	slices.Sort(actual)
192
+	slices.Sort(predefined)
193
+	assert.Check(t, is.DeepEqual(actual, predefined))
194
+
195
+	for _, name := range predefined {
196
+		t.Run(name, func(t *testing.T) {
197
+			// Creating a predefined network must fail.
198
+			_, err := apiClient.NetworkCreate(ctx, name, client.NetworkCreateOptions{})
199
+			assert.Check(t, is.ErrorContains(err, "operation is not permitted on predefined"))
200
+			assert.Check(t, is.ErrorType(err, cerrdefs.IsPermissionDenied))
201
+
202
+			// Deleting a predefined network must fail.
203
+			_, err = apiClient.NetworkRemove(ctx, name, client.NetworkRemoveOptions{})
204
+			assert.Check(t, is.ErrorContains(err, "is a pre-defined network and cannot be removed"))
205
+			assert.Check(t, is.ErrorType(err, cerrdefs.IsPermissionDenied))
206
+
207
+			// Sanity: it should still exist.
208
+			_, err = apiClient.NetworkInspect(ctx, name, client.NetworkInspectOptions{})
209
+			assert.NilError(t, err)
210
+		})
211
+	}
212
+}