29
31
s.stub = &testing.Stub{}
32
func (s DeploySuite) TestUploadOK(c *gc.C) {
33
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
37
resources: map[string]charmresource.Meta{
40
Type: charmresource.TypeFile,
45
Type: charmresource.TypeFile,
53
files := map[string]string{
54
"upload": "foobar.txt",
56
ids, err := du.upload(files)
57
c.Assert(err, jc.ErrorIsNil)
58
c.Check(ids, gc.DeepEquals, map[string]string{
59
"upload": "id-upload",
63
expectedStore := []charmresource.Resource{
65
Meta: du.resources["store"],
66
Origin: charmresource.OriginStore,
69
s.stub.CheckCall(c, 1, "AddPendingResources", "mysql", expectedStore)
70
s.stub.CheckCall(c, 2, "Open", "foobar.txt")
72
expectedUpload := charmresource.Resource{
73
Meta: du.resources["upload"],
74
Origin: charmresource.OriginUpload,
76
s.stub.CheckCall(c, 3, "AddPendingResource", "mysql", expectedUpload, deps.ReadSeekCloser)
79
func (s DeploySuite) TestUploadUnexpectedResource(c *gc.C) {
34
func (s DeploySuite) TestDeployResourcesWithoutFiles(c *gc.C) {
35
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
36
cURL := charm.MustParseURL("cs:~a-user/trusty/spam-5")
37
csMac := &macaroon.Macaroon{}
38
resources := map[string]charmresource.Meta{
40
Name: "store-tarball",
41
Type: charmresource.TypeFile,
46
Type: charmresource.TypeFile,
51
ids, err := DeployResources(DeployResourcesArgs{
54
CharmStoreMacaroon: csMac,
57
ResourcesMeta: resources,
59
c.Assert(err, jc.ErrorIsNil)
61
c.Check(ids, gc.DeepEquals, map[string]string{
62
"store-tarball": "id-store-tarball",
63
"store-zip": "id-store-zip",
66
s.stub.CheckCallNames(c, "AddPendingResources")
67
s.stub.CheckCall(c, 0, "AddPendingResources", "mysql", cURL, csMac, []charmresource.Resource{{
68
Meta: resources["store-tarball"],
69
Origin: charmresource.OriginStore,
72
Meta: resources["store-zip"],
73
Origin: charmresource.OriginStore,
78
func (s DeploySuite) TestUploadFilesOnly(c *gc.C) {
79
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
80
cURL := charm.MustParseURL("cs:~a-user/trusty/spam-5")
81
csMac := &macaroon.Macaroon{}
87
resources: map[string]charmresource.Meta{
90
Type: charmresource.TypeFile,
95
Type: charmresource.TypeFile,
103
files := map[string]string{
104
"upload": "foobar.txt",
106
revisions := map[string]int{}
107
ids, err := du.upload(files, revisions)
108
c.Assert(err, jc.ErrorIsNil)
109
c.Check(ids, gc.DeepEquals, map[string]string{
110
"upload": "id-upload",
114
s.stub.CheckCallNames(c, "Stat", "AddPendingResources", "Open", "AddPendingResource")
115
expectedStore := []charmresource.Resource{
117
Meta: du.resources["store"],
118
Origin: charmresource.OriginStore,
122
s.stub.CheckCall(c, 1, "AddPendingResources", "mysql", cURL, csMac, expectedStore)
123
s.stub.CheckCall(c, 2, "Open", "foobar.txt")
125
expectedUpload := charmresource.Resource{
126
Meta: du.resources["upload"],
127
Origin: charmresource.OriginUpload,
129
s.stub.CheckCall(c, 3, "AddPendingResource", "mysql", expectedUpload, "foobar.txt", deps.ReadSeekCloser)
132
func (s DeploySuite) TestUploadRevisionsOnly(c *gc.C) {
133
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
134
cURL := charm.MustParseURL("cs:~a-user/trusty/spam-5")
135
csMac := &macaroon.Macaroon{}
136
du := deployUploader{
141
resources: map[string]charmresource.Meta{
144
Type: charmresource.TypeFile,
149
Type: charmresource.TypeFile,
157
files := map[string]string{}
158
revisions := map[string]int{
161
ids, err := du.upload(files, revisions)
162
c.Assert(err, jc.ErrorIsNil)
163
c.Check(ids, gc.DeepEquals, map[string]string{
164
"upload": "id-upload",
168
s.stub.CheckCallNames(c, "AddPendingResources")
169
expectedStore := []charmresource.Resource{{
170
Meta: du.resources["store"],
171
Origin: charmresource.OriginStore,
174
Meta: du.resources["upload"],
175
Origin: charmresource.OriginStore,
178
s.stub.CheckCall(c, 0, "AddPendingResources", "mysql", cURL, csMac, expectedStore)
181
func (s DeploySuite) TestUploadFilesAndRevisions(c *gc.C) {
182
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
183
cURL := charm.MustParseURL("cs:~a-user/trusty/spam-5")
184
csMac := &macaroon.Macaroon{}
185
du := deployUploader{
190
resources: map[string]charmresource.Meta{
193
Type: charmresource.TypeFile,
198
Type: charmresource.TypeFile,
206
files := map[string]string{
207
"upload": "foobar.txt",
209
revisions := map[string]int{
212
ids, err := du.upload(files, revisions)
213
c.Assert(err, jc.ErrorIsNil)
214
c.Check(ids, gc.DeepEquals, map[string]string{
215
"upload": "id-upload",
219
s.stub.CheckCallNames(c, "Stat", "AddPendingResources", "Open", "AddPendingResource")
220
expectedStore := []charmresource.Resource{
222
Meta: du.resources["store"],
223
Origin: charmresource.OriginStore,
227
s.stub.CheckCall(c, 1, "AddPendingResources", "mysql", cURL, csMac, expectedStore)
228
s.stub.CheckCall(c, 2, "Open", "foobar.txt")
230
expectedUpload := charmresource.Resource{
231
Meta: du.resources["upload"],
232
Origin: charmresource.OriginUpload,
234
s.stub.CheckCall(c, 3, "AddPendingResource", "mysql", expectedUpload, "foobar.txt", deps.ReadSeekCloser)
237
func (s DeploySuite) TestUploadUnexpectedResourceFile(c *gc.C) {
80
238
deps := uploadDeps{s.stub, rsc{&bytes.Buffer{}}}
81
239
du := deployUploader{
82
240
serviceID: "mysql",