53
50
s.commonSuite.SetUpTest(c)
54
51
s.addCharmsToStore(c)
55
52
// hide the riak charm
56
err := s.store.DB.BaseEntities().UpdateId(
57
charm.MustParseURL("cs:~charmers/riak"),
58
bson.D{{"$set", map[string]mongodoc.ACL{
60
Read: []string{"charmers", "test-user"},
64
c.Assert(err, gc.IsNil)
65
err = s.store.UpdateSearch(newResolvedURL("~charmers/trusty/riak-0", 0))
66
c.Assert(err, gc.IsNil)
67
err = s.esSuite.ES.RefreshIndex(s.esSuite.TestIndex)
53
err := s.store.SetPerms(charm.MustParseURL("cs:~charmers/riak"), "stable.read", "charmers", "test-user")
68
54
c.Assert(err, gc.IsNil)
71
57
func (s *ListSuite) addCharmsToStore(c *gc.C) {
72
58
for name, id := range exportListTestCharms {
73
err := s.store.AddCharmWithArchive(id, getCharm(name))
74
c.Assert(err, gc.IsNil)
75
err = s.store.SetPerms(&id.URL, "read", params.Everyone, id.URL.User)
76
c.Assert(err, gc.IsNil)
77
err = s.store.UpdateSearch(id)
78
c.Assert(err, gc.IsNil)
59
s.addPublicCharm(c, getListCharm(name), id)
80
61
for name, id := range exportListTestBundles {
81
err := s.store.AddBundleWithArchive(id, getListBundle(name))
82
c.Assert(err, gc.IsNil)
83
err = s.store.SetPerms(&id.URL, "read", params.Everyone, id.URL.User)
84
c.Assert(err, gc.IsNil)
85
err = s.store.UpdateSearch(id)
86
c.Assert(err, gc.IsNil)
62
s.addPublicBundle(c, getListBundle(name), id, false)
90
func getListCharm(name string) *charm.CharmDir {
66
func getListCharm(name string) *storetesting.Charm {
91
67
ca := storetesting.Charms.CharmDir(name)
92
ca.Meta().Categories = append(strings.Split(name, "-"), "bar")
69
meta.Categories = append(strings.Split(name, "-"), "bar")
70
return storetesting.NewCharm(meta)
96
func getListBundle(name string) *charm.BundleDir {
73
func getListBundle(name string) *storetesting.Bundle {
97
74
ba := storetesting.Charms.BundleDir(name)
98
ba.Data().Tags = append(strings.Split(name, "-"), "baz")
76
data.Tags = append(strings.Split(name, "-"), "baz")
77
return storetesting.NewBundle(data)
102
80
func (s *ListSuite) TestSuccessfulList(c *gc.C) {
185
163
about: "archive-size",
186
164
query: "name=mysql&include=archive-size",
187
165
meta: map[string]interface{}{
188
"archive-size": params.ArchiveSizeResponse{438},
166
"archive-size": params.ArchiveSizeResponse{getListCharm("mysql").Size()},
191
169
about: "bundle-metadata",
222
200
query: "name=wordpress&type=charm&include=charm-related",
223
201
meta: map[string]interface{}{
224
202
"charm-related": params.RelatedResponse{
225
Provides: map[string][]params.MetaAnyResponse{
203
Provides: map[string][]params.EntityResult{
228
206
Id: exportTestCharms["mysql"].PreferredURL(),
241
219
query: "name=wordpress&type=charm&include=charm-related&include=charm-config",
242
220
meta: map[string]interface{}{
243
221
"charm-related": params.RelatedResponse{
244
Provides: map[string][]params.MetaAnyResponse{
222
Provides: map[string][]params.EntityResult{
247
225
Id: exportTestCharms["mysql"].PreferredURL(),
293
271
// Now remove one of the blobs. The list should still
294
272
// work, but only return a single result.
295
blobName, _, err := s.store.BlobNameAndHash(newResolvedURL("~charmers/precise/wordpress-23", 23))
273
entity, err := s.store.FindEntity(newResolvedURL("~charmers/precise/wordpress-23", 23), nil)
296
274
c.Assert(err, gc.IsNil)
297
err = s.store.BlobStore.Remove(blobName)
275
err = s.store.BlobStore.Remove(entity.BlobName)
298
276
c.Assert(err, gc.IsNil)
300
278
// Now list again - we should get one result less
413
391
func (s *ListSuite) TestGetLatestRevisionOnly(c *gc.C) {
414
392
id := newResolvedURL("cs:~charmers/precise/wordpress-24", 24)
415
err := s.store.AddCharmWithArchive(id, getCharm("wordpress"))
416
c.Assert(err, gc.IsNil)
417
err = s.store.SetPerms(&id.URL, "read", params.Everyone, id.URL.User)
393
s.addPublicCharm(c, getListCharm("wordpress"), id)
419
395
testresults := []*router.ResolvedURL{
420
396
exportTestBundles["wordpress-simple"],
428
404
URL: storeURL("list"),
430
406
var sr params.ListResponse
431
err = json.Unmarshal(rec.Body.Bytes(), &sr)
407
err := json.Unmarshal(rec.Body.Bytes(), &sr)
432
408
c.Assert(err, gc.IsNil)
433
409
c.Assert(sr.Results, gc.HasLen, 4, gc.Commentf("expected %#v", testresults))
434
410
c.Logf("results: %s", rec.Body.Bytes())