~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/cmd/plugins/juju-metadata/validateimagemetadata_test.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 
9
9
        "github.com/juju/cmd"
10
10
        jc "github.com/juju/testing/checkers"
 
11
        "github.com/juju/utils"
11
12
        "gopkg.in/amz.v3/aws"
12
13
        gc "gopkg.in/check.v1"
13
14
 
 
15
        "github.com/juju/juju/cloud"
14
16
        "github.com/juju/juju/cmd/modelcmd"
15
17
        "github.com/juju/juju/environs/config"
16
 
        "github.com/juju/juju/environs/configstore"
17
18
        "github.com/juju/juju/environs/filestorage"
18
19
        "github.com/juju/juju/environs/imagemetadata"
19
20
        "github.com/juju/juju/environs/simplestreams"
91
92
        return nil
92
93
}
93
94
 
94
 
func cacheTestEnvConfig(c *gc.C) {
 
95
func cacheTestEnvConfig(c *gc.C, store *jujuclienttesting.MemStore) {
 
96
        ec2UUID := utils.MustNewUUID().String()
95
97
        ec2Config, err := config.New(config.UseDefaults, map[string]interface{}{
96
 
                "name":           "ec2",
97
 
                "type":           "ec2",
98
 
                "default-series": "precise",
99
 
                "region":         "us-east-1",
 
98
                "name":            "ec2",
 
99
                "type":            "ec2",
 
100
                "default-series":  "precise",
 
101
                "region":          "us-east-1",
 
102
                "controller-uuid": ec2UUID,
 
103
                "uuid":            ec2UUID,
100
104
        })
101
105
        c.Assert(err, jc.ErrorIsNil)
 
106
        store.Controllers["ec2-controller"] = jujuclient.ControllerDetails{
 
107
                ControllerUUID: coretesting.ModelTag.Id(),
 
108
                CACert:         coretesting.CACert,
 
109
        }
 
110
        store.Accounts["ec2-controller"] = &jujuclient.ControllerAccounts{
 
111
                CurrentAccount: "admin@local",
 
112
        }
 
113
        store.BootstrapConfig["ec2-controller"] = jujuclient.BootstrapConfig{
 
114
                Config:      ec2Config.AllAttrs(),
 
115
                Cloud:       "ec2",
 
116
                CloudRegion: "us-east-1",
 
117
        }
102
118
 
 
119
        azureUUID := utils.MustNewUUID().String()
103
120
        azureConfig, err := config.New(config.UseDefaults, map[string]interface{}{
104
 
                "name":                      "azure",
105
 
                "type":                      "azure",
106
 
                "default-series":            "raring",
107
 
                "location":                  "West US",
108
 
                "endpoint":                  "https://management.azure.com",
109
 
                "storage-endpoint":          "https://core.windows.net",
110
 
                "subscription-id":           "foo",
111
 
                "application-id":            "bar",
112
 
                "application-password":      "baz",
113
 
                "tenant-id":                 "qux",
114
 
                "controller-resource-group": "fnord",
 
121
                "name":                 "azure",
 
122
                "type":                 "azure",
 
123
                "controller-uuid":      azureUUID,
 
124
                "uuid":                 azureUUID,
 
125
                "default-series":       "raring",
 
126
                "location":             "West US",
 
127
                "subscription-id":      "foo",
 
128
                "application-id":       "bar",
 
129
                "application-password": "baz",
 
130
                "tenant-id":            "qux",
115
131
        })
116
132
        c.Assert(err, jc.ErrorIsNil)
117
 
 
118
 
        store, err := configstore.Default()
119
 
        c.Assert(err, jc.ErrorIsNil)
120
 
 
121
 
        ec2 := store.CreateInfo("ec2")
122
 
        c.Assert(err, jc.ErrorIsNil)
123
 
        ec2.SetBootstrapConfig(ec2Config.AllAttrs())
124
 
        err = ec2.Write()
125
 
        c.Assert(err, jc.ErrorIsNil)
126
 
 
127
 
        azure := store.CreateInfo("azure")
128
 
        c.Assert(err, jc.ErrorIsNil)
129
 
        azure.SetBootstrapConfig(azureConfig.AllAttrs())
130
 
        err = azure.Write()
131
 
        c.Assert(err, jc.ErrorIsNil)
 
133
        store.Controllers["azure-controller"] = jujuclient.ControllerDetails{
 
134
                ControllerUUID: coretesting.ModelTag.Id(),
 
135
                CACert:         coretesting.CACert,
 
136
        }
 
137
        store.Accounts["azure-controller"] = &jujuclient.ControllerAccounts{
 
138
                CurrentAccount: "admin@local",
 
139
        }
 
140
        store.BootstrapConfig["azure-controller"] = jujuclient.BootstrapConfig{
 
141
                Config:               azureConfig.AllAttrs(),
 
142
                Cloud:                "azure",
 
143
                CloudRegion:          "West US",
 
144
                CloudEndpoint:        "https://management.azure.com",
 
145
                CloudStorageEndpoint: "https://core.windows.net",
 
146
                Credential:           "default",
 
147
        }
 
148
        store.Credentials["azure"] = cloud.CloudCredential{
 
149
                AuthCredentials: map[string]cloud.Credential{
 
150
                        "default": cloud.NewCredential(
 
151
                                cloud.UserPassAuthType,
 
152
                                map[string]string{
 
153
                                        "application-id":       "application-id",
 
154
                                        "subscription-id":      "subscription-id",
 
155
                                        "tenant-id":            "tenant-id",
 
156
                                        "application-password": "application-password",
 
157
                                },
 
158
                        ),
 
159
                },
 
160
        }
132
161
}
133
162
 
134
163
func (s *ValidateImageMetadataSuite) SetUpTest(c *gc.C) {
135
164
        s.FakeJujuXDGDataHomeSuite.SetUpTest(c)
136
165
        s.metadataDir = c.MkDir()
137
 
        cacheTestEnvConfig(c)
138
166
 
139
 
        err := modelcmd.WriteCurrentController("testing")
140
 
        c.Assert(err, jc.ErrorIsNil)
141
167
        s.store = jujuclienttesting.NewMemStore()
142
 
        s.store.Controllers["testing"] = jujuclient.ControllerDetails{}
143
 
        s.store.Accounts["testing"] = &jujuclient.ControllerAccounts{
144
 
                CurrentAccount: "admin@local",
145
 
        }
 
168
        cacheTestEnvConfig(c, s.store)
146
169
 
147
170
        s.PatchEnvironment("AWS_ACCESS_KEY_ID", "access")
148
171
        s.PatchEnvironment("AWS_SECRET_ACCESS_KEY", "secret")
164
187
 
165
188
func (s *ValidateImageMetadataSuite) assertEc2LocalMetadataUsingEnvironment(c *gc.C, stream string) {
166
189
        s.setupEc2LocalMetadata(c, "us-east-1", stream)
167
 
        ctx, err := runValidateImageMetadata(c, s.store, "-m", "ec2", "-d", s.metadataDir, "--stream", stream)
 
190
        ctx, err := runValidateImageMetadata(c, s.store, "-m", "ec2-controller:ec2", "-d", s.metadataDir, "--stream", stream)
168
191
        c.Assert(err, jc.ErrorIsNil)
169
192
        stdout := coretesting.Stdout(ctx)
170
193
        stderr := coretesting.Stderr(ctx)
187
210
        s.PatchEnvironment("EC2_ACCESS_KEY", "")
188
211
        s.PatchEnvironment("EC2_SECRET_KEY", "")
189
212
        s.setupEc2LocalMetadata(c, "us-east-1", "")
190
 
        _, err := runValidateImageMetadata(c, s.store, "-m", "ec2", "-d", s.metadataDir)
191
 
        c.Assert(err, gc.ErrorMatches, `.*model has no access-key or secret-key`)
 
213
        _, err := runValidateImageMetadata(c, s.store, "-m", "ec2-controller:ec2", "-d", s.metadataDir)
 
214
        c.Assert(err, gc.ErrorMatches, `detecting credentials.*AWS_SECRET_ACCESS_KEY not found in environment`)
192
215
}
193
216
 
194
217
func (s *ValidateImageMetadataSuite) TestEc2LocalMetadataWithManualParams(c *gc.C) {