Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
6.2 kB ยท 271 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272package server_test
import ( "testing"
"connectrpc.com/connect" "github.com/openstatushq/openstatus/apps/private-location/internal/server" private_locationv1 "github.com/openstatushq/openstatus/apps/private-location/proto/private_location/v1")
func TestValidateIngestHTTPRequest(t *testing.T) { tests := []struct { name string req *private_locationv1.IngestHTTPRequest wantErr error }{ { name: "valid request", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 1234567890, }, wantErr: nil, }, { name: "valid request with zero latency", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "monitor-123", Latency: 0, Timestamp: 1234567890, }, wantErr: nil, }, { name: "empty monitor_id", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "", Latency: 100, Timestamp: 1234567890, }, wantErr: server.ErrEmptyMonitorID, }, { name: "negative latency", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "monitor-123", Latency: -1, Timestamp: 1234567890, }, wantErr: server.ErrInvalidLatency, }, { name: "zero timestamp", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 0, }, wantErr: server.ErrInvalidTimestamp, }, { name: "negative timestamp", req: &private_locationv1.IngestHTTPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: -1, }, wantErr: server.ErrInvalidTimestamp, }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := server.ValidateIngestHTTPRequest(tt.req) if err != tt.wantErr { t.Errorf("ValidateIngestHTTPRequest() error = %v, wantErr %v", err, tt.wantErr) } }) }}
func TestValidateIngestTCPRequest(t *testing.T) { tests := []struct { name string req *private_locationv1.IngestTCPRequest wantErr error }{ { name: "valid request", req: &private_locationv1.IngestTCPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 1234567890, }, wantErr: nil, }, { name: "valid request with zero latency", req: &private_locationv1.IngestTCPRequest{ MonitorId: "monitor-123", Latency: 0, Timestamp: 1234567890, }, wantErr: nil, }, { name: "empty monitor_id", req: &private_locationv1.IngestTCPRequest{ MonitorId: "", Latency: 100, Timestamp: 1234567890, }, wantErr: server.ErrEmptyMonitorID, }, { name: "negative latency", req: &private_locationv1.IngestTCPRequest{ MonitorId: "monitor-123", Latency: -1, Timestamp: 1234567890, }, wantErr: server.ErrInvalidLatency, }, { name: "zero timestamp", req: &private_locationv1.IngestTCPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 0, }, wantErr: server.ErrInvalidTimestamp, }, { name: "negative timestamp", req: &private_locationv1.IngestTCPRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: -1, }, wantErr: server.ErrInvalidTimestamp, }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := server.ValidateIngestTCPRequest(tt.req) if err != tt.wantErr { t.Errorf("ValidateIngestTCPRequest() error = %v, wantErr %v", err, tt.wantErr) } }) }}
func TestValidateIngestDNSRequest(t *testing.T) { tests := []struct { name string req *private_locationv1.IngestDNSRequest wantErr error }{ { name: "valid request", req: &private_locationv1.IngestDNSRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 1234567890, }, wantErr: nil, }, { name: "valid request with zero latency", req: &private_locationv1.IngestDNSRequest{ MonitorId: "monitor-123", Latency: 0, Timestamp: 1234567890, }, wantErr: nil, }, { name: "empty monitor_id", req: &private_locationv1.IngestDNSRequest{ MonitorId: "", Latency: 100, Timestamp: 1234567890, }, wantErr: server.ErrEmptyMonitorID, }, { name: "negative latency", req: &private_locationv1.IngestDNSRequest{ MonitorId: "monitor-123", Latency: -1, Timestamp: 1234567890, }, wantErr: server.ErrInvalidLatency, }, { name: "zero timestamp", req: &private_locationv1.IngestDNSRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: 0, }, wantErr: server.ErrInvalidTimestamp, }, { name: "negative timestamp", req: &private_locationv1.IngestDNSRequest{ MonitorId: "monitor-123", Latency: 100, Timestamp: -1, }, wantErr: server.ErrInvalidTimestamp, }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := server.ValidateIngestDNSRequest(tt.req) if err != tt.wantErr { t.Errorf("ValidateIngestDNSRequest() error = %v, wantErr %v", err, tt.wantErr) } }) }}
func TestNewValidationError(t *testing.T) { tests := []struct { name string err error wantCode connect.Code wantContains string }{ { name: "empty monitor id error", err: server.ErrEmptyMonitorID, wantCode: connect.CodeInvalidArgument, wantContains: "monitor_id is required", }, { name: "empty id error", err: server.ErrEmptyID, wantCode: connect.CodeInvalidArgument, wantContains: "id is required", }, { name: "invalid latency error", err: server.ErrInvalidLatency, wantCode: connect.CodeInvalidArgument, wantContains: "latency must be non-negative", }, { name: "invalid timestamp error", err: server.ErrInvalidTimestamp, wantCode: connect.CodeInvalidArgument, wantContains: "timestamp must be positive", }, }
for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { connErr := server.NewValidationError(tt.err) if connErr.Code() != tt.wantCode { t.Errorf("NewValidationError() code = %v, want %v", connErr.Code(), tt.wantCode) } if connErr.Message() == "" { t.Error("NewValidationError() message should not be empty") } }) }}