github.com/juju/juju@v0.0.0-20240327075706-a90865de2538/core/charm/kubernetes_test.go (about) 1 // Copyright 2021 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package charm 5 6 import ( 7 "github.com/juju/charm/v12" 8 charmresource "github.com/juju/charm/v12/resource" 9 "github.com/juju/testing" 10 jc "github.com/juju/testing/checkers" 11 "go.uber.org/mock/gomock" 12 gc "gopkg.in/check.v1" 13 ) 14 15 type kubernetesSuite struct { 16 testing.CleanupSuite 17 } 18 19 var _ = gc.Suite(&kubernetesSuite{}) 20 21 func (s *kubernetesSuite) TestMetadataV1NoKubernetes(c *gc.C) { 22 ctrl := gomock.NewController(c) 23 defer ctrl.Finish() 24 cm := NewMockCharmMeta(ctrl) 25 cm.EXPECT().Meta().Return(&charm.Meta{Series: []string{"bionic"}}).MinTimes(2) 26 cm.EXPECT().Manifest().Return(nil).AnyTimes() 27 28 c.Assert(IsKubernetes(cm), jc.IsFalse) 29 } 30 31 func (s *kubernetesSuite) TestMetadataV1Kubernetes(c *gc.C) { 32 ctrl := gomock.NewController(c) 33 defer ctrl.Finish() 34 cm := NewMockCharmMeta(ctrl) 35 cm.EXPECT().Meta().Return(&charm.Meta{Series: []string{"kubernetes"}}).MinTimes(2) 36 cm.EXPECT().Manifest().Return(nil).AnyTimes() 37 38 c.Assert(IsKubernetes(cm), jc.IsTrue) 39 } 40 41 func (s *kubernetesSuite) TestMetadataV2NoKubernetes(c *gc.C) { 42 ctrl := gomock.NewController(c) 43 defer ctrl.Finish() 44 cm := NewMockCharmMeta(ctrl) 45 cm.EXPECT().Meta().Return(&charm.Meta{}).AnyTimes() 46 cm.EXPECT().Manifest().Return(&charm.Manifest{Bases: []charm.Base{ 47 { 48 Name: "ubuntu", 49 Channel: charm.Channel{ 50 Risk: "stable", 51 Track: "20.04", 52 }, 53 }, 54 }}).AnyTimes() 55 56 c.Assert(IsKubernetes(cm), jc.IsFalse) 57 } 58 59 func (s *kubernetesSuite) TestMetadataV2Kubernetes(c *gc.C) { 60 ctrl := gomock.NewController(c) 61 defer ctrl.Finish() 62 cm := NewMockCharmMeta(ctrl) 63 cm.EXPECT().Meta().Return(&charm.Meta{ 64 Containers: map[string]charm.Container{ 65 "redis": {Resource: "redis-container-resource"}, 66 }, 67 Resources: map[string]charmresource.Meta{ 68 "redis-container-resource": { 69 Name: "redis-container", 70 Type: charmresource.TypeContainerImage, 71 }, 72 }, 73 }).AnyTimes() 74 cm.EXPECT().Manifest().Return(&charm.Manifest{Bases: []charm.Base{ 75 { 76 Name: "ubuntu", 77 Channel: charm.Channel{ 78 Risk: "stable", 79 Track: "20.04", 80 }, 81 }, 82 }}).AnyTimes() 83 84 c.Assert(IsKubernetes(cm), jc.IsTrue) 85 }