1
// Copyright 2016 Canonical Ltd.
2
// Licensed under the LGPLv3, see LICENCE file for details.
7
jc "github.com/juju/testing/checkers"
8
"github.com/juju/version"
12
type linkSuite struct{}
14
var _ = gc.Suite(&linkSuite{})
16
func (*linkSuite) TestNilSubnet(c *gc.C) {
18
c.Check(empty.Subnet() == nil, jc.IsTrue)
21
func (*linkSuite) TestReadLinksBadSchema(c *gc.C) {
22
_, err := readLinks(twoDotOh, "wat?")
23
c.Check(err, jc.Satisfies, IsDeserializationError)
24
c.Assert(err.Error(), gc.Equals, `link base schema check failed: expected list, got string("wat?")`)
27
func (*linkSuite) TestReadLinks(c *gc.C) {
28
links, err := readLinks(twoDotOh, parseJSON(c, linksResponse))
29
c.Assert(err, jc.ErrorIsNil)
30
c.Assert(links, gc.HasLen, 2)
32
c.Assert(link.ID(), gc.Equals, 69)
33
c.Assert(link.Mode(), gc.Equals, "auto")
34
c.Assert(link.IPAddress(), gc.Equals, "192.168.100.5")
35
subnet := link.Subnet()
36
c.Assert(subnet, gc.NotNil)
37
c.Assert(subnet.Name(), gc.Equals, "192.168.100.0/24")
38
// Second link has missing ip_address
39
c.Assert(links[1].IPAddress(), gc.Equals, "")
42
func (*linkSuite) TestLowVersion(c *gc.C) {
43
_, err := readLinks(version.MustParse("1.9.0"), parseJSON(c, linksResponse))
44
c.Assert(err, jc.Satisfies, IsUnsupportedVersionError)
47
func (*linkSuite) TestHighVersion(c *gc.C) {
48
links, err := readLinks(version.MustParse("2.1.9"), parseJSON(c, linksResponse))
49
c.Assert(err, jc.ErrorIsNil)
50
c.Assert(links, gc.HasLen, 2)
58
"ip_address": "192.168.100.5",
60
"resource_uri": "/MAAS/api/2.0/subnets/1/",
64
"resource_uri": "/MAAS/api/2.0/vlans/1/",
66
"secondary_rack": null,
68
"primary_rack": "4y3h7n",
76
"name": "192.168.100.0/24",
77
"gateway_ip": "192.168.100.1",
78
"cidr": "192.168.100.0/24"
85
"resource_uri": "/MAAS/api/2.0/subnets/1/",
89
"resource_uri": "/MAAS/api/2.0/vlans/1/",
91
"secondary_rack": null,
93
"primary_rack": "4y3h7n",
101
"name": "192.168.100.0/24",
102
"gateway_ip": "192.168.100.1",
103
"cidr": "192.168.100.0/24"