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