diff options
author | Miloslav Trmač <mitr@redhat.com> | 2021-09-11 20:13:21 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2021-12-10 18:09:55 +0100 |
commit | b162d8868c0b14961347c80df834f93f0e7e82a6 (patch) | |
tree | 2bb7de8c787005ef852e890636613662690e732f /pkg/auth/auth_test.go | |
parent | 47f4f149bd4bf71223a056f95d2ae110c240c66b (diff) | |
download | podman-b162d8868c0b14961347c80df834f93f0e7e82a6.tar.gz podman-b162d8868c0b14961347c80df834f93f0e7e82a6.tar.bz2 podman-b162d8868c0b14961347c80df834f93f0e7e82a6.zip |
Add unit tests for multiAuthHeader
Also rename it to parseMultiAuthHeader.
Should not change behavior.
Signed-off-by: Miloslav Trmač <mitr@redhat.com>
Diffstat (limited to 'pkg/auth/auth_test.go')
-rw-r--r-- | pkg/auth/auth_test.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/pkg/auth/auth_test.go b/pkg/auth/auth_test.go index da2d9a5c5..97e7fe1ec 100644 --- a/pkg/auth/auth_test.go +++ b/pkg/auth/auth_test.go @@ -1,11 +1,14 @@ package auth import ( + "encoding/base64" "io/ioutil" + "net/http" "testing" "github.com/containers/image/v5/types" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestAuthConfigsToAuthFile(t *testing.T) { @@ -64,3 +67,39 @@ func TestAuthConfigsToAuthFile(t *testing.T) { } } } + +func TestParseMultiAuthHeader(t *testing.T) { + for _, tc := range []struct { + input string + shouldErr bool + expected map[string]types.DockerAuthConfig + }{ + // Empty header + {input: "", expected: nil}, + // "null" + {input: "null", expected: nil}, + // Invalid JSON + {input: "@", shouldErr: true}, + // Success + { + input: base64.URLEncoding.EncodeToString([]byte( + `{"https://index.docker.io/v1/":{"username":"u1","password":"p1"},` + + `"quay.io/libpod":{"username":"u2","password":"p2"}}`)), + expected: map[string]types.DockerAuthConfig{ + "https://index.docker.io/v1/": {Username: "u1", Password: "p1"}, + "quay.io/libpod": {Username: "u2", Password: "p2"}, + }, + }, + } { + req, err := http.NewRequest(http.MethodPost, "/", nil) + require.NoError(t, err, tc.input) + req.Header.Set(XRegistryAuthHeader.String(), tc.input) + res, err := parseMultiAuthHeader(req) + if tc.shouldErr { + assert.Error(t, err, tc.input) + } else { + require.NoError(t, err, tc.input) + assert.Equal(t, tc.expected, res, tc.input) + } + } +} |