123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /*
- Copyright 2016 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package azure
- import (
- "bytes"
- "context"
- "testing"
- "github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry"
- "github.com/Azure/go-autorest/autorest/to"
- )
- type fakeClient struct {
- results []containerregistry.Registry
- }
- func (f *fakeClient) List(ctx context.Context) ([]containerregistry.Registry, error) {
- return f.results, nil
- }
- func Test(t *testing.T) {
- configStr := `
- {
- "aadClientId": "foo",
- "aadClientSecret": "bar"
- }`
- result := []containerregistry.Registry{
- {
- Name: to.StringPtr("foo"),
- RegistryProperties: &containerregistry.RegistryProperties{
- LoginServer: to.StringPtr("*.azurecr.io"),
- },
- },
- {
- Name: to.StringPtr("bar"),
- RegistryProperties: &containerregistry.RegistryProperties{
- LoginServer: to.StringPtr("*.azurecr.cn"),
- },
- },
- {
- Name: to.StringPtr("baz"),
- RegistryProperties: &containerregistry.RegistryProperties{
- LoginServer: to.StringPtr("*.azurecr.de"),
- },
- },
- {
- Name: to.StringPtr("bus"),
- RegistryProperties: &containerregistry.RegistryProperties{
- LoginServer: to.StringPtr("*.azurecr.us"),
- },
- },
- }
- fakeClient := &fakeClient{
- results: result,
- }
- provider := &acrProvider{
- registryClient: fakeClient,
- }
- provider.loadConfig(bytes.NewBufferString(configStr))
- creds := provider.Provide("")
- if len(creds) != len(result)+1 {
- t.Errorf("Unexpected list: %v, expected length %d", creds, len(result)+1)
- }
- for _, cred := range creds {
- if cred.Username != "" && cred.Username != "foo" {
- t.Errorf("expected 'foo' for username, saw: %v", cred.Username)
- }
- if cred.Password != "" && cred.Password != "bar" {
- t.Errorf("expected 'bar' for password, saw: %v", cred.Username)
- }
- }
- for _, val := range result {
- registryName := getLoginServer(val)
- if _, found := creds[registryName]; !found {
- t.Errorf("Missing expected registry: %s", registryName)
- }
- }
- }
- func TestParseACRLoginServerFromImage(t *testing.T) {
- tests := []struct {
- image string
- expected string
- }{
- {
- image: "invalidImage",
- expected: "",
- },
- {
- image: "docker.io/library/busybox:latest",
- expected: "",
- },
- {
- image: "foo.azurecr.io/bar/image:version",
- expected: "foo.azurecr.io",
- },
- {
- image: "foo.azurecr.cn/bar/image:version",
- expected: "foo.azurecr.cn",
- },
- {
- image: "foo.azurecr.de/bar/image:version",
- expected: "foo.azurecr.de",
- },
- {
- image: "foo.azurecr.us/bar/image:version",
- expected: "foo.azurecr.us",
- },
- }
- for _, test := range tests {
- if loginServer := parseACRLoginServerFromImage(test.image); loginServer != test.expected {
- t.Errorf("function parseACRLoginServerFromImage returns \"%s\" for image %s, expected \"%s\"", loginServer, test.image, test.expected)
- }
- }
- }
|