4
gc "launchpad.net/gocheck"
6
"launchpad.net/juju-core/state/api/params"
7
"launchpad.net/juju-core/state/apiserver/machine"
8
apiservertesting "launchpad.net/juju-core/state/apiserver/testing"
11
type agentSuite struct {
13
agent *machine.AgentAPI
16
var _ = gc.Suite(&agentSuite{})
18
func (s *agentSuite) SetUpTest(c *gc.C) {
19
s.commonSuite.SetUpTest(c)
21
// Create a machiner API for machine 1.
22
api, err := machine.NewAgentAPI(s.State, s.authorizer)
23
c.Assert(err, gc.IsNil)
27
func (s *agentSuite) TestAgentFailsWithNonMachineAgentUser(c *gc.C) {
29
auth.MachineAgent = false
30
api, err := machine.NewAgentAPI(s.State, auth)
31
c.Assert(err, gc.NotNil)
32
c.Assert(api, gc.IsNil)
33
c.Assert(err, gc.ErrorMatches, "permission denied")
36
func (s *agentSuite) TestGetMachines(c *gc.C) {
37
err := s.machine1.Destroy()
38
c.Assert(err, gc.IsNil)
39
results := s.agent.GetMachines(params.Entities{
40
Entities: []params.Entity{
46
c.Assert(results, gc.DeepEquals, params.MachineAgentGetMachinesResults{
47
Machines: []params.MachineAgentGetMachinesResult{
50
Jobs: []params.MachineJob{params.JobHostUnits},
52
{Error: apiservertesting.ErrUnauthorized},
53
{Error: apiservertesting.ErrUnauthorized},
58
func (s *agentSuite) TestGetNotFoundMachine(c *gc.C) {
59
err := s.machine1.Destroy()
60
c.Assert(err, gc.IsNil)
61
err = s.machine1.EnsureDead()
62
c.Assert(err, gc.IsNil)
63
err = s.machine1.Remove()
64
c.Assert(err, gc.IsNil)
65
results := s.agent.GetMachines(params.Entities{
66
Entities: []params.Entity{{Tag: "machine-1"}},
68
c.Assert(err, gc.IsNil)
69
c.Assert(results, gc.DeepEquals, params.MachineAgentGetMachinesResults{
70
Machines: []params.MachineAgentGetMachinesResult{{
72
Code: params.CodeNotFound,
73
Message: "machine 1 not found",
79
func (s *agentSuite) TestSetPasswords(c *gc.C) {
80
results, err := s.agent.SetPasswords(params.PasswordChanges{
81
Changes: []params.PasswordChange{
82
{Tag: "machine-0", Password: "xxx-12345678901234567890"},
83
{Tag: "machine-1", Password: "yyy-12345678901234567890"},
84
{Tag: "machine-42", Password: "zzz-12345678901234567890"},
87
c.Assert(err, gc.IsNil)
88
c.Assert(results, gc.DeepEquals, params.ErrorResults{
89
Results: []params.ErrorResult{
90
{apiservertesting.ErrUnauthorized},
92
{apiservertesting.ErrUnauthorized},
95
err = s.machine1.Refresh()
96
c.Assert(err, gc.IsNil)
97
changed := s.machine1.PasswordValid("yyy-12345678901234567890")
98
c.Assert(changed, gc.Equals, true)