~nskaggs/+junk/xenial-test

« back to all changes in this revision

Viewing changes to src/gopkg.in/juju/names.v2/controller_test.go

  • Committer: Nicholas Skaggs
  • Date: 2016-10-24 20:56:05 UTC
  • Revision ID: nicholas.skaggs@canonical.com-20161024205605-z8lta0uvuhtxwzwl
Initi with beta15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the LGPLv3, see LICENCE file for details.
 
3
 
 
4
package names_test
 
5
 
 
6
import (
 
7
        gc "gopkg.in/check.v1"
 
8
 
 
9
        "gopkg.in/juju/names.v2"
 
10
)
 
11
 
 
12
type controllerSuite struct{}
 
13
 
 
14
var _ = gc.Suite(&controllerSuite{})
 
15
 
 
16
var parseControllerTagTests = []struct {
 
17
        title    string
 
18
        tag      string
 
19
        expected names.Tag
 
20
        err      error
 
21
}{{
 
22
        title: "empty tag fails",
 
23
        tag:   "",
 
24
        err:   names.InvalidTagError("", ""),
 
25
}, {
 
26
        title:    "valid controller-<uuid> tag",
 
27
        tag:      "controller-f47ac10b-58cc-4372-a567-0e02b2c3d479",
 
28
        expected: names.NewControllerTag("f47ac10b-58cc-4372-a567-0e02b2c3d479"),
 
29
}, {
 
30
 
 
31
        title: "invalid controller tag one word",
 
32
        tag:   "dave",
 
33
        err:   names.InvalidTagError("dave", ""),
 
34
}, {
 
35
        title: "invalid controller tag prefix only",
 
36
        tag:   "controller-",
 
37
        err:   names.InvalidTagError("controller-", names.ControllerTagKind),
 
38
}, {
 
39
        title: "invalid controller tag hyphen separated words",
 
40
        tag:   "application-dave",
 
41
        err:   names.InvalidTagError("application-dave", names.ControllerTagKind),
 
42
}, {
 
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", ""),
 
46
}, {
 
47
        title: "invalid controller tag non hyphen separated terms",
 
48
        tag:   "controllerf47ac10b58cc4372a5670e02b2c3d479",
 
49
        err:   names.InvalidTagError("controllerf47ac10b58cc4372a5670e02b2c3d479", ""),
 
50
}}
 
51
 
 
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)
 
58
                        continue
 
59
                }
 
60
                c.Check(got, gc.FitsTypeOf, t.expected)
 
61
                c.Check(got, gc.Equals, t.expected)
 
62
        }
 
63
}
 
64
 
 
65
var controllerNameTest = []struct {
 
66
        test     string
 
67
        name     string
 
68
        expected bool
 
69
}{{
 
70
        test:     "Hyphenated true",
 
71
        name:     "foo-bar",
 
72
        expected: true,
 
73
}, {
 
74
        test:     "Whitespsce false",
 
75
        name:     "foo bar",
 
76
        expected: false,
 
77
}, {
 
78
        test:     "Capital false",
 
79
        name:     "fooBar",
 
80
        expected: false,
 
81
}, {
 
82
        test:     "At sign false",
 
83
        name:     "foo@bar",
 
84
        expected: false,
 
85
}}
 
86
 
 
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)
 
91
        }
 
92
}