blob: dab8032d6812abb29381158efb7a029badd1c2b7 [file] [log] [blame]
package urls
import (
"fmt"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
const (
version = "123456"
)
func TestDownloadURLs_UnknownOSOrArch_ReturnsError(t *testing.T) {
_, err := NewDownloadURLs("unknown", "unknown")
require.Error(t, err)
}
func TestDownloadURLs_ValidOSAndArch_ReturnsValidDownload(t *testing.T) {
urls, err := NewDownloadURLs("darwin", "arm64")
require.NoError(t, err)
require.Equal(t, "https://chromedriver.storage.googleapis.com/LATEST_RELEASE", urls.LatestURL())
require.Equal(t, "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/LAST_CHANGE", urls.LatestCanaryURL())
require.Equal(t, "https://chromedriver.storage.googleapis.com/some-version-number/chromedriver_mac_arm64.zip", urls.DriverURL("some-version-number"))
require.Equal(t, "https://commondatastorage.googleapis.com/chromium-browser-snapshots/Mac_Arm/some-version-number/chromedriver_mac64.zip", urls.CanaryDriverURL("some-version-number"))
}
func TestGetVerionFromURL_GoodHTTPResponse_ReturnsVersionNumber(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_, err := fmt.Fprintln(w, version)
assert.NoError(t, err)
}))
defer ts.Close()
got, err := GetVersionFromURL(ts.URL, ts.Client())
require.NoError(t, err)
require.Equal(t, version, string(got))
}
func TestGetVerionFromURL_BadHTTPResponse_ReturnsError(t *testing.T) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
http.Error(w, "my fake error", http.StatusNotFound)
}))
defer ts.Close()
_, err := GetVersionFromURL(ts.URL, ts.Client())
require.Error(t, err)
}