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  }