github.com/gavinw2006/hashicorp-terraform@v0.11.12-beta1/httpclient/client_test.go (about)

     1  package httpclient
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"net/http/httptest"
     7  	"net/url"
     8  	"testing"
     9  
    10  	"github.com/hashicorp/terraform/version"
    11  )
    12  
    13  func TestNew_userAgent(t *testing.T) {
    14  	var actualUserAgent string
    15  	ts := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
    16  		actualUserAgent = req.UserAgent()
    17  	}))
    18  	defer ts.Close()
    19  
    20  	tsURL, err := url.Parse(ts.URL)
    21  	if err != nil {
    22  		t.Fatal(err)
    23  	}
    24  
    25  	for i, c := range []struct {
    26  		expected string
    27  		request  func(c *http.Client) error
    28  	}{
    29  		{
    30  			fmt.Sprintf("Terraform/%s", version.Version),
    31  			func(c *http.Client) error {
    32  				_, err := c.Get(ts.URL)
    33  				return err
    34  			},
    35  		},
    36  		{
    37  			"foo/1",
    38  			func(c *http.Client) error {
    39  				req := &http.Request{
    40  					Method: "GET",
    41  					URL:    tsURL,
    42  					Header: http.Header{
    43  						"User-Agent": []string{"foo/1"},
    44  					},
    45  				}
    46  				_, err := c.Do(req)
    47  				return err
    48  			},
    49  		},
    50  		{
    51  			"",
    52  			func(c *http.Client) error {
    53  				req := &http.Request{
    54  					Method: "GET",
    55  					URL:    tsURL,
    56  					Header: http.Header{
    57  						"User-Agent": []string{""},
    58  					},
    59  				}
    60  				_, err := c.Do(req)
    61  				return err
    62  			},
    63  		},
    64  	} {
    65  		t.Run(fmt.Sprintf("%d %s", i, c.expected), func(t *testing.T) {
    66  			actualUserAgent = ""
    67  			cli := New()
    68  			err := c.request(cli)
    69  			if err != nil {
    70  				t.Fatal(err)
    71  			}
    72  			if actualUserAgent != c.expected {
    73  				t.Fatalf("actual User-Agent '%s' is not '%s'", actualUserAgent, c.expected)
    74  			}
    75  		})
    76  	}
    77  }