diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-02-16 20:05:39 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-02-16 20:13:47 +0900 |
| commit | 071e7cc78d3f13fa782dbc6ca5fcec3a37263a4d (patch) | |
| tree | d0174928c0d320bb76e0cdb899beee0476643d55 /backend/config/config_test.go | |
| parent | 5ed369a6c70707543fd5ec9a13c79851fdfc5d6c (diff) | |
| download | phperkaigi-2026-albatross-071e7cc78d3f13fa782dbc6ca5fcec3a37263a4d.tar.gz phperkaigi-2026-albatross-071e7cc78d3f13fa782dbc6ca5fcec3a37263a4d.tar.zst phperkaigi-2026-albatross-071e7cc78d3f13fa782dbc6ca5fcec3a37263a4d.zip | |
test(backend): add unit tests for auth, config, ratelimit, game, and api
Cover previously untested logic: session ID generation/hashing,
password authentication, IP rate limiting, game state helpers,
handler endpoints, task enqueue/result processing, and config loading.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'backend/config/config_test.go')
| -rw-r--r-- | backend/config/config_test.go | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/backend/config/config_test.go b/backend/config/config_test.go new file mode 100644 index 0000000..5110e0c --- /dev/null +++ b/backend/config/config_test.go @@ -0,0 +1,139 @@ +package config + +import ( + "testing" +) + +func TestNewConfigFromEnv_AllSet(t *testing.T) { + t.Setenv("ALBATROSS_DB_HOST", "localhost") + t.Setenv("ALBATROSS_DB_PORT", "5432") + t.Setenv("ALBATROSS_DB_USER", "user") + t.Setenv("ALBATROSS_DB_PASSWORD", "pass") + t.Setenv("ALBATROSS_DB_NAME", "testdb") + t.Setenv("ALBATROSS_BASE_PATH", "/app") + t.Setenv("ALBATROSS_IS_LOCAL", "1") + + conf, err := NewConfigFromEnv() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if conf.DBHost != "localhost" { + t.Errorf("expected DBHost 'localhost', got %q", conf.DBHost) + } + if conf.DBPort != "5432" { + t.Errorf("expected DBPort '5432', got %q", conf.DBPort) + } + if conf.DBUser != "user" { + t.Errorf("expected DBUser 'user', got %q", conf.DBUser) + } + if conf.DBPassword != "pass" { + t.Errorf("expected DBPassword 'pass', got %q", conf.DBPassword) + } + if conf.DBName != "testdb" { + t.Errorf("expected DBName 'testdb', got %q", conf.DBName) + } + if conf.BasePath != "/app" { + t.Errorf("expected BasePath '/app', got %q", conf.BasePath) + } + if !conf.IsLocal { + t.Error("expected IsLocal true") + } +} + +func TestNewConfigFromEnv_IsLocalFalse(t *testing.T) { + t.Setenv("ALBATROSS_DB_HOST", "localhost") + t.Setenv("ALBATROSS_DB_PORT", "5432") + t.Setenv("ALBATROSS_DB_USER", "user") + t.Setenv("ALBATROSS_DB_PASSWORD", "pass") + t.Setenv("ALBATROSS_DB_NAME", "testdb") + t.Setenv("ALBATROSS_BASE_PATH", "/app") + // ALBATROSS_IS_LOCAL not set + + conf, err := NewConfigFromEnv() + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + if conf.IsLocal { + t.Error("expected IsLocal false when env not set") + } +} + +func TestNewConfigFromEnv_MissingRequired(t *testing.T) { + tests := []struct { + name string + envVars map[string]string + }{ + { + name: "missing DB_HOST", + envVars: map[string]string{ + "ALBATROSS_DB_PORT": "5432", + "ALBATROSS_DB_USER": "user", + "ALBATROSS_DB_PASSWORD": "pass", + "ALBATROSS_DB_NAME": "testdb", + "ALBATROSS_BASE_PATH": "/app", + }, + }, + { + name: "missing DB_PORT", + envVars: map[string]string{ + "ALBATROSS_DB_HOST": "localhost", + "ALBATROSS_DB_USER": "user", + "ALBATROSS_DB_PASSWORD": "pass", + "ALBATROSS_DB_NAME": "testdb", + "ALBATROSS_BASE_PATH": "/app", + }, + }, + { + name: "missing DB_USER", + envVars: map[string]string{ + "ALBATROSS_DB_HOST": "localhost", + "ALBATROSS_DB_PORT": "5432", + "ALBATROSS_DB_PASSWORD": "pass", + "ALBATROSS_DB_NAME": "testdb", + "ALBATROSS_BASE_PATH": "/app", + }, + }, + { + name: "missing DB_PASSWORD", + envVars: map[string]string{ + "ALBATROSS_DB_HOST": "localhost", + "ALBATROSS_DB_PORT": "5432", + "ALBATROSS_DB_USER": "user", + "ALBATROSS_DB_NAME": "testdb", + "ALBATROSS_BASE_PATH": "/app", + }, + }, + { + name: "missing DB_NAME", + envVars: map[string]string{ + "ALBATROSS_DB_HOST": "localhost", + "ALBATROSS_DB_PORT": "5432", + "ALBATROSS_DB_USER": "user", + "ALBATROSS_DB_PASSWORD": "pass", + "ALBATROSS_BASE_PATH": "/app", + }, + }, + { + name: "missing BASE_PATH", + envVars: map[string]string{ + "ALBATROSS_DB_HOST": "localhost", + "ALBATROSS_DB_PORT": "5432", + "ALBATROSS_DB_USER": "user", + "ALBATROSS_DB_PASSWORD": "pass", + "ALBATROSS_DB_NAME": "testdb", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + for k, v := range tt.envVars { + t.Setenv(k, v) + } + _, err := NewConfigFromEnv() + if err == nil { + t.Error("expected error for missing env var, got nil") + } + }) + } +} |
