1// Copyright 2016-2020 The Libsacloud Authors
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package sacloud
16
17import (
18	"encoding/json"
19	"testing"
20
21	"github.com/stretchr/testify/assert"
22)
23
24var vpcRouterStatusJSON = `
25{
26    "FirewallSendLogs": [
27    	"slog1",
28    	"slog2"
29    ],
30    "FirewallReceiveLogs": [
31    	"rlog1",
32    	"rlog2"
33    ],
34    "VPNLogs": [
35    	"vlog1",
36    	"vlog2"
37   ],
38    "SessionCount": 7,
39    "DHCPServerLeases": [
40      {
41        "IPAddress": "192.168.1.210",
42        "MACAddress": "xx:xx:xx:xx:xx:xx"
43      },
44      {
45        "IPAddress": "192.168.1.211",
46        "MACAddress": "xx:xx:xx:xx:xx:xx"
47      }
48    ],
49    "L2TPIPsecServerSessions": [
50      {
51        "User": "micho",
52        "IPAddress": "192.168.2.200",
53        "TimeSec": 300
54      },
55      {
56        "User": "micho2",
57        "IPAddress": "192.168.2.201",
58        "TimeSec": 6000
59      }
60    ],
61    "PPTPServerSessions": [
62      {
63        "User": "micho3",
64        "IPAddress": "192.168.2.202",
65        "TimeSec": 500
66      },
67      {
68        "User": "micho4",
69        "IPAddress": "192.168.2.203",
70        "TimeSec": 7000
71      }
72    ],
73    "SiteToSiteIPsecVPNPeers": [
74      {
75        "Status": "DOWN",
76        "Peer": "1.1.1.1"
77      },
78      {
79        "Status": "UP",
80        "Peer": "1.1.1.2"
81      }
82    ]
83}`
84
85func TestMarshalVPCRouterStatusJSON(t *testing.T) {
86	// ping
87	var vpcRouterStatus VPCRouterStatus
88	err := json.Unmarshal([]byte(vpcRouterStatusJSON), &vpcRouterStatus)
89
90	assert.NoError(t, err)
91	assert.Len(t, vpcRouterStatus.FirewallSendLogs, 2)
92	assert.Len(t, vpcRouterStatus.FirewallReceiveLogs, 2)
93	assert.Len(t, vpcRouterStatus.VPNLogs, 2)
94	assert.Len(t, vpcRouterStatus.DHCPServerLeases, 2)
95	assert.Len(t, vpcRouterStatus.L2TPIPsecServerSessions, 2)
96	assert.Len(t, vpcRouterStatus.PPTPServerSessions, 2)
97	assert.Len(t, vpcRouterStatus.SiteToSiteIPsecVPNPeers, 2)
98
99	assert.EqualValues(t, "slog1", vpcRouterStatus.FirewallSendLogs[0])
100	assert.EqualValues(t, "rlog1", vpcRouterStatus.FirewallReceiveLogs[0])
101	assert.EqualValues(t, "vlog1", vpcRouterStatus.VPNLogs[0])
102
103	assert.EqualValues(t, "192.168.1.210", vpcRouterStatus.DHCPServerLeases[0].IPAddress)
104	assert.EqualValues(t, "xx:xx:xx:xx:xx:xx", vpcRouterStatus.DHCPServerLeases[0].MACAddress)
105
106	assert.EqualValues(t, "micho", vpcRouterStatus.L2TPIPsecServerSessions[0].User)
107	assert.EqualValues(t, "192.168.2.200", vpcRouterStatus.L2TPIPsecServerSessions[0].IPAddress)
108	assert.EqualValues(t, 300, vpcRouterStatus.L2TPIPsecServerSessions[0].TimeSec)
109
110	assert.EqualValues(t, "micho3", vpcRouterStatus.PPTPServerSessions[0].User)
111	assert.EqualValues(t, "192.168.2.202", vpcRouterStatus.PPTPServerSessions[0].IPAddress)
112	assert.EqualValues(t, 500, vpcRouterStatus.PPTPServerSessions[0].TimeSec)
113
114	assert.EqualValues(t, "DOWN", vpcRouterStatus.SiteToSiteIPsecVPNPeers[0].Status)
115	assert.EqualValues(t, "1.1.1.1", vpcRouterStatus.SiteToSiteIPsecVPNPeers[0].Peer)
116}
117