Skip to content

Commit bb02974

Browse files
authored
check relays in merge function (#878)
1 parent da07c68 commit bb02974

File tree

3 files changed

+40
-13
lines changed

3 files changed

+40
-13
lines changed

cli/config.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import (
1414
"gopkg.in/yaml.v3"
1515
)
1616

17-
var errRelayConfiguredTwice = errors.New("relay is specified in both cli flags and config file")
17+
var (
18+
errRelayConfiguredTwice = errors.New("relay is specified in both cli flags and config file")
19+
errNoRelaysSpecified = errors.New("no relays specified, provide via --relays and/or --config")
20+
)
1821

1922
type RelayConfigYAML struct {
2023
URL string `yaml:"url"`
@@ -136,6 +139,10 @@ func MergeRelayConfigs(relays []types.RelayEntry, configMap map[string]types.Rel
136139
configs = append(configs, config)
137140
}
138141

142+
if len(configs) == 0 {
143+
return nil, errNoRelaysSpecified
144+
}
145+
139146
return configs, nil
140147
}
141148

cli/config_test.go

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -416,17 +416,41 @@ relays:
416416
}
417417

418418
func TestMergeRelayConfigs_DuplicateDetection(t *testing.T) {
419-
cliRelay, err := types.NewRelayEntry("https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@relay.example.com")
419+
relay, err := types.NewRelayEntry("https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@relay.example.com")
420420
require.NoError(t, err)
421421

422+
t.Run("Error when no relays in cli or config", func(t *testing.T) {
423+
_, err := MergeRelayConfigs([]types.RelayEntry{}, map[string]types.RelayConfig{})
424+
require.Error(t, err)
425+
require.ErrorIs(t, err, errNoRelaysSpecified)
426+
})
427+
428+
t.Run("Success with config only and empty cli relays", func(t *testing.T) {
429+
configMap := map[string]types.RelayConfig{
430+
relay.String(): {
431+
RelayEntry: relay,
432+
EnableTimingGames: true,
433+
},
434+
}
435+
configs, err := MergeRelayConfigs([]types.RelayEntry{}, configMap)
436+
require.NoError(t, err)
437+
require.Len(t, configs, 1)
438+
})
439+
440+
t.Run("Success with cli relays only and empty config map", func(t *testing.T) {
441+
configs, err := MergeRelayConfigs([]types.RelayEntry{relay}, map[string]types.RelayConfig{})
442+
require.NoError(t, err)
443+
require.Len(t, configs, 1)
444+
})
445+
422446
t.Run("Error when same relay in both CLI and config", func(t *testing.T) {
423447
configMap := map[string]types.RelayConfig{
424-
cliRelay.String(): {
425-
RelayEntry: cliRelay,
448+
relay.String(): {
449+
RelayEntry: relay,
426450
EnableTimingGames: true,
427451
},
428452
}
429-
_, err := MergeRelayConfigs([]types.RelayEntry{cliRelay}, configMap)
453+
_, err := MergeRelayConfigs([]types.RelayEntry{relay}, configMap)
430454
require.Error(t, err)
431455
require.Contains(t, err.Error(), "relay is specified in both cli flags and config file")
432456
})
@@ -442,21 +466,21 @@ func TestMergeRelayConfigs_DuplicateDetection(t *testing.T) {
442466
},
443467
}
444468

445-
configs, err := MergeRelayConfigs([]types.RelayEntry{cliRelay}, configMap)
469+
configs, err := MergeRelayConfigs([]types.RelayEntry{relay}, configMap)
446470
require.NoError(t, err)
447471
require.Len(t, configs, 2)
448472
})
449473

450474
t.Run("Success with CLI only", func(t *testing.T) {
451-
configs, err := MergeRelayConfigs([]types.RelayEntry{cliRelay}, map[string]types.RelayConfig{})
475+
configs, err := MergeRelayConfigs([]types.RelayEntry{relay}, map[string]types.RelayConfig{})
452476
require.NoError(t, err)
453477
require.Len(t, configs, 1)
454478
})
455479

456480
t.Run("Success with config only", func(t *testing.T) {
457481
configMap := map[string]types.RelayConfig{
458-
cliRelay.String(): {
459-
RelayEntry: cliRelay,
482+
relay.String(): {
483+
RelayEntry: relay,
460484
EnableTimingGames: true,
461485
},
462486
}

cli/main.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,6 @@ func setupRelays(cmd *cli.Command) (*RelaySetupResult, error) {
161161
}
162162
}
163163

164-
if len(relays) == 0 {
165-
log.Fatal("no relays specified")
166-
}
167-
168164
// load configuration via config file
169165
var configMap map[string]serverTypes.RelayConfig
170166
var timeoutGetHeaderMs uint64 = 950

0 commit comments

Comments
 (0)