github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/environs/manual/winrmprovisioner/winrmprovisioner_test.go (about)

     1  // Copyright 2018 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package winrmprovisioner_test
     5  
     6  import (
     7  	"bytes"
     8  	"fmt"
     9  	"io"
    10  
    11  	jc "github.com/juju/testing/checkers"
    12  	gc "gopkg.in/check.v1"
    13  
    14  	"github.com/juju/juju/environs/manual"
    15  	"github.com/juju/juju/environs/manual/winrmprovisioner"
    16  )
    17  
    18  type winrmprovisionerSuite struct{}
    19  
    20  var _ = gc.Suite(&winrmprovisionerSuite{})
    21  
    22  func (w *winrmprovisionerSuite) TestInitAdministratorError(c *gc.C) {
    23  	var stdout, stderr bytes.Buffer
    24  	args := manual.ProvisionMachineArgs{
    25  		Host:   winrmListenerAddr,
    26  		User:   "Administrator",
    27  		Stdout: &stdout,
    28  		Stderr: &stderr,
    29  		WinRM: manual.WinRMArgs{
    30  			Client: &fakeWinRM{
    31  				fakePing: func() error {
    32  					return nil
    33  				},
    34  			},
    35  		},
    36  	}
    37  
    38  	err := winrmprovisioner.InitAdministratorUser(&args)
    39  	c.Assert(err, gc.IsNil)
    40  
    41  	args.WinRM.Client = &fakeWinRM{
    42  		fakePing: func() error {
    43  			return fmt.Errorf("Ping Error")
    44  		},
    45  	}
    46  
    47  	// this should return to ioctl device error
    48  	err = winrmprovisioner.InitAdministratorUser(&args)
    49  	c.Assert(err, gc.NotNil)
    50  }
    51  
    52  func (w *winrmprovisionerSuite) TestDetectSeriesAndHardwareCharacteristics(c *gc.C) {
    53  	arch := "amd64"
    54  	mem := uint64(16)
    55  	series := "win2012r2"
    56  	cores := uint64(4)
    57  
    58  	fakeCli := &fakeWinRM{
    59  		fakeRun: func(cmd string, stdout, stderr io.Writer) error {
    60  			fmt.Fprintf(stdout, "amd64\r\n")
    61  			fmt.Fprintf(stdout, "16\r\n")
    62  			fmt.Fprintf(stdout, "win2012r2\r\n")
    63  			fmt.Fprintf(stdout, "4\r\n")
    64  			return nil
    65  		},
    66  	}
    67  
    68  	hc, ser, err := winrmprovisioner.DetectSeriesAndHardwareCharacteristics(winrmListenerAddr, fakeCli)
    69  	c.Assert(err, gc.IsNil)
    70  	c.Assert(hc, gc.NotNil)
    71  	c.Assert(ser, gc.Equals, series)
    72  	c.Assert(*hc.Arch, jc.DeepEquals, arch)
    73  	c.Assert(*hc.Mem, jc.DeepEquals, mem)
    74  	c.Assert(*hc.CpuCores, jc.DeepEquals, cores)
    75  	c.Assert(err, gc.IsNil)
    76  }
    77  
    78  func (w *winrmprovisionerSuite) TestRunProvisionScript(c *gc.C) {
    79  	var stdin, stderr bytes.Buffer
    80  	fakeCli := &fakeWinRM{
    81  		fakeRun: func(cmd string, stdout, stderr io.Writer) error {
    82  			c.Assert((len(cmd) > 0), gc.Equals, true)
    83  			return nil
    84  		},
    85  	}
    86  	err := winrmprovisioner.RunProvisionScript("echo hi!", fakeCli, &stdin, &stderr)
    87  	c.Assert(err, gc.IsNil)
    88  }