package httpapi import ( "io" "log/slog" "net/http/httptest" "strings" "testing" "time" "calllinesystem/server/internal/config" ) func TestInternalPhoneLookupRejectsPublicNetwork(t *testing.T) { server := internalRouteTestServer() recorder := httptest.NewRecorder() request := httptest.NewRequest("POST", "/api/internal/status/search", strings.NewReader(`{"phone":"13800138000"}`)) request.RemoteAddr = "203.0.113.8:42000" request.Header.Set("X-Forwarded-For", "10.0.0.8") server.Handler().ServeHTTP(recorder, request) if recorder.Code != 403 { t.Fatalf("public network status = %d, want 403", recorder.Code) } if !strings.Contains(recorder.Body.String(), `"code":"INTERNAL_NETWORK_REQUIRED"`) { t.Fatalf("unexpected response: %s", recorder.Body.String()) } } func TestInternalPhoneLookupIsAvailableInProductionFromPrivateNetwork(t *testing.T) { server := internalRouteTestServer() recorder := httptest.NewRecorder() request := httptest.NewRequest("POST", "/api/internal/status/search", strings.NewReader(`{"phone":"123"}`)) request.RemoteAddr = "10.23.4.5:42000" server.Handler().ServeHTTP(recorder, request) if recorder.Code != 422 { t.Fatalf("private network invalid phone status = %d, want 422", recorder.Code) } } func internalRouteTestServer() *Server { return &Server{ config: config.Config{Environment: "production"}, logger: slog.New(slog.NewTextHandler(io.Discard, nil)), now: func() time.Time { return time.Unix(100, 0).UTC() }, } }