package auth import ( "os" "testing" ) func TestParseGateStatusNumeric(t *testing.T) { gs, err := parseGateStatus([]byte(`{"status":1}`)) // live shape while servers are up if err != nil { t.Fatal(err) } if !gs.Up || gs.Message != "" || gs.News != "" { t.Fatalf("got %#v", gs) } gs, err = parseGateStatus([]byte(`{"status":0,"message":["The game is currently under maintenance.","Please try again later."],"news":["Maintenance ends Tuesday 20:00 UTC."]}`)) if err != nil { t.Fatal(err) } want := &GateStatus{ Up: false, Message: "The game is currently under maintenance.\nPlease try again later.", News: "Maintenance ends Tuesday 20:00 UTC.", } if *gs != *want { t.Fatalf("got %#v, want %#v", gs, want) } } func TestParseGateStatusBool(t *testing.T) { for _, body := range []string{`{"status":true}`, `{"status":1}`} { gs, err := parseGateStatus([]byte(body)) if err != nil || !gs.Up { t.Fatalf("%s: up=%v err=%v", body, gs, err) } } gs, err := parseGateStatus([]byte(`{"status":false,"message":["x"]}`)) if err != nil || gs.Up { t.Fatalf("got %#v err=%v", gs, err) } } func TestParseGateStatusErrors(t *testing.T) { for _, body := range []string{`not json`, `{}`, `{"status":null}`, `{"status":"yes"}`} { if _, err := parseGateStatus([]byte(body)); err == nil { t.Fatalf("%s: expected error", body) } } } // Live probe of the real endpoint. Opt-in like TestLiveStoredToken: // LIVE=1 go test ./auth/ -run TestLiveGateStatus func TestLiveGateStatus(t *testing.T) { if os.Getenv("LIVE") == "" { t.Skip("set LIVE=1 to query the live server-status endpoint") } gs, err := CheckGate("en") if err != nil { t.Fatal(err) } t.Logf("up=%v message=%q news=%q", gs.Up, gs.Message, gs.News) }