package factory import ( "fmt" "net/http" "net/http/httptest" "os" "regexp" "testing" "github.com/MakeNowJust/heredoc" "github.com/cli/cli/v2/pkg/iostreams" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestNewHTTPClient(t *testing.T) { type args struct { config configGetter appVersion string setAccept bool } tests := []struct { name string args args envDebug string host string wantHeader map[string]string wantStderr string }{ { name: "github.com with Accept header", args: args{ config: tinyConfig{"github.com:oauth_token": "MYTOKEN"}, appVersion: "v1.2.3", setAccept: true, }, host: "github.com", wantHeader: map[string]string{ "authorization": "token MYTOKEN", "user-agent": "GitHub CLI v1.2.3", "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", }, wantStderr: "", }, { name: "github.com no Accept header", args: args{ config: tinyConfig{"github.com:oauth_token": "MYTOKEN"}, appVersion: "v1.2.3", setAccept: false, }, host: "github.com", wantHeader: map[string]string{ "authorization": "token MYTOKEN", "user-agent": "GitHub CLI v1.2.3", "accept": "", }, wantStderr: "", }, { name: "github.com no authentication token", args: args{ config: tinyConfig{"example.com:oauth_token": "MYTOKEN"}, appVersion: "v1.2.3", setAccept: true, }, host: "github.com", wantHeader: map[string]string{ "authorization": "", "user-agent": "GitHub CLI v1.2.3", "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", }, wantStderr: "", }, { name: "github.com in verbose mode", args: args{ config: tinyConfig{"github.com:oauth_token": "MYTOKEN"}, appVersion: "v1.2.3", setAccept: true, }, host: "github.com", envDebug: "api", wantHeader: map[string]string{ "authorization": "token MYTOKEN", "user-agent": "GitHub CLI v1.2.3", "accept": "application/vnd.github.merge-info-preview+json, application/vnd.github.nebula-preview", }, wantStderr: heredoc.Doc(` * Request at