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:]