@@ -30,6 +30,7 @@ type vaultResponse struct {
3030}
3131
3232var (
33+ vaultRequests []* http.Request
3334 fakeVaultResponse vaultResponse
3435 vaultResponseFooBar = vaultResponse {
3536 secret : & api.Secret {
@@ -69,9 +70,14 @@ func TestProxy(t *testing.T) {
6970 defer close ()
7071
7172 t .Run ("happy path bare http client" , func (t * testing.T ) {
73+ // reset request array
74+ vaultRequests = []* http.Request {}
7275 fakeVaultResponse = vaultResponseFooBar
7376 resp , err := http .Get (fmt .Sprintf ("http://%s/v1/secret/data/foo" , proxyAddr ))
7477
78+ // the stored request should be the one _from the proxy_ since it's stored by
79+ // the (fake) vault.
80+ require .NotEmpty (t , vaultRequests [0 ].Header .Get ("User-Agent" ))
7581 require .NoError (t , err )
7682 require .Equal (t , http .StatusOK , resp .StatusCode )
7783 defer resp .Body .Close ()
@@ -83,12 +89,15 @@ func TestProxy(t *testing.T) {
8389 })
8490
8591 t .Run ("happy path with vault client" , func (t * testing.T ) {
92+ vaultRequests = []* http.Request {}
8693 fakeVaultResponse = vaultResponseFooBar
8794 proxyVaultClient , err := api .NewClient (& api.Config {
8895 Address : "http://" + proxyAddr ,
8996 })
9097 require .NoError (t , err )
9198 resp , err := proxyVaultClient .Logical ().Read ("secret/data/foo" )
99+
100+ require .NotEmpty (t , vaultRequests [0 ].Header .Get ("User-Agent" ))
92101 require .NoError (t , err )
93102 require .Equal (t , "bar" , resp .Data ["foo" ])
94103 })
@@ -103,6 +112,7 @@ func TestProxy(t *testing.T) {
103112 })
104113
105114 t .Run ("failed upstream request should give 502" , func (t * testing.T ) {
115+
106116 fakeVaultResponse = vaultResponseFooBar
107117 resp , err := http .Get (fmt .Sprintf ("http://%s/FailedTransport" , proxyAddr ))
108118 require .NoError (t , err )
@@ -114,7 +124,7 @@ func startProxy(t *testing.T, vaultAddress string, ses *session.Session) (string
114124 vaultConfig := api .DefaultConfig ()
115125 require .NoError (t , vaultConfig .Error )
116126 vaultConfig .Address = vaultAddress
117- client , err := vault .NewClient (hclog .NewNullLogger (), vaultConfig , config.AuthConfig {}, ses )
127+ client , err := vault .NewClient ("" , "" , hclog .NewNullLogger (), vaultConfig , config.AuthConfig {}, ses )
118128 require .NoError (t , err )
119129 client .VaultConfig .Address = vaultAddress
120130 ln , err := net .Listen ("tcp" , "127.0.0.1:0" )
@@ -130,6 +140,10 @@ func startProxy(t *testing.T, vaultAddress string, ses *session.Session) (string
130140func fakeVault () * httptest.Server {
131141 vaultResponsePtr := & fakeVaultResponse
132142 return httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
143+ // after handling, save the request so we can inspect it in test cases
144+ defer func () {
145+ vaultRequests = append (vaultRequests , r )
146+ }()
133147 switch {
134148 case strings .Contains (r .URL .Path , "login" ):
135149 b , err := json .Marshal (vaultLoginResponse )
0 commit comments