config_test.go 1.7 KB

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