github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/jujuclient/proxy_test.go (about)

     1  // Copyright 2020 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package jujuclient_test
     5  
     6  import (
     7  	"github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	"go.uber.org/mock/gomock"
    10  	gc "gopkg.in/check.v1"
    11  	"gopkg.in/yaml.v3"
    12  
    13  	"github.com/juju/juju/caas/kubernetes/provider/proxy"
    14  	"github.com/juju/juju/jujuclient"
    15  )
    16  
    17  type proxyWrapperSuite struct {
    18  	testing.IsolationSuite
    19  }
    20  
    21  var _ = gc.Suite(&proxyWrapperSuite{})
    22  
    23  func (p *proxyWrapperSuite) TestMarshalling(c *gc.C) {
    24  	config := proxy.ProxierConfig{
    25  		APIHost:             "https://127.0.0.1:443",
    26  		CAData:              "cadata====",
    27  		Namespace:           "test",
    28  		RemotePort:          "8123",
    29  		Service:             "test",
    30  		ServiceAccountToken: "token====",
    31  	}
    32  	proxier := proxy.NewProxier(config)
    33  	wrapper := &jujuclient.ProxyConfWrapper{proxier}
    34  	data, err := yaml.Marshal(wrapper)
    35  	c.Assert(err, jc.ErrorIsNil)
    36  	c.Assert(string(data), gc.Equals, `
    37  type: kubernetes-port-forward
    38  config:
    39      api-host: https://127.0.0.1:443
    40      ca-cert: cadata====
    41      namespace: test
    42      remote-port: "8123"
    43      service: test
    44      service-account-token: token====
    45  `[1:])
    46  }
    47  
    48  func (p *proxyWrapperSuite) TestUnmarshalling(c *gc.C) {
    49  	ctrl := gomock.NewController(c)
    50  	defer ctrl.Finish()
    51  
    52  	config := proxy.ProxierConfig{
    53  		APIHost:             "https://127.0.0.1:443",
    54  		CAData:              "cadata====",
    55  		Namespace:           "test",
    56  		RemotePort:          "8123",
    57  		Service:             "test",
    58  		ServiceAccountToken: "token====",
    59  	}
    60  	proxier := proxy.NewProxier(config)
    61  	rawConfig := map[string]interface{}{
    62  		"api-host":              "https://127.0.0.1:443",
    63  		"ca-cert":               "cadata====",
    64  		"namespace":             "test",
    65  		"remote-port":           "8123",
    66  		"service":               "test",
    67  		"service-account-token": "token====",
    68  	}
    69  	factory := NewMockProxyFactory(ctrl)
    70  	factory.EXPECT().ProxierFromConfig("kubernetes-port-forward", rawConfig).Return(proxier, nil)
    71  	p.PatchValue(&jujuclient.NewProxierFactory, func() (jujuclient.ProxyFactory, error) { return factory, nil })
    72  
    73  	var wrapper jujuclient.ProxyConfWrapper
    74  	err := yaml.Unmarshal([]byte(`
    75  type: kubernetes-port-forward
    76  config:
    77      api-host: https://127.0.0.1:443
    78      ca-cert: cadata====
    79      namespace: test
    80      remote-port: "8123"
    81      service: test
    82      service-account-token: token====
    83  `[1:]), &wrapper)
    84  	c.Assert(err, jc.ErrorIsNil)
    85  	c.Assert(wrapper.Proxier.Type(), gc.Equals, "kubernetes-port-forward")
    86  	rCfg, err := wrapper.Proxier.RawConfig()
    87  	c.Assert(err, jc.ErrorIsNil)
    88  	c.Assert(rCfg, gc.DeepEquals, rawConfig)
    89  }