github.com/saucelabs/saucectl@v0.175.1/internal/http/insightsservice_test.go (about) 1 package http 2 3 import ( 4 "context" 5 "net/http" 6 "net/http/httptest" 7 "testing" 8 9 "github.com/saucelabs/saucectl/internal/iam" 10 "github.com/saucelabs/saucectl/internal/insights" 11 ) 12 13 func TestInsightsService_PostTestRun(t *testing.T) { 14 tests := []struct { 15 name string 16 runs []insights.TestRun 17 reply func(t *testing.T) func(w http.ResponseWriter, r *http.Request) 18 wantErr bool 19 }{ 20 { 21 name: "Basic - empty - 204", 22 runs: []insights.TestRun{}, 23 reply: func(t *testing.T) func(w http.ResponseWriter, r *http.Request) { 24 return func(w http.ResponseWriter, r *http.Request) { 25 w.WriteHeader(204) 26 } 27 }, 28 wantErr: false, 29 }, 30 { 31 name: "Basic - Erroring - 422", 32 runs: []insights.TestRun{ 33 { 34 ID: "09a87dea-3923-43db-8743-ef1f3ff5d717", 35 }, 36 }, 37 reply: func(t *testing.T) func(w http.ResponseWriter, r *http.Request) { 38 return func(w http.ResponseWriter, r *http.Request) { 39 w.WriteHeader(204) 40 } 41 }, 42 wantErr: false, 43 }, 44 } 45 46 for _, tt := range tests { 47 ts := httptest.NewServer(http.HandlerFunc(tt.reply(t))) 48 49 t.Run(tt.name, func(t *testing.T) { 50 c := &InsightsService{ 51 HTTPClient: ts.Client(), 52 URL: ts.URL, 53 Credentials: iam.Credentials{AccessKey: "accessKey", Username: "username"}, 54 } 55 if err := c.PostTestRun(context.Background(), tt.runs); (err != nil) != tt.wantErr { 56 t.Errorf("PostTestRun() error = %v, wantErr %v", err, tt.wantErr) 57 } 58 }) 59 60 ts.Close() 61 } 62 }