func (s *ModelsFileSuite) TestMigrateLegacyLocal(c *gc.C) { err := ioutil.WriteFile(jujuclient.JujuModelsPath(), []byte(testLegacyModelsYAML), 0644) c.Assert(err, jc.ErrorIsNil) models, err := jujuclient.ReadModelsFile(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) migratedData, err := ioutil.ReadFile(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) migratedModels, err := jujuclient.ParseModels(migratedData) c.Assert(err, jc.ErrorIsNil) c.Assert(string(migratedData), jc.DeepEquals, testModelsYAML[1:]) c.Assert(migratedModels, jc.DeepEquals, models) }
func (s *ModelsSuite) TestSetCurrentModel(c *gc.C) { err := s.store.SetCurrentModel("kontroll", "admin/admin") c.Assert(err, jc.ErrorIsNil) all, err := jujuclient.ReadModelsFile(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) c.Assert(all["kontroll"].CurrentModel, gc.Equals, "admin/admin") }
func (s *ModelsSuite) TestAllModelsNoFile(c *gc.C) { err := os.Remove(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) models, err := s.store.AllModels("not-found") c.Assert(err, gc.ErrorMatches, "models for controller not-found not found") c.Assert(models, gc.HasLen, 0) }
func (s *ModelsSuite) TestModelByNameNoFile(c *gc.C) { err := os.Remove(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) details, err := s.store.ModelByName("not-found", "admin/admin") c.Assert(err, gc.ErrorMatches, "models for controller not-found not found") c.Assert(details, gc.IsNil) }
func (s *ModelsFileSuite) TestReadEmptyFile(c *gc.C) { err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("models.yaml"), []byte(""), 0600) c.Assert(err, jc.ErrorIsNil) models, err := jujuclient.ReadModelsFile(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) c.Assert(models, gc.HasLen, 0) }
func (s *ModelsSuite) TestRemoveControllerRemovesModels(c *gc.C) { store := jujuclient.NewFileClientStore() err := store.AddController("kontroll", jujuclient.ControllerDetails{ ControllerUUID: "abc", CACert: "woop", }) c.Assert(err, jc.ErrorIsNil) err = store.RemoveController("kontroll") c.Assert(err, jc.ErrorIsNil) models, err := jujuclient.ReadModelsFile(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) _, ok := models["admin/kontroll"] c.Assert(ok, jc.IsFalse) // kontroll models are removed }
func (s *ModelsSuite) TestUpdateModelEmptyModels(c *gc.C) { // This test exists to exercise a bug caused by the // presence of a file with an empty "models" field, // that would lead to a panic. err := ioutil.WriteFile(jujuclient.JujuModelsPath(), []byte(` controllers: ctrl: models: `[1:]), 0644) c.Assert(err, jc.ErrorIsNil) testModelDetails := jujuclient.ModelDetails{"test.uuid"} err = s.store.UpdateModel("ctrl", "admin/admin", testModelDetails) c.Assert(err, jc.ErrorIsNil) models, err := s.store.AllModels("ctrl") c.Assert(err, jc.ErrorIsNil) c.Assert(models, jc.DeepEquals, map[string]jujuclient.ModelDetails{ "admin/admin": testModelDetails, }) }
func (s *ModelsSuite) TestRemoveModelNoFile(c *gc.C) { err := os.Remove(jujuclient.JujuModelsPath()) c.Assert(err, jc.ErrorIsNil) err = s.store.RemoveModel("not-found", "admin/admin") c.Assert(err, jc.Satisfies, errors.IsNotFound) }