From c31ed6cbdf658c91eadaaf84bd37cc5541ab9141 Mon Sep 17 00:00:00 2001 From: Dmitri Dolguikh Date: Tue, 14 Jul 2026 16:42:44 +0200 Subject: [PATCH] add tests for sync message versions Signed-off-by: Dmitri Dolguikh --- management/cmd/management_test.go | 27 ++++++----- .../shared/grpc/sync_message_versions.go | 4 +- .../shared/grpc/sync_message_versions_test.go | 45 +++++++++++++++++++ 3 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 management/internals/shared/grpc/sync_message_versions_test.go diff --git a/management/cmd/management_test.go b/management/cmd/management_test.go index f0c89dd3f..138a8cd6f 100644 --- a/management/cmd/management_test.go +++ b/management/cmd/management_test.go @@ -4,6 +4,8 @@ import ( "context" "os" "testing" + + "github.com/stretchr/testify/assert" ) const ( @@ -20,26 +22,27 @@ const ( "AuthAudience": "https://stageapp/", "AuthIssuer": "https://something.eu.auth0.com/", "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) { tmpFile, err := createConfig() - if err != nil { - t.Fatalf("failed to create config: %s", err) - } + assert.NoError(t, err) cfg, err := LoadMgmtConfig(context.Background(), tmpFile) - if err != nil { - t.Fatalf("failed to load management config: %s", err) - } - if cfg.Relay == nil { - t.Fatalf("config is nil") - } - if len(cfg.Relay.Addresses) == 0 { - t.Fatalf("relay address is empty") - } + assert.NoError(t, err) + assert.NotEmpty(t, cfg.Relay) + assert.NotEmpty(t, cfg.Relay.Addresses) + assert.Equal(t, []string{"Base", "ComponentNetworkMap"}, cfg.SupportedSyncMessageVersions) + assert.Equal(t, map[string][]string{ + "1": {"Base"}, "2": {"ComponentNetworkMap"}, "3": {}}, cfg.PerAccountSupportedSyncMessageVersions) } func createConfig() (string, error) { diff --git a/management/internals/shared/grpc/sync_message_versions.go b/management/internals/shared/grpc/sync_message_versions.go index bc87dd995..e8a169807 100644 --- a/management/internals/shared/grpc/sync_message_versions.go +++ b/management/internals/shared/grpc/sync_message_versions.go @@ -67,7 +67,7 @@ func SyncMessageVersionsFromString(toconvert []string) []SyncMessageVersion { for _, v := range AllSyncMessageVersions { allversions[v.String()] = v } - toret := make([]SyncMessageVersion, len(toconvert)) + toret := make([]SyncMessageVersion, 0) for _, s := range toconvert { toret = append(toret, allversions[s]) } @@ -95,6 +95,8 @@ func SyncMessageVersionsFromMap(toconvert map[string][]string) map[string][]Sync 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 { toret := make([]SyncMessageVersion, 0) for _, pc := range peerCapabilities { diff --git a/management/internals/shared/grpc/sync_message_versions_test.go b/management/internals/shared/grpc/sync_message_versions_test.go new file mode 100644 index 000000000..8ca1ff50a --- /dev/null +++ b/management/internals/shared/grpc/sync_message_versions_test.go @@ -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})) +}