Browse code

Networking: add regression test for networks endpoint with trailing slash

This adds a regression test for https://github.com/moby/moby/issues/24595

make DOCKER_GRAPHDRIVER=vfs TEST_FILTER='TestNetworkList' test-integration

INFO: Testing against a local daemon
=== RUN TestNetworkList
=== RUN TestNetworkList//networks
=== PAUSE TestNetworkList//networks
=== RUN TestNetworkList//networks/
=== PAUSE TestNetworkList//networks/
=== CONT TestNetworkList//networks
=== CONT TestNetworkList//networks/
--- PASS: TestNetworkList (0.05s)
--- PASS: TestNetworkList//networks/ (0.01s)
--- PASS: TestNetworkList//networks (0.01s)
PASS

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2020/11/30 20:34:24
Showing 1 changed files
... ...
@@ -3,6 +3,7 @@ package network // import "github.com/docker/docker/integration/network"
3 3
 import (
4 4
 	"bytes"
5 5
 	"context"
6
+	"encoding/json"
6 7
 	"net/http"
7 8
 	"os/exec"
8 9
 	"strings"
... ...
@@ -93,6 +94,34 @@ func TestNetworkInvalidJSON(t *testing.T) {
93 93
 	}
94 94
 }
95 95
 
96
+// TestNetworkList verifies that /networks returns a list of networks either
97
+// with, or without a trailing slash (/networks/). Regression test for https://github.com/moby/moby/issues/24595
98
+func TestNetworkList(t *testing.T) {
99
+	defer setupTest(t)()
100
+
101
+	endpoints := []string{
102
+		"/networks",
103
+		"/networks/",
104
+	}
105
+
106
+	for _, ep := range endpoints {
107
+		t.Run(ep, func(t *testing.T) {
108
+			t.Parallel()
109
+
110
+			res, body, err := request.Get(ep, request.JSON)
111
+			assert.NilError(t, err)
112
+			assert.Equal(t, res.StatusCode, http.StatusOK)
113
+
114
+			buf, err := request.ReadBody(body)
115
+			assert.NilError(t, err)
116
+			var nws []types.NetworkResource
117
+			err = json.Unmarshal(buf, &nws)
118
+			assert.NilError(t, err)
119
+			assert.Assert(t, len(nws) > 0)
120
+		})
121
+	}
122
+}
123
+
96 124
 func TestHostIPv4BridgeLabel(t *testing.T) {
97 125
 	skip.If(t, testEnv.OSType == "windows")
98 126
 	skip.If(t, testEnv.IsRemoteDaemon)