github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cloudconfig/providerinit/renderers/common_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Copyright 2015 Cloudbase Solutions SRL
     3  // Licensed under the AGPLv3, see LICENCE file for details.
     4  
     5  package renderers_test
     6  
     7  import (
     8  	"encoding/base64"
     9  	"fmt"
    10  
    11  	jc "github.com/juju/testing/checkers"
    12  	"github.com/juju/utils"
    13  	gc "gopkg.in/check.v1"
    14  
    15  	"github.com/juju/juju/cloudconfig"
    16  	"github.com/juju/juju/cloudconfig/cloudinit/cloudinittest"
    17  	"github.com/juju/juju/cloudconfig/providerinit/renderers"
    18  	"github.com/juju/juju/testing"
    19  )
    20  
    21  type RenderersSuite struct {
    22  	testing.BaseSuite
    23  }
    24  
    25  var _ = gc.Suite(&RenderersSuite{})
    26  
    27  func (s *RenderersSuite) TestToBase64(c *gc.C) {
    28  	in := []byte("test")
    29  	expected := base64.StdEncoding.EncodeToString(in)
    30  	out := renderers.ToBase64(in)
    31  	c.Assert(string(out), gc.Equals, expected)
    32  }
    33  
    34  func (s *RenderersSuite) TestWinEmbedInScript(c *gc.C) {
    35  	in := []byte("test")
    36  	out := string(renderers.WinEmbedInScript(in))
    37  	encUserdata := renderers.ToBase64(utils.Gzip(in))
    38  	expected := fmt.Sprintf(cloudconfig.UserDataScript, encUserdata)
    39  	c.Assert(out, jc.DeepEquals, expected)
    40  }
    41  
    42  func (s *RenderersSuite) TestAddPowershellTags(c *gc.C) {
    43  	in := []byte("test")
    44  	expected := []byte(`<powershell>` + string(in) + `</powershell>`)
    45  	out := renderers.AddPowershellTags(in)
    46  	c.Assert(out, jc.DeepEquals, expected)
    47  }
    48  
    49  func (s *RenderersSuite) TestRenderYAML(c *gc.C) {
    50  	cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")}
    51  	d1 := func(in []byte) []byte {
    52  		return []byte("1." + string(in))
    53  	}
    54  	d2 := func(in []byte) []byte {
    55  		return []byte("2." + string(in))
    56  	}
    57  	out, err := renderers.RenderYAML(cloudcfg, d2, d1)
    58  	c.Assert(err, jc.ErrorIsNil)
    59  	c.Assert(string(out), jc.DeepEquals, "1.2.yaml")
    60  	cloudcfg.CheckCallNames(c, "RenderYAML")
    61  }
    62  
    63  func (s *RenderersSuite) TestRenderScript(c *gc.C) {
    64  	cloudcfg := &cloudinittest.CloudConfig{Script: "script"}
    65  	d1 := func(in []byte) []byte {
    66  		return []byte("1." + string(in))
    67  	}
    68  	d2 := func(in []byte) []byte {
    69  		return []byte("2." + string(in))
    70  	}
    71  	out, err := renderers.RenderScript(cloudcfg, d2, d1)
    72  	c.Assert(err, jc.ErrorIsNil)
    73  	c.Assert(string(out), jc.DeepEquals, "1.2.script")
    74  	cloudcfg.CheckCallNames(c, "RenderScript")
    75  }