github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/apiserver/facades/agent/hostkeyreporter/facade_test.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package hostkeyreporter_test
     5  
     6  import (
     7  	jujutesting "github.com/juju/testing"
     8  	jc "github.com/juju/testing/checkers"
     9  	gc "gopkg.in/check.v1"
    10  	"gopkg.in/juju/names.v2"
    11  
    12  	"github.com/juju/juju/apiserver/facades/agent/hostkeyreporter"
    13  	"github.com/juju/juju/apiserver/params"
    14  	apiservertesting "github.com/juju/juju/apiserver/testing"
    15  	"github.com/juju/juju/state"
    16  	"github.com/juju/juju/testing"
    17  )
    18  
    19  type facadeSuite struct {
    20  	testing.BaseSuite
    21  	backend    *mockBackend
    22  	authorizer *apiservertesting.FakeAuthorizer
    23  	facade     *hostkeyreporter.Facade
    24  }
    25  
    26  var _ = gc.Suite(&facadeSuite{})
    27  
    28  func (s *facadeSuite) SetUpTest(c *gc.C) {
    29  	s.backend = new(mockBackend)
    30  	s.authorizer = new(apiservertesting.FakeAuthorizer)
    31  	facade, err := hostkeyreporter.New(s.backend, nil, s.authorizer)
    32  	c.Assert(err, jc.ErrorIsNil)
    33  	s.facade = facade
    34  }
    35  
    36  func (s *facadeSuite) TestReportKeys(c *gc.C) {
    37  	s.authorizer.Tag = names.NewMachineTag("1")
    38  
    39  	args := params.SSHHostKeySet{
    40  		EntityKeys: []params.SSHHostKeys{
    41  			{
    42  				Tag:        names.NewMachineTag("0").String(),
    43  				PublicKeys: []string{"rsa0", "dsa0"},
    44  			}, {
    45  				Tag:        names.NewMachineTag("1").String(),
    46  				PublicKeys: []string{"rsa1", "dsa1"},
    47  			},
    48  		},
    49  	}
    50  	result, err := s.facade.ReportKeys(args)
    51  	c.Assert(err, jc.ErrorIsNil)
    52  
    53  	c.Assert(result, gc.DeepEquals, params.ErrorResults{
    54  		Results: []params.ErrorResult{
    55  			{Error: apiservertesting.ErrUnauthorized},
    56  			{nil},
    57  		},
    58  	})
    59  	s.backend.stub.CheckCalls(c, []jujutesting.StubCall{{
    60  		"SetSSHHostKeys",
    61  		[]interface{}{
    62  			names.NewMachineTag("1"),
    63  			state.SSHHostKeys{"rsa1", "dsa1"},
    64  		},
    65  	}})
    66  }
    67  
    68  type mockBackend struct {
    69  	stub jujutesting.Stub
    70  }
    71  
    72  func (backend *mockBackend) SetSSHHostKeys(tag names.MachineTag, keys state.SSHHostKeys) error {
    73  	backend.stub.AddCall("SetSSHHostKeys", tag, keys)
    74  	return nil
    75  }