1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the LGPLv3, see LICENCE file for details.
9
"gopkg.in/juju/names.v2"
12
type controllerSuite struct{}
14
var _ = gc.Suite(&controllerSuite{})
16
var parseControllerTagTests = []struct {
22
title: "empty tag fails",
24
err: names.InvalidTagError("", ""),
26
title: "valid controller-<uuid> tag",
27
tag: "controller-f47ac10b-58cc-4372-a567-0e02b2c3d479",
28
expected: names.NewControllerTag("f47ac10b-58cc-4372-a567-0e02b2c3d479"),
31
title: "invalid controller tag one word",
33
err: names.InvalidTagError("dave", ""),
35
title: "invalid controller tag prefix only",
37
err: names.InvalidTagError("controller-", names.ControllerTagKind),
39
title: "invalid controller tag hyphen separated words",
40
tag: "application-dave",
41
err: names.InvalidTagError("application-dave", names.ControllerTagKind),
43
title: "invalid controller tag non hyphen separated prefix",
44
tag: "controllerf47ac10b-58cc-4372-a567-0e02b2c3d479",
45
err: names.InvalidTagError("controllerf47ac10b-58cc-4372-a567-0e02b2c3d479", ""),
47
title: "invalid controller tag non hyphen separated terms",
48
tag: "controllerf47ac10b58cc4372a5670e02b2c3d479",
49
err: names.InvalidTagError("controllerf47ac10b58cc4372a5670e02b2c3d479", ""),
52
func (s *controllerSuite) TestParseControllerTag(c *gc.C) {
53
for i, t := range parseControllerTagTests {
54
c.Logf("test %d: %q %s", i, t.title, t.tag)
55
got, err := names.ParseControllerTag(t.tag)
56
if err != nil || t.err != nil {
57
c.Check(err, gc.DeepEquals, t.err)
60
c.Check(got, gc.FitsTypeOf, t.expected)
61
c.Check(got, gc.Equals, t.expected)
65
var controllerNameTest = []struct {
70
test: "Hyphenated true",
74
test: "Whitespsce false",
78
test: "Capital false",
82
test: "At sign false",
87
func (s *controllerSuite) TestControllerName(c *gc.C) {
88
for i, t := range controllerNameTest {
89
c.Logf("test %d: %q", i, t.name)
90
c.Check(names.IsValidControllerName(t.name), gc.Equals, t.expected)