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 }