cloudflare/cloudflared

Public

mirrored fromhttps://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
4d95ab73f584a5a6439803648f013031ca1dd4ac

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

cfapi/ip_route_test.go

178lines · modecode

1package cfapi
2
3import (
4 "encoding/json"
5 "fmt"
6 "net"
7 "strings"
8 "testing"
9
10 "github.com/google/uuid"
11 "github.com/stretchr/testify/require"
12)
13
14func TestUnmarshalRoute(t *testing.T) {
15 testCases := []struct {
16 Json string
17 HasVnet bool
18 }{
19 {
20 `{
21 "network":"10.1.2.40/29",
22 "tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
23 "comment":"test",
24 "created_at":"2020-12-22T02:00:15.587008Z",
25 "deleted_at":null
26 }`,
27 false,
28 },
29 {
30 `{
31 "network":"10.1.2.40/29",
32 "tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
33 "comment":"test",
34 "created_at":"2020-12-22T02:00:15.587008Z",
35 "deleted_at":null,
36 "virtual_network_id":"38c95083-8191-4110-8339-3f438d44fdb9"
37 }`,
38 true,
39 },
40 }
41
42 for _, testCase := range testCases {
43 data := testCase.Json
44
45 var r Route
46 err := json.Unmarshal([]byte(data), &r)
47
48 // Check everything worked
49 require.NoError(t, err)
50 require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
51 require.Equal(t, "test", r.Comment)
52 _, cidr, err := net.ParseCIDR("10.1.2.40/29")
53 require.NoError(t, err)
54 require.Equal(t, CIDR(*cidr), r.Network)
55 require.Equal(t, "test", r.Comment)
56
57 if testCase.HasVnet {
58 require.Equal(t, uuid.MustParse("38c95083-8191-4110-8339-3f438d44fdb9"), *r.VNetID)
59 } else {
60 require.Nil(t, r.VNetID)
61 }
62 }
63}
64
65func TestDetailedRouteJsonRoundtrip(t *testing.T) {
66 testCases := []struct {
67 Json string
68 HasVnet bool
69 }{
70 {
71 `{
72 "id":"91ebc578-cc99-4641-9937-0fb630505fa0",
73 "network":"10.1.2.40/29",
74 "tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
75 "comment":"test",
76 "created_at":"2020-12-22T02:00:15.587008Z",
77 "deleted_at":"2021-01-14T05:01:42.183002Z",
78 "tunnel_name":"Mr. Tun"
79 }`,
80 false,
81 },
82 {
83 `{
84 "id":"91ebc578-cc99-4641-9937-0fb630505fa0",
85 "network":"10.1.2.40/29",
86 "tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
87 "virtual_network_id":"38c95083-8191-4110-8339-3f438d44fdb9",
88 "comment":"test",
89 "created_at":"2020-12-22T02:00:15.587008Z",
90 "deleted_at":"2021-01-14T05:01:42.183002Z",
91 "tunnel_name":"Mr. Tun"
92 }`,
93 true,
94 },
95 }
96
97 for _, testCase := range testCases {
98 data := testCase.Json
99
100 var r DetailedRoute
101 err := json.Unmarshal([]byte(data), &r)
102
103 // Check everything worked
104 require.NoError(t, err)
105 require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
106 require.Equal(t, "test", r.Comment)
107 _, cidr, err := net.ParseCIDR("10.1.2.40/29")
108 require.NoError(t, err)
109 require.Equal(t, CIDR(*cidr), r.Network)
110 require.Equal(t, "test", r.Comment)
111 require.Equal(t, "Mr. Tun", r.TunnelName)
112
113 if testCase.HasVnet {
114 require.Equal(t, uuid.MustParse("38c95083-8191-4110-8339-3f438d44fdb9"), *r.VNetID)
115 } else {
116 require.Nil(t, r.VNetID)
117 }
118
119 bytes, err := json.Marshal(r)
120 require.NoError(t, err)
121 obtainedJson := string(bytes)
122 data = strings.Replace(data, "\t", "", -1)
123 data = strings.Replace(data, "\n", "", -1)
124 require.Equal(t, data, obtainedJson)
125 }
126}
127
128func TestMarshalNewRoute(t *testing.T) {
129 _, network, err := net.ParseCIDR("1.2.3.4/32")
130 require.NoError(t, err)
131 require.NotNil(t, network)
132 vnetId := uuid.New()
133
134 newRoutes := []NewRoute{
135 {
136 Network: *network,
137 TunnelID: uuid.New(),
138 Comment: "hi",
139 },
140 {
141 Network: *network,
142 TunnelID: uuid.New(),
143 Comment: "hi",
144 VNetID: &vnetId,
145 },
146 }
147
148 for _, newRoute := range newRoutes {
149 // Test where receiver is struct
150 serialized, err := json.Marshal(newRoute)
151 require.NoError(t, err)
152 require.True(t, strings.Contains(string(serialized), "tunnel_id"))
153
154 // Test where receiver is pointer to struct
155 serialized, err = json.Marshal(&newRoute)
156 require.NoError(t, err)
157 require.True(t, strings.Contains(string(serialized), "tunnel_id"))
158
159 if newRoute.VNetID == nil {
160 require.False(t, strings.Contains(string(serialized), "virtual_network_id"))
161 } else {
162 require.True(t, strings.Contains(string(serialized), "virtual_network_id"))
163 }
164 }
165}
166
167func TestRouteTableString(t *testing.T) {
168 _, network, err := net.ParseCIDR("1.2.3.4/32")
169 require.NoError(t, err)
170 require.NotNil(t, network)
171 r := DetailedRoute{
172 ID: uuid.Nil,
173 Network: CIDR(*network),
174 }
175 row := r.TableString()
176 fmt.Println(row)
177 require.True(t, strings.HasPrefix(row, "00000000-0000-0000-0000-000000000000\t1.2.3.4/32"))
178}
179