1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package charmstore // import "gopkg.in/juju/charmstore.v5-unstable/internal/charmstore"
8
"gopkg.in/juju/charm.v6-unstable"
9
"gopkg.in/juju/charmrepo.v2-unstable/csclient/params"
10
"gopkg.in/macaroon-bakery.v1/bakery"
12
"gopkg.in/juju/charmstore.v5-unstable/internal/router"
13
"gopkg.in/juju/charmstore.v5-unstable/internal/storetesting"
16
type commonSuite struct {
17
storetesting.IsolatedMgoESSuite
21
// addRequiredCharms adds any charms required by the given
22
// bundle that are not already in the store.
23
func (s *commonSuite) addRequiredCharms(c *gc.C, bundle charm.Bundle) {
24
store := s.newStore(c, true)
26
for _, svc := range bundle.Data().Services {
27
u := charm.MustParseURL(svc.Charm)
28
if _, err := store.FindBestEntity(u, params.NoChannel, nil); err == nil {
34
var rurl router.ResolvedURL
36
ch := storetesting.Charms.CharmDir(u.Name)
37
if len(ch.Meta().Series) == 0 && u.Series == "" {
38
rurl.URL.Series = "trusty"
41
rurl.URL.User = "charmers"
42
rurl.PromulgatedRevision = rurl.URL.Revision
44
rurl.PromulgatedRevision = -1
46
err := store.AddCharmWithArchive(&rurl, ch)
47
c.Assert(err, gc.IsNil)
48
err = store.Publish(&rurl, params.StableChannel)
49
c.Assert(err, gc.IsNil)
53
func (s *commonSuite) newStore(c *gc.C, withES bool) *Store {
56
si = &SearchIndex{s.ES, s.TestIndex}
58
p, err := NewPool(s.Session.DB("juju_test"), si, &bakery.NewServiceParams{}, ServerParams{})
59
c.Assert(err, gc.IsNil)