mirror of
https://github.com/cloudflare/cloudflared
synced 2026-06-08 13:33:07 +00:00
6681d179dc
It also fixes the marshelling of CIDR into JSON since otherwise it would show garbled characters as the mask.
99 lines
2.6 KiB
Go
99 lines
2.6 KiB
Go
package teamnet
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"net"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestUnmarshalRoute(t *testing.T) {
|
|
// Response from the teamnet route backend
|
|
data := `{
|
|
"network":"10.1.2.40/29",
|
|
"tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
|
|
"comment":"test",
|
|
"created_at":"2020-12-22T02:00:15.587008Z",
|
|
"deleted_at":null
|
|
}`
|
|
var r Route
|
|
err := json.Unmarshal([]byte(data), &r)
|
|
|
|
// Check everything worked
|
|
require.NoError(t, err)
|
|
require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
|
|
require.Equal(t, "test", r.Comment)
|
|
_, cidr, err := net.ParseCIDR("10.1.2.40/29")
|
|
require.NoError(t, err)
|
|
require.Equal(t, CIDR(*cidr), r.Network)
|
|
require.Equal(t, "test", r.Comment)
|
|
}
|
|
|
|
func TestDetailedRouteJsonRoundtrip(t *testing.T) {
|
|
// Response from the teamnet route backend
|
|
data := `{
|
|
"network":"10.1.2.40/29",
|
|
"tunnel_id":"fba6ffea-807f-4e7a-a740-4184ee1b82c8",
|
|
"comment":"test",
|
|
"created_at":"2020-12-22T02:00:15.587008Z",
|
|
"deleted_at":"2021-01-14T05:01:42.183002Z",
|
|
"tunnel_name":"Mr. Tun"
|
|
}`
|
|
var r DetailedRoute
|
|
err := json.Unmarshal([]byte(data), &r)
|
|
|
|
// Check everything worked
|
|
require.NoError(t, err)
|
|
require.Equal(t, uuid.MustParse("fba6ffea-807f-4e7a-a740-4184ee1b82c8"), r.TunnelID)
|
|
require.Equal(t, "test", r.Comment)
|
|
_, cidr, err := net.ParseCIDR("10.1.2.40/29")
|
|
require.NoError(t, err)
|
|
require.Equal(t, CIDR(*cidr), r.Network)
|
|
require.Equal(t, "test", r.Comment)
|
|
require.Equal(t, "Mr. Tun", r.TunnelName)
|
|
|
|
bytes, err := json.Marshal(r)
|
|
require.NoError(t, err)
|
|
obtainedJson := string(bytes)
|
|
data = strings.Replace(data, "\t", "", -1)
|
|
data = strings.Replace(data, "\n", "", -1)
|
|
require.Equal(t, data, obtainedJson)
|
|
}
|
|
|
|
func TestMarshalNewRoute(t *testing.T) {
|
|
_, network, err := net.ParseCIDR("1.2.3.4/32")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, network)
|
|
newRoute := NewRoute{
|
|
Network: *network,
|
|
TunnelID: uuid.New(),
|
|
Comment: "hi",
|
|
}
|
|
|
|
// Test where receiver is struct
|
|
serialized, err := json.Marshal(newRoute)
|
|
require.NoError(t, err)
|
|
require.True(t, strings.Contains(string(serialized), "tunnel_id"))
|
|
|
|
// Test where receiver is pointer to struct
|
|
serialized, err = json.Marshal(&newRoute)
|
|
require.NoError(t, err)
|
|
require.True(t, strings.Contains(string(serialized), "tunnel_id"))
|
|
}
|
|
|
|
func TestRouteTableString(t *testing.T) {
|
|
_, network, err := net.ParseCIDR("1.2.3.4/32")
|
|
require.NoError(t, err)
|
|
require.NotNil(t, network)
|
|
r := DetailedRoute{
|
|
Network: CIDR(*network),
|
|
}
|
|
row := r.TableString()
|
|
fmt.Println(row)
|
|
require.True(t, strings.HasPrefix(row, "1.2.3.4/32"))
|
|
}
|