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 }