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 }