Signed-off-by: Go Charan Kilaru <sharkmagic07@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
| ... | ... |
@@ -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 |
+} |