aboutsummaryrefslogtreecommitdiffhomepage
path: root/backend/config/config_test.go
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-02-16 20:05:39 +0900
committernsfisis <nsfisis@gmail.com>2026-02-16 20:13:47 +0900
commit071e7cc78d3f13fa782dbc6ca5fcec3a37263a4d (patch)
treed0174928c0d320bb76e0cdb899beee0476643d55 /backend/config/config_test.go
parent5ed369a6c70707543fd5ec9a13c79851fdfc5d6c (diff)
downloadphperkaigi-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.go139
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")
+ }
+ })
+ }
+}