From 2680a0fe2c10b8a3acf8b73ae6311a8358ae41b5 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Mon, 30 Nov 2020 12:34:24 +0100 Subject: [PATCH] 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 --- integration/network/network_test.go | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/integration/network/network_test.go b/integration/network/network_test.go index 8a08cb3450..a4057d2410 100644 --- a/integration/network/network_test.go +++ b/integration/network/network_test.go @@ -3,6 +3,7 @@ package network // import "github.com/docker/docker/integration/network" import ( "bytes" "context" + "encoding/json" "net/http" "os/exec" "strings" @@ -93,6 +94,34 @@ func TestNetworkInvalidJSON(t *testing.T) { } } +// TestNetworkList verifies that /networks returns a list of networks either +// with, or without a trailing slash (/networks/). Regression test for https://github.com/moby/moby/issues/24595 +func TestNetworkList(t *testing.T) { + defer setupTest(t)() + + endpoints := []string{ + "/networks", + "/networks/", + } + + for _, ep := range endpoints { + t.Run(ep, func(t *testing.T) { + t.Parallel() + + res, body, err := request.Get(ep, request.JSON) + assert.NilError(t, err) + assert.Equal(t, res.StatusCode, http.StatusOK) + + buf, err := request.ReadBody(body) + assert.NilError(t, err) + var nws []types.NetworkResource + err = json.Unmarshal(buf, &nws) + assert.NilError(t, err) + assert.Assert(t, len(nws) > 0) + }) + } +} + func TestHostIPv4BridgeLabel(t *testing.T) { skip.If(t, testEnv.OSType == "windows") skip.If(t, testEnv.IsRemoteDaemon)