cloudflare/cloudflared
Publicmirrored fromhttps://github.com/cloudflare/cloudflaredAvailable
client/config_test.go
50lines · modecode
| 1 | package client |
| 2 | |
| 3 | import ( |
| 4 | "net" |
| 5 | "testing" |
| 6 | |
| 7 | "github.com/stretchr/testify/require" |
| 8 | |
| 9 | "github.com/cloudflare/cloudflared/features" |
| 10 | ) |
| 11 | |
| 12 | func TestGenerateConnectionOptions(t *testing.T) { |
| 13 | version := "1234" |
| 14 | arch := "linux_amd64" |
| 15 | originIP := net.ParseIP("192.168.1.1") |
| 16 | var previousAttempts uint8 = 4 |
| 17 | |
| 18 | config, err := NewConfig(version, arch, &mockFeatureSelector{}) |
| 19 | require.NoError(t, err) |
| 20 | require.Equal(t, version, config.Version) |
| 21 | require.Equal(t, arch, config.Arch) |
| 22 | |
| 23 | // Validate ConnectionOptionsSnapshot fields |
| 24 | connOptions := config.ConnectionOptionsSnapshot(originIP, previousAttempts) |
| 25 | require.Equal(t, version, connOptions.client.Version) |
| 26 | require.Equal(t, arch, connOptions.client.Arch) |
| 27 | require.Equal(t, config.ConnectorID[:], connOptions.client.ClientID) |
| 28 | |
| 29 | // Vaidate snapshot feature fields against the connOptions generated |
| 30 | snapshot := config.featureSelector.Snapshot() |
| 31 | require.Equal(t, features.DatagramV3, snapshot.DatagramVersion) |
| 32 | require.Equal(t, features.DatagramV3, connOptions.FeatureSnapshot.DatagramVersion) |
| 33 | |
| 34 | pogsConnOptions := connOptions.ConnectionOptions() |
| 35 | require.Equal(t, connOptions.client, pogsConnOptions.Client) |
| 36 | require.Equal(t, originIP, pogsConnOptions.OriginLocalIP) |
| 37 | require.False(t, pogsConnOptions.ReplaceExisting) |
| 38 | require.Equal(t, uint8(0), pogsConnOptions.CompressionQuality) |
| 39 | require.Equal(t, previousAttempts, pogsConnOptions.NumPreviousAttempts) |
| 40 | } |
| 41 | |
| 42 | type mockFeatureSelector struct{} |
| 43 | |
| 44 | func (m *mockFeatureSelector) Snapshot() features.FeatureSnapshot { |
| 45 | return features.FeatureSnapshot{ |
| 46 | PostQuantum: features.PostQuantumPrefer, |
| 47 | DatagramVersion: features.DatagramV3, |
| 48 | FeaturesList: []string{features.FeaturePostQuantum, features.FeatureDatagramV3_2}, |
| 49 | } |
| 50 | } |
| 51 | |