@@ -60,7 +60,7 @@ func Test_WrapHandler(t *testing.T) {
6060
6161// test various failures
6262func TestWrapHandlerServerSigns (t * testing.T ) {
63- serverSignsTestCase := func (t * testing.T , nilSigner , dontSignResponse , earlyExpires , noSigner , badKey , badAlgs bool ) {
63+ serverSignsTestCase := func (t * testing.T , nilSigner , dontSignResponse , earlyExpires , noSigner , badKey , badAlgs , verifyRequest bool ) {
6464 // Callback to let the server locate its signing key and configuration
6565 var signConfig * SignConfig
6666 if ! earlyExpires {
@@ -100,6 +100,13 @@ func TestWrapHandlerServerSigns(t *testing.T) {
100100 if dontSignResponse {
101101 config = config .SetSignResponse (false )
102102 }
103+ if verifyRequest {
104+ serverVerifier , _ := NewHMACSHA256Verifier ("key" , bytes .Repeat ([]byte {9 }, 64 ), NewVerifyConfig (), * NewFields ())
105+ config = config .SetFetchVerifier (func (r * http.Request ) (sigName string , verifier * Verifier ) {
106+ return "sig333" , serverVerifier
107+ })
108+ config = config .SetVerifyRequest (true ) // override
109+ }
103110 ts := httptest .NewServer (WrapHandler (http .HandlerFunc (simpleHandler ), config ))
104111 defer ts .Close ()
105112
@@ -117,35 +124,39 @@ func TestWrapHandlerServerSigns(t *testing.T) {
117124 verifier , _ := NewHMACSHA256Verifier ("key" , key , verifyConfig , * NewFields ())
118125
119126 client := NewDefaultClient ("sig1" , nil , verifier , nil )
120- _ , err := client .Get (ts .URL )
121- if err == nil {
122- t .Errorf ("Surprise! Signature validation was successful." )
127+ res , err := client .Get (ts .URL )
128+ if err == nil && res . StatusCode == 200 {
129+ t .Errorf ("Surprise! Server sent 200 OK and signature validation was successful." )
123130 }
124131 }
125132 nilSigner := func (t * testing.T ) {
126- serverSignsTestCase (t , true , false , false , false , false , false )
133+ serverSignsTestCase (t , true , false , false , false , false , false , false )
127134 }
128135 dontSignResponse := func (t * testing.T ) {
129- serverSignsTestCase (t , false , true , false , false , false , false )
136+ serverSignsTestCase (t , false , true , false , false , false , false , false )
130137 }
131138 earlyExpires := func (t * testing.T ) {
132- serverSignsTestCase (t , false , false , true , false , false , false )
139+ serverSignsTestCase (t , false , false , true , false , false , false , false )
133140 }
134141 noSigner := func (t * testing.T ) {
135- serverSignsTestCase (t , false , false , false , true , false , false )
142+ serverSignsTestCase (t , false , false , false , true , false , false , false )
136143 }
137144 badKey := func (t * testing.T ) {
138- serverSignsTestCase (t , false , false , false , false , true , false )
145+ serverSignsTestCase (t , false , false , false , false , true , false , false )
139146 }
140147 badAlgs := func (t * testing.T ) {
141- serverSignsTestCase (t , false , false , false , false , false , true )
148+ serverSignsTestCase (t , false , false , false , false , false , true , false )
149+ }
150+ failVerify := func (t * testing.T ) {
151+ serverSignsTestCase (t , false , false , false , false , false , false , true )
142152 }
143153 t .Run ("nil Signer" , nilSigner )
144154 t .Run ("don't sign response" , dontSignResponse )
145155 t .Run ("early expires field" , earlyExpires )
146156 t .Run ("bad fetch Signer" , noSigner )
147157 t .Run ("wrong verification key" , badKey )
148158 t .Run ("failed algorithm check" , badAlgs )
159+ t .Run ("failed request verification" , failVerify )
149160}
150161
151162func TestWrapHandlerServerFails (t * testing.T ) { // non-default verify handler
0 commit comments