cloudflare/cloudflared

Public

mirrored from https://github.com/cloudflare/cloudflaredAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
2026.2.0

Branches

Tags

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

Clone

HTTPS

Download ZIP

cfapi/ip_route_test.go

178lines · modeblame

6822e4f8Nuno Diegues4 years ago1package cfapi
94c639d2Adam Chalmers5 years ago2
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) {
571380b3Nuno Diegues4 years ago15testCases := []struct {
16Json string
17HasVnet 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}`,
27false,
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}`,
38true,
39},
40}
41
42for _, testCase := range testCases {
43data := testCase.Json
44
45var r Route
46err := json.Unmarshal([]byte(data), &r)
47
48// Check everything worked
49require.NoError(t, err)
50require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
51require.Equal(t, "test", r.Comment)
52_, cidr, err := net.ParseCIDR("10.1.2.40/29")
53require.NoError(t, err)
54require.Equal(t, CIDR(*cidr), r.Network)
55require.Equal(t, "test", r.Comment)
56
57if testCase.HasVnet {
58require.Equal(t, uuid.MustParse("38c95083-8191-4110-8339-3f438d44fdb9"), *r.VNetID)
59} else {
60require.Nil(t, r.VNetID)
61}
62}
94c639d2Adam Chalmers5 years ago63}
64
6681d179Nuno Diegues5 years ago65func TestDetailedRouteJsonRoundtrip(t *testing.T) {
571380b3Nuno Diegues4 years ago66testCases := []struct {
67Json string
68HasVnet bool
69}{
70{
71`{
6d1d91d9João Oliveirinha2 years ago72"id":"91ebc578-cc99-4641-9937-0fb630505fa0",
571380b3Nuno Diegues4 years ago73"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}`,
80false,
81},
82{
83`{
6d1d91d9João Oliveirinha2 years ago84"id":"91ebc578-cc99-4641-9937-0fb630505fa0",
571380b3Nuno Diegues4 years ago85"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}`,
93true,
94},
95}
6681d179Nuno Diegues5 years ago96
571380b3Nuno Diegues4 years ago97for _, testCase := range testCases {
98data := testCase.Json
99
100var r DetailedRoute
101err := json.Unmarshal([]byte(data), &r)
102
103// Check everything worked
104require.NoError(t, err)
105require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
106require.Equal(t, "test", r.Comment)
107_, cidr, err := net.ParseCIDR("10.1.2.40/29")
108require.NoError(t, err)
109require.Equal(t, CIDR(*cidr), r.Network)
110require.Equal(t, "test", r.Comment)
111require.Equal(t, "Mr. Tun", r.TunnelName)
112
113if testCase.HasVnet {
114require.Equal(t, uuid.MustParse("38c95083-8191-4110-8339-3f438d44fdb9"), *r.VNetID)
115} else {
116require.Nil(t, r.VNetID)
117}
118
119bytes, err := json.Marshal(r)
120require.NoError(t, err)
121obtainedJson := string(bytes)
122data = strings.Replace(data, "\t", "", -1)
123data = strings.Replace(data, "\n", "", -1)
124require.Equal(t, data, obtainedJson)
125}
78ffb1b8Adam Chalmers5 years ago126}
127
94c639d2Adam Chalmers5 years ago128func TestMarshalNewRoute(t *testing.T) {
129_, network, err := net.ParseCIDR("1.2.3.4/32")
130require.NoError(t, err)
131require.NotNil(t, network)
571380b3Nuno Diegues4 years ago132vnetId := uuid.New()
133
134newRoutes := []NewRoute{
135{
136Network: *network,
137TunnelID: uuid.New(),
138Comment: "hi",
139},
140{
141Network: *network,
142TunnelID: uuid.New(),
143Comment: "hi",
144VNetID: &vnetId,
145},
94c639d2Adam Chalmers5 years ago146}
147
571380b3Nuno Diegues4 years ago148for _, newRoute := range newRoutes {
149// Test where receiver is struct
150serialized, err := json.Marshal(newRoute)
151require.NoError(t, err)
152require.True(t, strings.Contains(string(serialized), "tunnel_id"))
94c639d2Adam Chalmers5 years ago153
571380b3Nuno Diegues4 years ago154// Test where receiver is pointer to struct
155serialized, err = json.Marshal(&newRoute)
156require.NoError(t, err)
157require.True(t, strings.Contains(string(serialized), "tunnel_id"))
158
159if newRoute.VNetID == nil {
160require.False(t, strings.Contains(string(serialized), "virtual_network_id"))
161} else {
162require.True(t, strings.Contains(string(serialized), "virtual_network_id"))
163}
164}
94c639d2Adam Chalmers5 years ago165}
166
167func TestRouteTableString(t *testing.T) {
168_, network, err := net.ParseCIDR("1.2.3.4/32")
169require.NoError(t, err)
170require.NotNil(t, network)
78ffb1b8Adam Chalmers5 years ago171r := DetailedRoute{
6d1d91d9João Oliveirinha2 years ago172ID: uuid.Nil,
78ffb1b8Adam Chalmers5 years ago173Network: CIDR(*network),
94c639d2Adam Chalmers5 years ago174}
175row := r.TableString()
176fmt.Println(row)
6d1d91d9João Oliveirinha2 years ago177require.True(t, strings.HasPrefix(row, "00000000-0000-0000-0000-000000000000\t1.2.3.4/32"))
94c639d2Adam Chalmers5 years ago178}