github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/version/osversion_windows_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 version_test
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/juju/juju/version"
    11  	"github.com/juju/utils"
    12  
    13  	"github.com/gabriel-samfira/sys/windows/registry"
    14  	"github.com/juju/juju/testing"
    15  	jc "github.com/juju/testing/checkers"
    16  	gc "gopkg.in/check.v1"
    17  )
    18  
    19  type windowsVersionSuite struct {
    20  	testing.BaseSuite
    21  }
    22  
    23  var _ = gc.Suite(&windowsVersionSuite{})
    24  
    25  var versionTests = []struct {
    26  	version string
    27  	want    string
    28  }{
    29  	{
    30  		"Hyper-V Server 2012 R2",
    31  		"win2012hvr2",
    32  	},
    33  	{
    34  		"Hyper-V Server 2012",
    35  		"win2012hv",
    36  	},
    37  	{
    38  		"Windows Server 2012 R2",
    39  		"win2012r2",
    40  	},
    41  	{
    42  		"Windows Server 2012",
    43  		"win2012",
    44  	},
    45  	{
    46  		"Windows Server 2012 R2 Datacenter",
    47  		"win2012r2",
    48  	},
    49  	{
    50  		"Windows Server 2012 Standard",
    51  		"win2012",
    52  	},
    53  	{
    54  		"Windows Storage Server 2012 R2",
    55  		"win2012r2",
    56  	},
    57  	{
    58  		"Windows Storage Server 2012 Standard",
    59  		"win2012",
    60  	},
    61  	{
    62  		"Windows Storage Server 2012 R2 Standard",
    63  		"win2012r2",
    64  	},
    65  	{
    66  		"Windows 7 Home",
    67  		"win7",
    68  	},
    69  	{
    70  		"Windows 8 Pro",
    71  		"win8",
    72  	},
    73  	{
    74  		"Windows 8.1 Pro",
    75  		"win81",
    76  	},
    77  }
    78  
    79  func (s *windowsVersionSuite) SetUpTest(c *gc.C) {
    80  	s.BaseSuite.SetUpTest(c)
    81  	salt, err := utils.RandomPassword()
    82  	c.Assert(err, jc.ErrorIsNil)
    83  	regKey := fmt.Sprintf(`SOFTWARE\JUJU\%s`, salt)
    84  	s.PatchValue(version.CurrentVersionKey, regKey)
    85  
    86  	k, _, err := registry.CreateKey(registry.LOCAL_MACHINE, *version.CurrentVersionKey, registry.ALL_ACCESS)
    87  	c.Assert(err, jc.ErrorIsNil)
    88  
    89  	err = k.Close()
    90  	c.Assert(err, jc.ErrorIsNil)
    91  
    92  	s.AddCleanup(func(*gc.C) {
    93  		registry.DeleteKey(registry.LOCAL_MACHINE, *version.CurrentVersionKey)
    94  	})
    95  }
    96  
    97  func (s *windowsVersionSuite) TestOSVersion(c *gc.C) {
    98  	for _, value := range versionTests {
    99  		k, err := registry.OpenKey(registry.LOCAL_MACHINE, *version.CurrentVersionKey, registry.ALL_ACCESS)
   100  		c.Assert(err, jc.ErrorIsNil)
   101  
   102  		err = k.SetStringValue("ProductName", value.version)
   103  		c.Assert(err, jc.ErrorIsNil)
   104  
   105  		err = k.Close()
   106  		c.Assert(err, jc.ErrorIsNil)
   107  
   108  		ver, err := version.OSVersion()
   109  		c.Assert(err, jc.ErrorIsNil)
   110  		c.Assert(ver, gc.Equals, value.want)
   111  	}
   112  }