func (s *unitUpgraderSuite) TestUpgraderAPIRefusesNonUnitAgent(c *gc.C) { anAuthorizer := s.authorizer anAuthorizer.Tag = names.NewMachineTag("7") anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer) c.Check(err, gc.NotNil) c.Check(anUpgrader, gc.IsNil) c.Assert(err, gc.ErrorMatches, "permission denied") }
func (s *unitUpgraderSuite) TestDesiredVersionRefusesWrongAgent(c *gc.C) { anAuthorizer := s.authorizer anAuthorizer.Tag = names.NewUnitTag("wordpress/12354") anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer) c.Check(err, jc.ErrorIsNil) args := params.Entities{ Entities: []params.Entity{{Tag: s.rawUnit.Tag().String()}}, } results, err := anUpgrader.DesiredVersion(args) // It is not an error to make the request, but the specific item is rejected c.Assert(err, jc.ErrorIsNil) c.Check(results.Results, gc.HasLen, 1) toolResult := results.Results[0] c.Assert(toolResult.Error, gc.DeepEquals, apiservertesting.ErrUnauthorized) }
func (s *unitUpgraderSuite) TestWatchAPIVersionRefusesWrongAgent(c *gc.C) { // We are a unit agent, but not the one we are trying to track anAuthorizer := s.authorizer anAuthorizer.Tag = names.NewUnitTag("wordpress/12354") anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer) c.Check(err, jc.ErrorIsNil) args := params.Entities{ Entities: []params.Entity{{Tag: s.rawUnit.Tag().String()}}, } results, err := anUpgrader.WatchAPIVersion(args) // It is not an error to make the request, but the specific item is rejected c.Assert(err, jc.ErrorIsNil) c.Check(results.Results, gc.HasLen, 1) c.Check(results.Results[0].NotifyWatcherId, gc.Equals, "") c.Assert(results.Results[0].Error, gc.DeepEquals, apiservertesting.ErrUnauthorized) }
func (s *unitUpgraderSuite) TestSetToolsRefusesWrongAgent(c *gc.C) { anAuthorizer := s.authorizer anAuthorizer.Tag = names.NewUnitTag("wordpress/12354") anUpgrader, err := upgrader.NewUnitUpgraderAPI(s.State, s.resources, anAuthorizer) c.Check(err, gc.IsNil) args := params.EntitiesVersion{ AgentTools: []params.EntityVersion{{ Tag: s.rawUnit.Tag().String(), Tools: ¶ms.Version{ Version: version.Current, }, }}, } results, err := anUpgrader.SetTools(args) c.Assert(results.Results, gc.HasLen, 1) c.Assert(results.Results[0].Error, gc.DeepEquals, apiservertesting.ErrUnauthorized) }
func (s *unitUpgraderSuite) SetUpTest(c *gc.C) { s.JujuConnSuite.SetUpTest(c) s.resources = common.NewResources() s.AddCleanup(func(_ *gc.C) { s.resources.StopAll() }) // Create a machine and unit to work with var err error _, err = s.State.AddMachine("quantal", state.JobHostUnits) c.Assert(err, jc.ErrorIsNil) svc := s.AddTestingService(c, "wordpress", s.AddTestingCharm(c, "wordpress")) s.rawUnit, err = svc.AddUnit() c.Assert(err, jc.ErrorIsNil) // Assign the unit to the machine. s.rawMachine, err = s.rawUnit.AssignToCleanMachine() c.Assert(err, jc.ErrorIsNil) // The default auth is as the unit agent s.authorizer = apiservertesting.FakeAuthorizer{ Tag: s.rawUnit.Tag(), } s.upgrader, err = upgrader.NewUnitUpgraderAPI(s.State, s.resources, s.authorizer) c.Assert(err, jc.ErrorIsNil) }