1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the AGPLv3, see LICENCE file for details.
4
package modelmigration_test
7
"github.com/juju/errors"
8
"github.com/juju/names"
9
jc "github.com/juju/testing/checkers"
10
"github.com/juju/utils"
11
gc "gopkg.in/check.v1"
13
migration "github.com/juju/juju/core/modelmigration"
14
coretesting "github.com/juju/juju/testing"
17
type TargetInfoSuite struct {
21
var _ = gc.Suite(new(TargetInfoSuite))
23
func (s *TargetInfoSuite) TestValidation(c *gc.C) {
26
tweakInfo func(*migration.TargetInfo)
29
"empty ControllerTag",
30
func(info *migration.TargetInfo) {
31
info.ControllerTag = names.NewModelTag("fooo")
33
"ControllerTag not valid",
35
"invalid ControllerTag",
36
func(info *migration.TargetInfo) {
37
info.ControllerTag = names.NewModelTag("")
39
"ControllerTag not valid",
42
func(info *migration.TargetInfo) {
43
info.Addrs = []string{}
45
"empty Addrs not valid",
48
func(info *migration.TargetInfo) {
49
info.Addrs = []string{"1.2.3.4:555", "abc"}
51
`"abc" in Addrs not valid`,
54
func(info *migration.TargetInfo) {
57
"empty CACert not valid",
60
func(info *migration.TargetInfo) {
61
info.EntityTag = names.NewMachineTag("")
63
"empty EntityTag not valid",
66
func(info *migration.TargetInfo) {
69
"empty Password not valid",
72
func(*migration.TargetInfo) {},
76
modelTag := names.NewModelTag(utils.MustNewUUID().String())
77
for _, test := range tests {
78
c.Logf("---- %s -----------", test.label)
80
info := migration.TargetInfo{
81
ControllerTag: modelTag,
82
Addrs: []string{"1.2.3.4:5555", "4.3.2.1:6666"},
84
EntityTag: names.NewUserTag("user"),
89
err := info.Validate()
90
if test.errorPattern == "" {
91
c.Check(err, jc.ErrorIsNil)
93
c.Check(errors.IsNotValid(err), jc.IsTrue)
94
c.Check(err, gc.ErrorMatches, test.errorPattern)