func (s *charmVersionSuite) TestEnvironmentUUIDUsed(c *gc.C) { s.AddMachine(c, "0", state.JobManageModel) s.SetupScenario(c) // Set up a charm store server that stores the request header. var header http.Header received := false srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // the first request is the one with the UUID. if !received { header = r.Header received = true } s.Handler.ServeHTTP(w, r) })) defer srv.Close() // Point the charm repo initializer to the testing server. s.PatchValue(&charmrevisionupdater.NewCharmStoreClient, func() charmstore.Client { var config charmstore.ClientConfig csURL, err := url.Parse(srv.URL) c.Assert(err, jc.ErrorIsNil) config.URL = csURL return charmstore.NewClient(config) }) result, err := s.charmrevisionupdater.UpdateLatestRevisions() c.Assert(err, jc.ErrorIsNil) c.Assert(result.Error, gc.IsNil) env, err := s.State.Model() c.Assert(err, jc.ErrorIsNil) c.Assert(header.Get(charmrepo.JujuMetadataHTTPHeader), gc.Equals, "environment_uuid="+env.UUID()) }
func (s *CharmSuite) SetUpTest(c *gc.C) { db := s.jcSuite.Session.DB("juju-testing") params := charmstore.ServerParams{ AuthUsername: "******", AuthPassword: "******", } handler, err := charmstore.NewServer(db, nil, "", params, charmstore.V5) c.Assert(err, jc.ErrorIsNil) s.Handler = handler s.Server = httptest.NewServer(handler) s.Client = csclient.New(csclient.Params{ URL: s.Server.URL, User: params.AuthUsername, Password: params.AuthPassword, }) urls := map[string]string{ "mysql": "quantal/mysql-23", "dummy": "quantal/dummy-24", "riak": "quantal/riak-25", "wordpress": "quantal/wordpress-26", "logging": "quantal/logging-27", } for name, url := range urls { testcharms.UploadCharm(c, s.Client, url, name) } s.jcSuite.PatchValue(&charmrepo.CacheDir, c.MkDir()) // Patch the charm repo initializer function: it is replaced with a charm // store repo pointing to the testing server. s.jcSuite.PatchValue(&charmrevisionupdater.NewCharmStoreClient, func() jujucharmstore.Client { var config jujucharmstore.ClientConfig csURL, err := url.Parse(s.Server.URL) c.Assert(err, jc.ErrorIsNil) config.URL = csURL return jujucharmstore.NewClient(config) }) s.charms = make(map[string]*state.Charm) }