github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/api/receiver/client/client_test.go (about) 1 //go:build small 2 // +build small 3 4 // Copyright 2020 The WPT Dashboard Project. All rights reserved. 5 // Use of this source code is governed by a BSD-style license that can be 6 // found in the LICENSE file. 7 8 package client 9 10 import ( 11 "net/http" 12 "net/http/httptest" 13 "net/url" 14 "testing" 15 16 "github.com/golang/mock/gomock" 17 "github.com/stretchr/testify/assert" 18 "github.com/web-platform-tests/wpt.fyi/shared/sharedtest" 19 ) 20 21 func TestCreateRun(t *testing.T) { 22 // To make sure we actually hit the assertion in the handler. 23 visited := false 24 handler := func(w http.ResponseWriter, r *http.Request) { 25 assert.Equal(t, r.Header.Get("Content-Type"), "application/x-www-form-urlencoded") 26 user, pass, ok := r.BasicAuth() 27 assert.True(t, ok) 28 assert.Equal(t, "blade-runner", user) 29 assert.Equal(t, "password", pass) 30 assert.Nil(t, r.ParseForm()) 31 assert.Equal(t, []string{"https://wpt.fyi/results.json.gz"}, r.PostForm["result_url"]) 32 assert.Equal(t, []string{"https://wpt.fyi/screenshots.db.gz"}, r.PostForm["screenshot_url"]) 33 assert.Equal(t, "foo,bar", r.PostForm.Get("labels")) 34 w.Write([]byte("OK")) 35 visited = true 36 } 37 server := httptest.NewServer(http.HandlerFunc(handler)) 38 defer server.Close() 39 serverURL, _ := url.Parse(server.URL) 40 41 mockC := gomock.NewController(t) 42 defer mockC.Finish() 43 aeAPI := sharedtest.NewMockAppEngineAPI(mockC) 44 gomock.InOrder( 45 aeAPI.EXPECT().GetVersionedHostname().Return("localhost:8080"), 46 aeAPI.EXPECT().GetResultsUploadURL().Return(serverURL), 47 aeAPI.EXPECT().GetHTTPClientWithTimeout(UploadTimeout).Return(server.Client()), 48 ) 49 50 uc := NewClient(aeAPI) 51 assert.Nil(t, uc.CreateRun( 52 "abcdef1234abcdef1234abcdef1234abcdef1234", 53 "blade-runner", 54 "password", 55 []string{"https://wpt.fyi/results.json.gz"}, 56 []string{"https://wpt.fyi/screenshots.db.gz"}, 57 []string{"foo", "bar"}, 58 )) 59 assert.True(t, visited) 60 }