github.com/mhilton/juju-juju@v0.0.0-20150901100907-a94dd2c73455/agent/format-1.18_whitebox_test.go (about) 1 // Copyright 2014 Canonical Ltd. 2 // Copyright 2014 Cloudbase Solutions SRL 3 // Licensed under the AGPLv3, see LICENCE file for details. 4 5 // The format tests are white box tests, meaning that the tests are in the 6 // same package as the code, as all the format details are internal to the 7 // package. 8 9 package agent 10 11 import ( 12 "path/filepath" 13 14 jc "github.com/juju/testing/checkers" 15 "github.com/juju/utils" 16 gc "gopkg.in/check.v1" 17 18 "github.com/juju/juju/juju/paths" 19 "github.com/juju/juju/state/multiwatcher" 20 "github.com/juju/juju/testing" 21 "github.com/juju/juju/version" 22 ) 23 24 type format_1_18Suite struct { 25 testing.BaseSuite 26 } 27 28 var _ = gc.Suite(&format_1_18Suite{}) 29 30 var configData1_18WithoutUpgradedToVersion = "# format 1.18\n" + configDataWithoutNewAttributes 31 32 func (s *format_1_18Suite) TestMissingAttributes(c *gc.C) { 33 logDir, err := paths.LogDir(version.Current.Series) 34 c.Assert(err, jc.ErrorIsNil) 35 realDataDir, err := paths.DataDir(version.Current.Series) 36 c.Assert(err, jc.ErrorIsNil) 37 38 realDataDir = filepath.FromSlash(realDataDir) 39 logPath := filepath.Join(logDir, "juju") 40 logPath = filepath.FromSlash(logPath) 41 42 dataDir := c.MkDir() 43 configPath := filepath.Join(dataDir, agentConfigFilename) 44 err = utils.AtomicWriteFile(configPath, []byte(configData1_18WithoutUpgradedToVersion), 0600) 45 c.Assert(err, jc.ErrorIsNil) 46 readConfig, err := ReadConfig(configPath) 47 c.Assert(err, jc.ErrorIsNil) 48 c.Assert(readConfig.UpgradedToVersion(), gc.Equals, version.MustParse("1.16.0")) 49 configLogDir := filepath.FromSlash(readConfig.LogDir()) 50 configDataDir := filepath.FromSlash(readConfig.DataDir()) 51 c.Assert(configLogDir, gc.Equals, logPath) 52 c.Assert(configDataDir, gc.Equals, realDataDir) 53 c.Assert(readConfig.PreferIPv6(), jc.IsFalse) 54 // The api info doesn't have the environment tag set. 55 c.Assert(readConfig.APIInfo().EnvironTag.Id(), gc.Equals, "") 56 } 57 58 func (s *format_1_18Suite) TestStatePortNotParsedWithoutSecret(c *gc.C) { 59 dataDir := c.MkDir() 60 configPath := filepath.Join(dataDir, agentConfigFilename) 61 err := utils.AtomicWriteFile(configPath, []byte(agentConfig1_18NotStateMachine), 0600) 62 c.Assert(err, jc.ErrorIsNil) 63 readConfig, err := ReadConfig(configPath) 64 c.Assert(err, jc.ErrorIsNil) 65 _, available := readConfig.StateServingInfo() 66 c.Assert(available, jc.IsFalse) 67 } 68 69 func (*format_1_18Suite) TestReadConfWithExisting1_18ConfigFileContents(c *gc.C) { 70 dataDir := c.MkDir() 71 configPath := filepath.Join(dataDir, agentConfigFilename) 72 err := utils.AtomicWriteFile(configPath, []byte(agentConfig1_18Contents), 0600) 73 c.Assert(err, jc.ErrorIsNil) 74 75 config, err := ReadConfig(configPath) 76 c.Assert(err, jc.ErrorIsNil) 77 c.Assert(config.UpgradedToVersion(), jc.DeepEquals, version.MustParse("1.17.5.1")) 78 c.Assert(config.Jobs(), jc.DeepEquals, []multiwatcher.MachineJob{multiwatcher.JobManageEnviron}) 79 c.Assert(config.PreferIPv6(), jc.IsTrue) 80 } 81 82 var agentConfig1_18Contents = ` 83 # format 1.18 84 tag: machine-0 85 datadir: /home/user/.juju/local 86 logdir: /var/log/juju-user-local 87 nonce: user-admin:bootstrap 88 jobs: 89 - JobManageEnviron 90 upgradedToVersion: 1.17.5.1 91 cacert: '-----BEGIN CERTIFICATE----- 92 93 MIICWzCCAcagAwIBAgIBADALBgkqhkiG9w0BAQUwQzENMAsGA1UEChMEanVqdTEy 94 95 MDAGA1UEAwwpanVqdS1nZW5lcmF0ZWQgQ0EgZm9yIGVudmlyb25tZW50ICJsb2Nh 96 97 bCIwHhcNMTQwMzA1MTQxOTA3WhcNMjQwMzA1MTQyNDA3WjBDMQ0wCwYDVQQKEwRq 98 99 dWp1MTIwMAYDVQQDDClqdWp1LWdlbmVyYXRlZCBDQSBmb3IgZW52aXJvbm1lbnQg 100 101 ImxvY2FsIjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwHsKV7fKfmSQt2QL 102 103 P4+hrqQJhDTMifgNkIY9nTlLHegV5jl5XJ8lRYjZBXJEMz0AzW/RbrDElkn5+4Do 104 105 pIWPNDAT0eztXBvVwL6qQOUtiBsA7vHQJMQaLVAmZNKvrHyuhcoG+hpf8EMaLdbA 106 107 iCGKifs+Y0MFt5AeriVDH5lGlzcCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgCkMA8G 108 109 A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFB3Td3SP66UToZkOjVh3Wy8b6HR6MB8G 110 111 A1UdIwQYMBaAFB3Td3SP66UToZkOjVh3Wy8b6HR6MAsGCSqGSIb3DQEBBQOBgQB4 112 113 izvSRSpimi40aEOnZIsSMHVBiSCclpBg5cq7lGyiUSsDROTIbsRAKPBmrflB/qbf 114 115 J70rWFwh/d/5ssCAYrZviFL6WvpuLD3j3m4PYampNMmvJf2s6zVRIMotEY+bVwfU 116 117 z4jGaVpODac0i0bE0/Uh9qXK1UXcYY57vNNAgkaYAQ== 118 119 -----END CERTIFICATE----- 120 121 ' 122 stateaddresses: 123 - localhost:37017 124 statepassword: NB5imrDaWCCRW/4akSSvUxhX 125 apiaddresses: 126 - localhost:17070 127 apipassword: NB5imrDaWCCRW/4akSSvUxhX 128 oldpassword: oBlMbFUGvCb2PMFgYVzjS6GD 129 values: 130 AGENT_SERVICE_NAME: juju-agent-user-local 131 CONTAINER_TYPE: "" 132 NAMESPACE: user-local 133 PROVIDER_TYPE: local 134 STORAGE_ADDR: 10.0.3.1:8040 135 STORAGE_DIR: /home/user/.juju/local/storage 136 stateservercert: '-----BEGIN CERTIFICATE----- 137 138 MIICNzCCAaKgAwIBAgIBADALBgkqhkiG9w0BAQUwQzENMAsGA1UEChMEanVqdTEy 139 140 MDAGA1UEAwwpanVqdS1nZW5lcmF0ZWQgQ0EgZm9yIGVudmlyb25tZW50ICJsb2Nh 141 142 bCIwHhcNMTQwMzA1MTQxOTE1WhcNMjQwMzA1MTQyNDE1WjAbMQ0wCwYDVQQKEwRq 143 144 dWp1MQowCAYDVQQDEwEqMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJnbuN 145 146 L3m/oY7Er2lEF6ye1SodepvpI0CLCdLwrYP52cRxbVzoD1jbXveclolg2xoUquga 147 148 qxsAhvVzzGaoLux1BoBD+G0N637fnY4XSIC9IuSkPOAdReKJkOvTL4nTjpzgfeHR 149 150 hRin6Xckvp96L4Prmki7sYQ8PG9Q7TBcOf4yowIDAQABo2cwZTAOBgNVHQ8BAf8E 151 152 BAMCAKgwEwYDVR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFE1MB3d+5BW+n066 153 154 lWcVkhta1etlMB8GA1UdIwQYMBaAFB3Td3SP66UToZkOjVh3Wy8b6HR6MAsGCSqG 155 156 SIb3DQEBBQOBgQBnsBvl3hfIQbHhAlqritDBCWGpaXywlHe4PvyVL3LZTLiAZ9a/ 157 158 BOSBfovs81sjUe5l60j+1vgRQgvT2Pnw6WGWmYWhSyxW7upEUl1LuZxnw3AVGVFO 159 160 r140iBNUtTfGUf3PmyBXHSotqgMime+rNSjl25qSoYwnuQXdFdCKJoutYg== 161 162 -----END CERTIFICATE----- 163 164 ' 165 stateserverkey: '-----BEGIN RSA PRIVATE KEY----- 166 167 MIICXAIBAAKBgQDJnbuNL3m/oY7Er2lEF6ye1SodepvpI0CLCdLwrYP52cRxbVzo 168 169 D1jbXveclolg2xoUqugaqxsAhvVzzGaoLux1BoBD+G0N637fnY4XSIC9IuSkPOAd 170 171 ReKJkOvTL4nTjpzgfeHRhRin6Xckvp96L4Prmki7sYQ8PG9Q7TBcOf4yowIDAQAB 172 173 AoGASEtzETFQ6tI3q3dqu6vxjhLJw0BP381wO2sOZJcTl+fqdPHOOrgmGKN5DoE8 174 175 SarHM1oFWGq6h/nc0eUdenk4+CokpbKRgUU9hB1TKGYMbN3bUTKPOqTMHbnrhWdT 176 177 P/fqa+nXhvg7igMT3Rk7l9DsSxoYB5xZmiLaXqynVE5MNoECQQDRsgDDUrUOeMH6 178 179 1+GO+afb8beRzR8mnaBvja6XLlZB6SUcGet9bMgAiGH3arH6ARfNNsWrDAmvArah 180 181 SKeqRB5TAkEA9iMEQDkcybCmxu4Y3YLeQuT9r3h26QhQjc+eRINS/3ZLN+lxKnXG 182 183 N019ZUlsyL97lJBDzTMPsBqfXJ2pbqXwcQJBAJNLuPN63kl7E68zA3Ld9UYvBWY6 184 185 Mp56bJ7PZAs39kk4DuQtZNhmmBqfskkMPlZBfEmfJrxeqVKw0j56faPBU5cCQFYU 186 187 mP/8+VxwM2OPEZMmmaS7gR1E/BEznzh5S9iaNQSy0kuTkMhQuCnPJ/OsYiczEH08 188 189 lvnEyc/E/8bcPM09q4ECQCFwMWzw2Jx9VOBGm60yiOKIdLgdDZOY/tP0jigNCMJF 190 191 47/BJx3FCgW3io81a4KOc445LxgiPUJyyCNlY1dW70o= 192 193 -----END RSA PRIVATE KEY----- 194 195 ' 196 caprivatekey: '-----BEGIN RSA PRIVATE KEY----- 197 198 MIICXAIBAAKBgQDJnbuNL3m/oY7Er2lEF6ye1SodepvpI0CLCdLwrYP52cRxbVzo 199 200 D1jbXveclolg2xoUqugaqxsAhvVzzGaoLux1BoBD+G0N637fnY4XSIC9IuSkPOAd 201 202 ReKJkOvTL4nTjpzgfeHRhRin6Xckvp96L4Prmki7sYQ8PG9Q7TBcOf4yowIDAQAB 203 204 AoGASEtzETFQ6tI3q3dqu6vxjhLJw0BP381wO2sOZJcTl+fqdPHOOrgmGKN5DoE8 205 206 SarHM1oFWGq6h/nc0eUdenk4+CokpbKRgUU9hB1TKGYMbN3bUTKPOqTMHbnrhWdT 207 208 P/fqa+nXhvg7igMT3Rk7l9DsSxoYB5xZmiLaXqynVE5MNoECQQDRsgDDUrUOeMH6 209 210 1+GO+afb8beRzR8mnaBvja6XLlZB6SUcGet9bMgAiGH3arH6ARfNNsWrDAmvArah 211 212 SKeqRB5TAkEA9iMEQDkcybCmxu4Y3YLeQuT9r3h26QhQjc+eRINS/3ZLN+lxKnXG 213 214 N019ZUlsyL97lJBDzTMPsBqfXJ2pbqXwcQJBAJNLuPN63kl7E68zA3Ld9UYvBWY6 215 216 Mp56bJ7PZAs39kk4DuQtZNhmmBqfskkMPlZBfEmfJrxeqVKw0j56faPBU5cCQFYU 217 218 mP/8+VxwM2OPEZMmmaS7gR1E/BEznzh5S9iaNQSy0kuTkMhQuCnPJ/OsYiczEH08 219 220 lvnEyc/E/8bcPM09q4ECQCFwMWzw2Jx9VOBGm60yiOKIdLgdDZOY/tP0jigNCMJF 221 222 47/BJx3FCgW3io81a4KOc445LxgiPUJyyCNlY1dW70o= 223 224 -----END RSA PRIVATE KEY----- 225 226 ' 227 apiport: 17070 228 prefer-ipv6: true 229 `[1:] 230 231 var agentConfig1_18NotStateMachine = ` 232 # format 1.18 233 tag: machine-1 234 datadir: /home/user/.juju/local 235 logdir: /var/log/juju-user-local 236 nonce: user-admin:bootstrap 237 jobs: 238 - JobManageEnviron 239 upgradedToVersion: 1.17.5.1 240 cacert: '-----BEGIN CERTIFICATE----- 241 242 MIICWzCCAcagAwIBAgIBADALBgkqhkiG9w0BAQUwQzENMAsGA1UEChMEanVqdTEy 243 244 MDAGA1UEAwwpanVqdS1nZW5lcmF0ZWQgQ0EgZm9yIGVudmlyb25tZW50ICJsb2Nh 245 246 bCIwHhcNMTQwMzA1MTQxOTA3WhcNMjQwMzA1MTQyNDA3WjBDMQ0wCwYDVQQKEwRq 247 248 dWp1MTIwMAYDVQQDDClqdWp1LWdlbmVyYXRlZCBDQSBmb3IgZW52aXJvbm1lbnQg 249 250 ImxvY2FsIjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwHsKV7fKfmSQt2QL 251 252 P4+hrqQJhDTMifgNkIY9nTlLHegV5jl5XJ8lRYjZBXJEMz0AzW/RbrDElkn5+4Do 253 254 pIWPNDAT0eztXBvVwL6qQOUtiBsA7vHQJMQaLVAmZNKvrHyuhcoG+hpf8EMaLdbA 255 256 iCGKifs+Y0MFt5AeriVDH5lGlzcCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgCkMA8G 257 258 A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFB3Td3SP66UToZkOjVh3Wy8b6HR6MB8G 259 260 A1UdIwQYMBaAFB3Td3SP66UToZkOjVh3Wy8b6HR6MAsGCSqGSIb3DQEBBQOBgQB4 261 262 izvSRSpimi40aEOnZIsSMHVBiSCclpBg5cq7lGyiUSsDROTIbsRAKPBmrflB/qbf 263 264 J70rWFwh/d/5ssCAYrZviFL6WvpuLD3j3m4PYampNMmvJf2s6zVRIMotEY+bVwfU 265 266 z4jGaVpODac0i0bE0/Uh9qXK1UXcYY57vNNAgkaYAQ== 267 268 -----END CERTIFICATE----- 269 270 ' 271 stateaddresses: 272 - localhost:37017 273 statepassword: NB5imrDaWCCRW/4akSSvUxhX 274 apiaddresses: 275 - localhost:17070 276 apipassword: NB5imrDaWCCRW/4akSSvUxhX 277 oldpassword: oBlMbFUGvCb2PMFgYVzjS6GD 278 values: 279 AGENT_SERVICE_NAME: juju-agent-user-local 280 CONTAINER_TYPE: "" 281 MONGO_SERVICE_NAME: juju-db-user-local 282 NAMESPACE: user-local 283 PROVIDER_TYPE: local 284 STORAGE_ADDR: 10.0.3.1:8040 285 STORAGE_DIR: /home/user/.juju/local/storage 286 apiport: 17070 287 prefer-ipv6: true 288 `[1:]