~juju-qa/ubuntu/xenial/juju/xenial-2.0-beta3

« back to all changes in this revision

Viewing changes to src/github.com/juju/juju/core/description/user_test.go

  • Committer: Martin Packman
  • Date: 2016-03-30 19:31:08 UTC
  • mfrom: (1.1.41)
  • Revision ID: martin.packman@canonical.com-20160330193108-h9iz3ak334uk0z5r
Merge new upstream source 2.0~beta3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright 2016 Canonical Ltd.
 
2
// Licensed under the AGPLv3, see LICENCE file for details.
 
3
 
 
4
package description
 
5
 
 
6
import (
 
7
        "time"
 
8
 
 
9
        jc "github.com/juju/testing/checkers"
 
10
        gc "gopkg.in/check.v1"
 
11
        "gopkg.in/yaml.v2"
 
12
 
 
13
        "github.com/juju/juju/testing"
 
14
)
 
15
 
 
16
type UserSerializationSuite struct {
 
17
        testing.BaseSuite
 
18
}
 
19
 
 
20
var _ = gc.Suite(&UserSerializationSuite{})
 
21
 
 
22
func (*UserSerializationSuite) TestNil(c *gc.C) {
 
23
        _, err := importUsers(nil)
 
24
        c.Check(err, gc.ErrorMatches, "users version schema check failed: .*")
 
25
}
 
26
 
 
27
func (*UserSerializationSuite) TestMissingVersion(c *gc.C) {
 
28
        _, err := importUsers(map[string]interface{}{
 
29
                "users": []interface{}{},
 
30
        })
 
31
        c.Check(err.Error(), gc.Equals, "users version schema check failed: version: expected int, got nothing")
 
32
}
 
33
 
 
34
func (*UserSerializationSuite) TestMissingUsers(c *gc.C) {
 
35
        _, err := importUsers(map[string]interface{}{
 
36
                "version": 1,
 
37
        })
 
38
        c.Check(err.Error(), gc.Equals, "users version schema check failed: users: expected list, got nothing")
 
39
}
 
40
 
 
41
func (*UserSerializationSuite) TestNonIntVersion(c *gc.C) {
 
42
        _, err := importUsers(map[string]interface{}{
 
43
                "version": "hello",
 
44
                "users":   []interface{}{},
 
45
        })
 
46
        c.Check(err.Error(), gc.Equals, `users version schema check failed: version: expected int, got string("hello")`)
 
47
}
 
48
 
 
49
func (*UserSerializationSuite) TestUnknownVersion(c *gc.C) {
 
50
        _, err := importUsers(map[string]interface{}{
 
51
                "version": 42,
 
52
                "users":   []interface{}{},
 
53
        })
 
54
        c.Check(err.Error(), gc.Equals, `version 42 not valid`)
 
55
}
 
56
 
 
57
func (*UserSerializationSuite) TestParsingSerializedData(c *gc.C) {
 
58
        lastConn := time.Date(2016, 1, 15, 12, 0, 0, 0, time.UTC)
 
59
        initial := users{
 
60
                Version: 1,
 
61
                Users_: []*user{
 
62
                        &user{
 
63
                                Name_:           "admin@local",
 
64
                                CreatedBy_:      "admin@local",
 
65
                                DateCreated_:    time.Date(2015, 10, 9, 12, 34, 56, 0, time.UTC),
 
66
                                LastConnection_: &lastConn,
 
67
                        },
 
68
                        &user{
 
69
                                Name_:        "read-only@local",
 
70
                                DisplayName_: "A read only user",
 
71
                                CreatedBy_:   "admin@local",
 
72
                                DateCreated_: time.Date(2015, 10, 9, 12, 34, 56, 0, time.UTC),
 
73
                                ReadOnly_:    true,
 
74
                        },
 
75
                },
 
76
        }
 
77
 
 
78
        bytes, err := yaml.Marshal(initial)
 
79
        c.Assert(err, jc.ErrorIsNil)
 
80
 
 
81
        c.Logf("%s", bytes)
 
82
 
 
83
        var source map[string]interface{}
 
84
        err = yaml.Unmarshal(bytes, &source)
 
85
        c.Assert(err, jc.ErrorIsNil)
 
86
 
 
87
        users, err := importUsers(source)
 
88
        c.Assert(err, jc.ErrorIsNil)
 
89
 
 
90
        c.Assert(users, jc.DeepEquals, initial.Users_)
 
91
}