github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/caas/kubernetes/provider/utils/dockerconfig_test.go (about) 1 // Copyright 2018 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package utils_test 5 6 import ( 7 "encoding/json" 8 9 jc "github.com/juju/testing/checkers" 10 gc "gopkg.in/check.v1" 11 12 "github.com/juju/juju/caas/kubernetes/provider/utils" 13 "github.com/juju/juju/testing" 14 ) 15 16 type DockerConfigSuite struct { 17 testing.BaseSuite 18 } 19 20 var _ = gc.Suite(&DockerConfigSuite{}) 21 22 func (s *DockerConfigSuite) TestExtractRegistryURL(c *gc.C) { 23 for _, registryTest := range []struct { 24 registryPath string 25 expectedURL string 26 err string 27 }{{ 28 registryPath: "registry.staging.charmstore.com/me/awesomeimage@sha256:5e2c71d050bec85c258a31aa4507ca8adb3b2f5158a4dc919a39118b8879a5ce", 29 expectedURL: "registry.staging.charmstore.com", 30 }, { 31 registryPath: "gcr.io/kubeflow/jupyterhub-k8s@sha256:5e2c71d050bec85c258a31aa4507ca8adb3b2f5158a4dc919a39118b8879a5ce", 32 expectedURL: "gcr.io", 33 }, { 34 registryPath: "docker.io/me/mygitlab:latest", 35 expectedURL: "docker.io", 36 }, { 37 registryPath: "me/mygitlab:latest", 38 expectedURL: "", 39 err: `oci reference "me/mygitlab:latest" must have a domain`, 40 }} { 41 result, err := utils.ExtractRegistryURL(registryTest.registryPath) 42 if registryTest.err != "" { 43 c.Assert(err, gc.ErrorMatches, registryTest.err) 44 } else { 45 c.Assert(err, jc.ErrorIsNil) 46 } 47 c.Assert(result, gc.Equals, registryTest.expectedURL) 48 } 49 } 50 51 func (s *DockerConfigSuite) TestCreateDockerConfigJSON(c *gc.C) { 52 imagePath := "registry.staging.jujucharms.com/tester/caas-mysql/mysql-image:5.7" 53 username := "docker-registry" 54 password := "hunter2" 55 56 config, err := utils.CreateDockerConfigJSON(username, password, imagePath) 57 c.Assert(err, jc.ErrorIsNil) 58 59 var result utils.DockerConfigJSON 60 err = json.Unmarshal(config, &result) 61 c.Assert(err, jc.ErrorIsNil) 62 63 c.Assert(result, jc.DeepEquals, utils.DockerConfigJSON{ 64 Auths: map[string]utils.DockerConfigEntry{ 65 "registry.staging.jujucharms.com": { 66 Username: "docker-registry", 67 Password: "hunter2", 68 Email: "", 69 }, 70 }, 71 }) 72 }