5
. "launchpad.net/gocheck"
6
"launchpad.net/juju-core/testing"
10
type GetEnvironmentSuite struct {
14
var _ = Suite(&GetEnvironmentSuite{})
16
var singleValueTests = []struct {
28
key: "authorized-keys",
32
err: `Key "unknown" not found in "dummyenv" environment.`,
36
func (s *GetEnvironmentSuite) TestSingleValue(c *C) {
38
for _, t := range singleValueTests {
39
context, err := testing.RunCommand(c, &GetEnvironmentCommand{}, []string{t.key})
41
c.Assert(err, ErrorMatches, t.err)
43
output := strings.TrimSpace(testing.Stdout(context))
45
c.Assert(output, Equals, t.output)
50
func (s *GetEnvironmentSuite) TestTooManyArgs(c *C) {
51
_, err := testing.RunCommand(c, &GetEnvironmentCommand{}, []string{"name", "type"})
52
c.Assert(err, ErrorMatches, `unrecognized args: \["type"\]`)
55
func (s *GetEnvironmentSuite) TestAllValues(c *C) {
57
context, _ := testing.RunCommand(c, &GetEnvironmentCommand{}, []string{})
58
output := strings.TrimSpace(testing.Stdout(context))
60
// Make sure that all the environment keys are there.
61
any := "(.|\n)*" // because . doesn't match new lines.
62
for key, _ := range s.Conn.Environ.Config().AllAttrs() {
63
c.Assert(output, Matches, fmt.Sprintf("%s%s: %s", any, key, any))
67
type SetEnvironmentSuite struct {
71
var _ = Suite(&SetEnvironmentSuite{})
73
var setEnvInitTests = []struct {
80
err: "No key, value pairs specified",
82
args: []string{"agent-version=1.2.3"},
83
err: `agent-version must be set via upgrade-juju`,
85
args: []string{"missing"},
86
err: `Missing "=" in arg 1: "missing"`,
88
args: []string{"key=value"},
93
args: []string{"key=value", "key=other"},
94
err: `Key "key" specified more than once`,
96
args: []string{"key=value", "other=embedded=equal"},
99
"other": "embedded=equal",
104
func (s *SetEnvironmentSuite) TestInit(c *C) {
106
for _, t := range setEnvInitTests {
107
command := &SetEnvironmentCommand{}
108
testing.TestInit(c, command, t.args, t.err)
109
if t.expected != nil {
110
c.Assert(command.values, DeepEquals, t.expected)
115
func (s *SetEnvironmentSuite) TestChangeDefaultSeries(c *C) {
116
_, err := testing.RunCommand(c, &SetEnvironmentCommand{}, []string{"default-series=raring"})
119
stateConfig, err := s.State.EnvironConfig()
121
c.Assert(stateConfig.DefaultSeries(), Equals, "raring")
124
func (s *SetEnvironmentSuite) TestChangeMultipleValues(c *C) {
125
_, err := testing.RunCommand(c, &SetEnvironmentCommand{}, []string{"default-series=spartan", "broken=nope", "secret=sekrit"})
128
stateConfig, err := s.State.EnvironConfig()
130
attrs := stateConfig.AllAttrs()
131
c.Assert(attrs["default-series"].(string), Equals, "spartan")
132
c.Assert(attrs["broken"].(string), Equals, "nope")
133
c.Assert(attrs["secret"].(string), Equals, "sekrit")
136
func (s *SetEnvironmentSuite) TestChangeAsCommandPair(c *C) {
137
_, err := testing.RunCommand(c, &SetEnvironmentCommand{}, []string{"default-series=raring"})
140
context, err := testing.RunCommand(c, &GetEnvironmentCommand{}, []string{"default-series"})
142
output := strings.TrimSpace(testing.Stdout(context))
144
c.Assert(output, Equals, "raring")
147
var immutableConfigTests = map[string]string{
150
"firewall-mode": "global",
153
func (s *SetEnvironmentSuite) TestImmutableConfigValues(c *C) {
154
for name, value := range immutableConfigTests {
155
param := fmt.Sprintf("%s=%s", name, value)
156
_, err := testing.RunCommand(c, &SetEnvironmentCommand{}, []string{param})
157
errorPattern := fmt.Sprintf("cannot change %s from .* to %q", name, value)
158
c.Assert(err, ErrorMatches, errorPattern)