1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
9
jc "github.com/juju/testing/checkers"
10
gc "gopkg.in/check.v1"
13
"github.com/juju/juju/testing"
16
type UserSerializationSuite struct {
20
var _ = gc.Suite(&UserSerializationSuite{})
22
func (*UserSerializationSuite) TestNil(c *gc.C) {
23
_, err := importUsers(nil)
24
c.Check(err, gc.ErrorMatches, "users version schema check failed: .*")
27
func (*UserSerializationSuite) TestMissingVersion(c *gc.C) {
28
_, err := importUsers(map[string]interface{}{
29
"users": []interface{}{},
31
c.Check(err.Error(), gc.Equals, "users version schema check failed: version: expected int, got nothing")
34
func (*UserSerializationSuite) TestMissingUsers(c *gc.C) {
35
_, err := importUsers(map[string]interface{}{
38
c.Check(err.Error(), gc.Equals, "users version schema check failed: users: expected list, got nothing")
41
func (*UserSerializationSuite) TestNonIntVersion(c *gc.C) {
42
_, err := importUsers(map[string]interface{}{
44
"users": []interface{}{},
46
c.Check(err.Error(), gc.Equals, `users version schema check failed: version: expected int, got string("hello")`)
49
func (*UserSerializationSuite) TestUnknownVersion(c *gc.C) {
50
_, err := importUsers(map[string]interface{}{
52
"users": []interface{}{},
54
c.Check(err.Error(), gc.Equals, `version 42 not valid`)
57
func (*UserSerializationSuite) TestParsingSerializedData(c *gc.C) {
58
lastConn := time.Date(2016, 1, 15, 12, 0, 0, 0, time.UTC)
64
CreatedBy_: "admin@local",
65
DateCreated_: time.Date(2015, 10, 9, 12, 34, 56, 0, time.UTC),
66
LastConnection_: &lastConn,
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),
78
bytes, err := yaml.Marshal(initial)
79
c.Assert(err, jc.ErrorIsNil)
83
var source map[string]interface{}
84
err = yaml.Unmarshal(bytes, &source)
85
c.Assert(err, jc.ErrorIsNil)
87
users, err := importUsers(source)
88
c.Assert(err, jc.ErrorIsNil)
90
c.Assert(users, jc.DeepEquals, initial.Users_)