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  }