122 lines
2.7 KiB
Go
122 lines
2.7 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLoadLocalConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cfg, err := Load(filepath.Join("..", "..", "config", "local.yaml"))
|
|
if err != nil {
|
|
t.Fatalf("Load returned error: %v", err)
|
|
}
|
|
|
|
if cfg.App.Name != "chatappgateway" {
|
|
t.Fatalf("unexpected app name: %s", cfg.App.Name)
|
|
}
|
|
if cfg.App.HTTPAddr != ":8080" {
|
|
t.Fatalf("unexpected http addr: %s", cfg.App.HTTPAddr)
|
|
}
|
|
if len(cfg.GRPC.User.Targets) != 1 || cfg.GRPC.User.Targets[0] != "127.0.0.1:9001" {
|
|
t.Fatalf("unexpected user targets: %#v", cfg.GRPC.User.Targets)
|
|
}
|
|
if cfg.GRPC.Pay.Timeout != 3*time.Second {
|
|
t.Fatalf("unexpected pay timeout: %s", cfg.GRPC.Pay.Timeout)
|
|
}
|
|
if cfg.GRPC.User.Retry.MaxAttempts != 2 {
|
|
t.Fatalf("unexpected retry attempts: %d", cfg.GRPC.User.Retry.MaxAttempts)
|
|
}
|
|
}
|
|
|
|
func TestLoadCompatibilityTargetConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
path := filepath.Join(t.TempDir(), "compat.yaml")
|
|
content := strings.TrimSpace(`
|
|
app:
|
|
name: chatappgateway
|
|
http_addr: ":8080"
|
|
grpc:
|
|
user:
|
|
target: "127.0.0.1:9001"
|
|
timeout: 3s
|
|
pay:
|
|
target: "127.0.0.1:9002"
|
|
timeout: 3s
|
|
`)
|
|
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
|
|
t.Fatalf("WriteFile returned error: %v", err)
|
|
}
|
|
|
|
cfg, err := Load(path)
|
|
if err != nil {
|
|
t.Fatalf("Load returned error: %v", err)
|
|
}
|
|
if len(cfg.GRPC.User.Targets) != 1 || cfg.GRPC.User.Targets[0] != "127.0.0.1:9001" {
|
|
t.Fatalf("unexpected user targets: %#v", cfg.GRPC.User.Targets)
|
|
}
|
|
}
|
|
|
|
func TestLoadInvalidConfig(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
path := filepath.Join(t.TempDir(), "invalid.yaml")
|
|
content := strings.TrimSpace(`
|
|
app:
|
|
name: chatappgateway
|
|
http_addr: "bad-address"
|
|
grpc:
|
|
user:
|
|
targets: ["127.0.0.1:9001"]
|
|
timeout: 3s
|
|
pay:
|
|
targets: ["127.0.0.1:9002"]
|
|
timeout: 3s
|
|
`)
|
|
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
|
|
t.Fatalf("WriteFile returned error: %v", err)
|
|
}
|
|
|
|
_, err := Load(path)
|
|
if err == nil {
|
|
t.Fatal("Load returned nil error")
|
|
}
|
|
if !strings.Contains(err.Error(), "app.http_addr is invalid") {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|
|
|
|
func TestLoadInvalidUpstream(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
path := filepath.Join(t.TempDir(), "invalid-upstream.yaml")
|
|
content := strings.TrimSpace(`
|
|
app:
|
|
name: chatappgateway
|
|
http_addr: ":8080"
|
|
grpc:
|
|
user:
|
|
targets: ["127.0.0.1:9001"]
|
|
timeout: 3s
|
|
pay:
|
|
targets: ["invalid"]
|
|
timeout: 3s
|
|
`)
|
|
if err := os.WriteFile(path, []byte(content), 0o600); err != nil {
|
|
t.Fatalf("WriteFile returned error: %v", err)
|
|
}
|
|
|
|
_, err := Load(path)
|
|
if err == nil {
|
|
t.Fatal("Load returned nil error")
|
|
}
|
|
if !strings.Contains(err.Error(), `grpc.pay.targets contains invalid target "invalid"`) {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
}
|