add tests for sync message versions

Signed-off-by: Dmitri Dolguikh <dmitri.external@netbird.io>
This commit is contained in:
Dmitri Dolguikh
2026-07-14 16:42:44 +02:00
parent 4d1d7edbc9
commit c31ed6cbdf
3 changed files with 63 additions and 13 deletions
+15 -12
View File
@@ -4,6 +4,8 @@ import (
"context" "context"
"os" "os"
"testing" "testing"
"github.com/stretchr/testify/assert"
) )
const ( const (
@@ -20,26 +22,27 @@ const (
"AuthAudience": "https://stageapp/", "AuthAudience": "https://stageapp/",
"AuthIssuer": "https://something.eu.auth0.com/", "AuthIssuer": "https://something.eu.auth0.com/",
"OIDCConfigEndpoint": "https://something.eu.auth0.com/.well-known/openid-configuration" "OIDCConfigEndpoint": "https://something.eu.auth0.com/.well-known/openid-configuration"
},
"SupportedSyncMessageVersions": ["Base", "ComponentNetworkMap"],
"PerAccountSupportedSyncMessageVersions": {
"1": ["Base"],
"2": ["ComponentNetworkMap"],
"3": []
} }
}` }`
) )
func Test_loadMgmtConfig(t *testing.T) { func Test_loadMgmtConfig(t *testing.T) {
tmpFile, err := createConfig() tmpFile, err := createConfig()
if err != nil { assert.NoError(t, err)
t.Fatalf("failed to create config: %s", err)
}
cfg, err := LoadMgmtConfig(context.Background(), tmpFile) cfg, err := LoadMgmtConfig(context.Background(), tmpFile)
if err != nil { assert.NoError(t, err)
t.Fatalf("failed to load management config: %s", err) assert.NotEmpty(t, cfg.Relay)
} assert.NotEmpty(t, cfg.Relay.Addresses)
if cfg.Relay == nil { assert.Equal(t, []string{"Base", "ComponentNetworkMap"}, cfg.SupportedSyncMessageVersions)
t.Fatalf("config is nil") assert.Equal(t, map[string][]string{
} "1": {"Base"}, "2": {"ComponentNetworkMap"}, "3": {}}, cfg.PerAccountSupportedSyncMessageVersions)
if len(cfg.Relay.Addresses) == 0 {
t.Fatalf("relay address is empty")
}
} }
func createConfig() (string, error) { func createConfig() (string, error) {
@@ -67,7 +67,7 @@ func SyncMessageVersionsFromString(toconvert []string) []SyncMessageVersion {
for _, v := range AllSyncMessageVersions { for _, v := range AllSyncMessageVersions {
allversions[v.String()] = v allversions[v.String()] = v
} }
toret := make([]SyncMessageVersion, len(toconvert)) toret := make([]SyncMessageVersion, 0)
for _, s := range toconvert { for _, s := range toconvert {
toret = append(toret, allversions[s]) toret = append(toret, allversions[s])
} }
@@ -95,6 +95,8 @@ func SyncMessageVersionsFromMap(toconvert map[string][]string) map[string][]Sync
return toret return toret
} }
// these come from the client; peer capabilities are expected to contain all enabled sync message versions.
// an empty list is interpreted as all but the base version are disabled.
func SyncMessageVersionsFromProtoEnums(peerCapabilities []int32) []SyncMessageVersion { func SyncMessageVersionsFromProtoEnums(peerCapabilities []int32) []SyncMessageVersion {
toret := make([]SyncMessageVersion, 0) toret := make([]SyncMessageVersion, 0)
for _, pc := range peerCapabilities { for _, pc := range peerCapabilities {
@@ -0,0 +1,45 @@
package grpc
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestValidation(t *testing.T) {
assert.NoError(t, ValidateSyncMessageVersions([]string{"Base", "ComponentNetworkMap"}))
assert.NoError(t, ValidateSyncMessageVersions([]string{}))
assert.ErrorIs(t, ValidateSyncMessageVersions([]string{"Boom"}), ErrorUnrecognizedSyncMessageVersion)
assert.ErrorIs(t, ValidateSyncMessageVersions([]string{"Base", "Boom"}), ErrorUnrecognizedSyncMessageVersion)
}
func TestConversionStringToEnum(t *testing.T) {
assert.Equal(t, []SyncMessageVersion{0, 1}, SyncMessageVersionsFromString([]string{}))
assert.Equal(t, []SyncMessageVersion{0}, SyncMessageVersionsFromString([]string{"Base"}))
assert.Equal(t, []SyncMessageVersion{1}, SyncMessageVersionsFromString([]string{"ComponentNetworkMap"}))
}
func TestPerAccountConversionStringToEnum(t *testing.T) {
assert.Equal(t, map[string][]SyncMessageVersion{"1": {0, 1}}, SyncMessageVersionsFromMap(map[string][]string{"1": {}}))
assert.Equal(t, map[string][]SyncMessageVersion{"2": {0}}, SyncMessageVersionsFromMap(map[string][]string{"2": {"Base"}}))
assert.Equal(t, map[string][]SyncMessageVersion{"3": {1}, "4": {0, 1}},
SyncMessageVersionsFromMap(map[string][]string{
"3": {"ComponentNetworkMap"},
"4": {"Base", "ComponentNetworkMap"},
}))
}
func TestConversionFromProtoEnums(t *testing.T) {
assert.Equal(t, []SyncMessageVersion{}, SyncMessageVersionsFromProtoEnums([]int32{}))
assert.Equal(t, []SyncMessageVersion{}, SyncMessageVersionsFromProtoEnums([]int32{0}))
assert.Equal(t, []SyncMessageVersion{1}, SyncMessageVersionsFromProtoEnums([]int32{3}))
}
func TestCommonVersions(t *testing.T) {
assert.Equal(t, []SyncMessageVersion{0},
CommonSyncMessageVersions([]SyncMessageVersion{0, 1}, []SyncMessageVersion{}))
assert.Equal(t, []SyncMessageVersion{0},
CommonSyncMessageVersions([]SyncMessageVersion{0}, []SyncMessageVersion{0, 1, 2}))
assert.Equal(t, []SyncMessageVersion{5, 1, 0},
CommonSyncMessageVersions([]SyncMessageVersion{0, 1, 4, 5}, []SyncMessageVersion{1, 0, 5, 2}))
}