Skip to content

Commit 2bc5c2e

Browse files
committed
network: add unit tests for internal flag
Signed-off-by: ChengyuZhu6 <[email protected]>
1 parent c35a3a7 commit 2bc5c2e

File tree

2 files changed

+59
-0
lines changed

2 files changed

+59
-0
lines changed

cmd/nerdctl/network/network_create_linux_test.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package network
1818

1919
import (
20+
"encoding/json"
2021
"fmt"
2122
"net"
2223
"strings"
@@ -107,6 +108,51 @@ func TestNetworkCreate(t *testing.T) {
107108
}
108109
},
109110
},
111+
{
112+
Description: "internal enabled",
113+
Setup: func(data test.Data, helpers test.Helpers) {
114+
helpers.Ensure("network", "create", "--internal", data.Identifier())
115+
netw := nerdtest.InspectNetwork(helpers, data.Identifier())
116+
assert.Equal(t, len(netw.IPAM.Config), 1)
117+
data.Labels().Set("subnet", netw.IPAM.Config[0].Subnet)
118+
},
119+
Cleanup: func(data test.Data, helpers test.Helpers) {
120+
helpers.Anyhow("network", "rm", data.Identifier())
121+
},
122+
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
123+
return helpers.Command("run", "--rm", "--net", data.Identifier(), testutil.CommonImage, "ip", "route")
124+
},
125+
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
126+
return &test.Expected{
127+
ExitCode: 0,
128+
Output: func(stdout string, t tig.T) {
129+
assert.Assert(t, strings.Contains(stdout, data.Labels().Get("subnet")))
130+
assert.Assert(t, !strings.Contains(stdout, "default "))
131+
132+
nativeNet := nerdtest.InspectNetworkNative(helpers, data.Identifier())
133+
var cni struct {
134+
Plugins []struct {
135+
Type string `json:"type"`
136+
IsGW bool `json:"isGateway"`
137+
IPMasq bool `json:"ipMasq"`
138+
} `json:"plugins"`
139+
}
140+
_ = json.Unmarshal(nativeNet.CNI, &cni)
141+
// bridge plugin assertions and no portmap
142+
foundBridge := false
143+
for _, p := range cni.Plugins {
144+
assert.Assert(t, p.Type != "portmap")
145+
if p.Type == "bridge" {
146+
foundBridge = true
147+
assert.Assert(t, !p.IsGW)
148+
assert.Assert(t, !p.IPMasq)
149+
}
150+
}
151+
assert.Assert(t, foundBridge)
152+
},
153+
}
154+
},
155+
},
110156
}
111157

112158
testCase.Run(t)

pkg/testutil/nerdtest/utilities.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,19 @@ func InspectNetwork(helpers test.Helpers, name string) dockercompat.Network {
8888
return res
8989
}
9090

91+
func InspectNetworkNative(helpers test.Helpers, name string) native.Network {
92+
helpers.T().Helper()
93+
var res native.Network
94+
cmd := helpers.Command("network", "inspect", "--mode", "native", name)
95+
cmd.Run(&test.Expected{
96+
Output: expect.JSON([]native.Network{}, func(dc []native.Network, t tig.T) {
97+
assert.Equal(t, 1, len(dc), "Unexpectedly got multiple results")
98+
res = dc[0]
99+
}),
100+
})
101+
return res
102+
}
103+
91104
func InspectImage(helpers test.Helpers, name string) dockercompat.Image {
92105
helpers.T().Helper()
93106
var res dockercompat.Image

0 commit comments

Comments
 (0)