~ubuntu-branches/ubuntu/wily/juju-core/wily

« back to all changes in this revision

Viewing changes to src/launchpad.net/juju-core/state/apiserver/rsyslog/rsyslog_test.go

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-28 16:53:15 UTC
  • mfrom: (1.1.19)
  • Revision ID: package-import@ubuntu.com-20140228165315-g8n1ds0jrtekhxq6
Tags: 1.17.4-0ubuntu1
* New upstream point release (LP: #1261628):
  - https://launchpad.net/juju-core/trunk/1.17.4
  - d/control: Prefer juju-mongodb over mongodb-server for juju-local
    package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2013 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package rsyslog_test
 
5
 
 
6
import (
 
7
        "encoding/pem"
 
8
 
 
9
        gc "launchpad.net/gocheck"
 
10
 
 
11
        "launchpad.net/juju-core/juju/testing"
 
12
        "launchpad.net/juju-core/state"
 
13
        "launchpad.net/juju-core/state/api/params"
 
14
        apirsyslog "launchpad.net/juju-core/state/api/rsyslog"
 
15
        "launchpad.net/juju-core/state/apiserver/common"
 
16
        commontesting "launchpad.net/juju-core/state/apiserver/common/testing"
 
17
        "launchpad.net/juju-core/state/apiserver/rsyslog"
 
18
        apiservertesting "launchpad.net/juju-core/state/apiserver/testing"
 
19
        coretesting "launchpad.net/juju-core/testing"
 
20
        jc "launchpad.net/juju-core/testing/checkers"
 
21
)
 
22
 
 
23
type rsyslogSuite struct {
 
24
        testing.JujuConnSuite
 
25
        *commontesting.EnvironWatcherTest
 
26
        authorizer apiservertesting.FakeAuthorizer
 
27
        resources  *common.Resources
 
28
}
 
29
 
 
30
var _ = gc.Suite(&rsyslogSuite{})
 
31
 
 
32
func (s *rsyslogSuite) SetUpTest(c *gc.C) {
 
33
        s.JujuConnSuite.SetUpTest(c)
 
34
        s.authorizer = apiservertesting.FakeAuthorizer{
 
35
                LoggedIn:       true,
 
36
                EnvironManager: true,
 
37
        }
 
38
        s.resources = common.NewResources()
 
39
        api, err := rsyslog.NewRsyslogAPI(s.State, s.resources, s.authorizer)
 
40
        c.Assert(err, gc.IsNil)
 
41
        s.EnvironWatcherTest = commontesting.NewEnvironWatcherTest(
 
42
                api, s.State, s.resources, commontesting.NoSecrets)
 
43
}
 
44
 
 
45
func verifyRsyslogCACert(c *gc.C, st *apirsyslog.State, expected []byte) {
 
46
        cfg, err := st.EnvironConfig()
 
47
        c.Assert(err, gc.IsNil)
 
48
        c.Assert(cfg.RsyslogCACert(), gc.DeepEquals, expected)
 
49
}
 
50
 
 
51
func (s *rsyslogSuite) TestSetRsyslogCert(c *gc.C) {
 
52
        st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
 
53
        err := st.Rsyslog().SetRsyslogCert([]byte(coretesting.CACert))
 
54
        c.Assert(err, gc.IsNil)
 
55
        verifyRsyslogCACert(c, st.Rsyslog(), []byte(coretesting.CACert))
 
56
}
 
57
 
 
58
func (s *rsyslogSuite) TestSetRsyslogCertNil(c *gc.C) {
 
59
        st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
 
60
        err := st.Rsyslog().SetRsyslogCert(nil)
 
61
        c.Assert(err, gc.ErrorMatches, "no certificates found")
 
62
        verifyRsyslogCACert(c, st.Rsyslog(), nil)
 
63
}
 
64
 
 
65
func (s *rsyslogSuite) TestSetRsyslogCertInvalid(c *gc.C) {
 
66
        st, _ := s.OpenAPIAsNewMachine(c, state.JobManageEnviron)
 
67
        err := st.Rsyslog().SetRsyslogCert(pem.EncodeToMemory(&pem.Block{
 
68
                Type:  "CERTIFICATE",
 
69
                Bytes: []byte("not a valid certificate"),
 
70
        }))
 
71
        c.Assert(err, gc.ErrorMatches, ".*structure error.*")
 
72
        verifyRsyslogCACert(c, st.Rsyslog(), nil)
 
73
}
 
74
 
 
75
func (s *rsyslogSuite) TestSetRsyslogCertPerms(c *gc.C) {
 
76
        st, _ := s.OpenAPIAsNewMachine(c, state.JobHostUnits)
 
77
        err := st.Rsyslog().SetRsyslogCert([]byte(coretesting.CACert))
 
78
        c.Assert(err, gc.ErrorMatches, "invalid entity name or password")
 
79
        c.Assert(err, jc.Satisfies, params.IsCodeUnauthorized)
 
80
        // Verify no change was effected.
 
81
        verifyRsyslogCACert(c, st.Rsyslog(), nil)
 
82
}