github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/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  	expected := []byte(fmt.Sprintf(cloudconfig.UserdataScript, renderers.ToBase64(utils.Gzip(in))))
    37  	out := renderers.WinEmbedInScript(in)
    38  	c.Assert(out, jc.DeepEquals, expected)
    39  }
    40  
    41  func (s *RenderersSuite) TestAddPowershellTags(c *gc.C) {
    42  	in := []byte("test")
    43  	expected := []byte(`<powershell>` + string(in) + `</powershell>`)
    44  	out := renderers.AddPowershellTags(in)
    45  	c.Assert(out, jc.DeepEquals, expected)
    46  }
    47  
    48  func (s *RenderersSuite) TestRenderYAML(c *gc.C) {
    49  	cloudcfg := &cloudinittest.CloudConfig{YAML: []byte("yaml")}
    50  	d1 := func(in []byte) []byte {
    51  		return []byte("1." + string(in))
    52  	}
    53  	d2 := func(in []byte) []byte {
    54  		return []byte("2." + string(in))
    55  	}
    56  	out, err := renderers.RenderYAML(cloudcfg, d2, d1)
    57  	c.Assert(err, jc.ErrorIsNil)
    58  	c.Assert(string(out), jc.DeepEquals, "1.2.yaml")
    59  	cloudcfg.CheckCallNames(c, "RenderYAML")
    60  }
    61  
    62  func (s *RenderersSuite) TestRenderScript(c *gc.C) {
    63  	cloudcfg := &cloudinittest.CloudConfig{Script: "script"}
    64  	d1 := func(in []byte) []byte {
    65  		return []byte("1." + string(in))
    66  	}
    67  	d2 := func(in []byte) []byte {
    68  		return []byte("2." + string(in))
    69  	}
    70  	out, err := renderers.RenderScript(cloudcfg, d2, d1)
    71  	c.Assert(err, jc.ErrorIsNil)
    72  	c.Assert(string(out), jc.DeepEquals, "1.2.script")
    73  	cloudcfg.CheckCallNames(c, "RenderScript")
    74  }