55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestReadConfigUsesDefaults(t *testing.T) {
|
|
values := map[string]string{
|
|
"ZARINHUB_ACCESS_TOKEN": "test-token",
|
|
}
|
|
|
|
config, err := readConfig(func(key string) string {
|
|
return values[key]
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("readConfig() error = %v", err)
|
|
}
|
|
|
|
if config.ServerAddr != "127.0.0.1:8080" {
|
|
t.Errorf("ServerAddr = %q", config.ServerAddr)
|
|
}
|
|
if config.FrontendOrigin != "http://127.0.0.1:3000" {
|
|
t.Errorf("FrontendOrigin = %q", config.FrontendOrigin)
|
|
}
|
|
if config.ZarinHubTimeout != 5*time.Second {
|
|
t.Errorf("ZarinHubTimeout = %v", config.ZarinHubTimeout)
|
|
}
|
|
if config.DatabasePath != "./card-to-iban.db" {
|
|
t.Errorf("DatabasePath = %q", config.DatabasePath)
|
|
}
|
|
}
|
|
|
|
func TestReadConfigRejectsMissingAccessToken(t *testing.T) {
|
|
_, err := readConfig(func(key string) string { return "" })
|
|
if err == nil || !strings.Contains(err.Error(), "ZARINHUB_ACCESS_TOKEN") {
|
|
t.Fatalf("readConfig() error = %v, want missing token error", err)
|
|
}
|
|
}
|
|
|
|
func TestReadConfigRejectsInvalidTimeout(t *testing.T) {
|
|
values := map[string]string{
|
|
"ZARINHUB_ACCESS_TOKEN": "test-token",
|
|
"ZARINHUB_TIMEOUT": "later",
|
|
}
|
|
|
|
_, err := readConfig(func(key string) string {
|
|
return values[key]
|
|
})
|
|
if err == nil || !strings.Contains(err.Error(), "ZARINHUB_TIMEOUT") {
|
|
t.Fatalf("readConfig() error = %v, want timeout error", err)
|
|
}
|
|
}
|