diff --git a/mock_nonce_checker_test.go b/mock_nonce_checker_test.go index 4271109..8ef301e 100644 --- a/mock_nonce_checker_test.go +++ b/mock_nonce_checker_test.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.42.1. DO NOT EDIT. +// Code generated by mockery v2.53.6. DO NOT EDIT. package httpsig @@ -22,7 +22,7 @@ func (_m *NonceCheckerMock) EXPECT() *NonceCheckerMock_Expecter { } // CheckNonce provides a mock function with given fields: ctx, nonce -func (_m *NonceCheckerMock) CheckNonce(ctx context.Context, nonce string) error { +func (_m *NonceCheckerMock) CheckNonce(ctx context.Context, nonce NonceValue) error { ret := _m.Called(ctx, nonce) if len(ret) == 0 { @@ -30,7 +30,7 @@ func (_m *NonceCheckerMock) CheckNonce(ctx context.Context, nonce string) error } var r0 error - if rf, ok := ret.Get(0).(func(context.Context, string) error); ok { + if rf, ok := ret.Get(0).(func(context.Context, NonceValue) error); ok { r0 = rf(ctx, nonce) } else { r0 = ret.Error(0) @@ -46,14 +46,14 @@ type NonceCheckerMock_CheckNonce_Call struct { // CheckNonce is a helper method to define mock.On call // - ctx context.Context -// - nonce string +// - nonce NonceValue func (_e *NonceCheckerMock_Expecter) CheckNonce(ctx interface{}, nonce interface{}) *NonceCheckerMock_CheckNonce_Call { return &NonceCheckerMock_CheckNonce_Call{Call: _e.mock.On("CheckNonce", ctx, nonce)} } -func (_c *NonceCheckerMock_CheckNonce_Call) Run(run func(ctx context.Context, nonce string)) *NonceCheckerMock_CheckNonce_Call { +func (_c *NonceCheckerMock_CheckNonce_Call) Run(run func(ctx context.Context, nonce NonceValue)) *NonceCheckerMock_CheckNonce_Call { _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(string)) + run(args[0].(context.Context), args[1].(NonceValue)) }) return _c } @@ -63,7 +63,7 @@ func (_c *NonceCheckerMock_CheckNonce_Call) Return(_a0 error) *NonceCheckerMock_ return _c } -func (_c *NonceCheckerMock_CheckNonce_Call) RunAndReturn(run func(context.Context, string) error) *NonceCheckerMock_CheckNonce_Call { +func (_c *NonceCheckerMock_CheckNonce_Call) RunAndReturn(run func(context.Context, NonceValue) error) *NonceCheckerMock_CheckNonce_Call { _c.Call.Return(run) return _c } diff --git a/nonce.go b/nonce.go index f1185f0..7bdbce0 100644 --- a/nonce.go +++ b/nonce.go @@ -23,7 +23,12 @@ func (ng NonceGetterFunc) GetNonce(ctx context.Context) (string, error) { return // e.g. to prevent replay attacks, or to verify that the nonce is the expected one, like // if requested using the Accept-Signature header. type NonceChecker interface { - CheckNonce(ctx context.Context, nonce string) error + CheckNonce(ctx context.Context, nonce NonceValue) error +} + +type NonceValue struct { + Present bool + Value string } type NonceCheckerFunc func(ctx context.Context, nonce string) error @@ -32,7 +37,7 @@ func (nc NonceCheckerFunc) GetNonce(ctx context.Context, nonce string) error { r type noopNonceChecker struct{} -func (n noopNonceChecker) CheckNonce(_ context.Context, _ string) error { return nil } +func (n noopNonceChecker) CheckNonce(_ context.Context, _ NonceValue) error { return nil } type nonceGetter struct{} diff --git a/serializer_test.go b/serializer_test.go index 1bdbbed..158db7b 100644 --- a/serializer_test.go +++ b/serializer_test.go @@ -127,6 +127,7 @@ func TestNewSerializer(t *testing.T) { t.Helper() require.NoError(t, err) + ser, ok := s.(*strictSerializer) require.True(t, ok) assert.Equal(t, "foo", ser.key) diff --git a/verifier.go b/verifier.go index ef8d432..b70d049 100644 --- a/verifier.go +++ b/verifier.go @@ -286,15 +286,17 @@ func (e *expectations) assert( nc NonceChecker, ) error { var ( - nonce string missingComponents []string cmv compositeMessageVerifier mv messageVerifier ) + nonce := NonceValue{} + nonceValue, noncePresent := params.Params.Get(string(Nonce)) if noncePresent { - nonce = nonceValue.(string) //nolint: forcetypeassert + nonce.Value = nonceValue.(string) //nolint: forcetypeassert + nonce.Present = true } if err := nc.CheckNonce(msg.Context, nonce); err != nil { diff --git a/verifier_test.go b/verifier_test.go index 1f13808..8cf155c 100644 --- a/verifier_test.go +++ b/verifier_test.go @@ -74,6 +74,7 @@ func TestExpectationsAssertParameters(t *testing.T) { now := time.Now().UTC() falseVal := false trueVal := true + noNonce := NonceValue{Present: false, Value: ""} for _, tc := range []struct { uc string @@ -97,7 +98,11 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "test").Return(errors.New("test error")) + nonce := NonceValue{ + Present: true, + Value: "test", + } + nc.EXPECT().CheckNonce(mock.Anything, nonce).Return(errors.New("test error")) }, assert: func(t *testing.T, err error) { t.Helper() @@ -121,7 +126,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -145,7 +150,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -173,7 +178,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -199,7 +204,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -221,7 +226,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -249,7 +254,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -275,7 +280,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -297,7 +302,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -319,7 +324,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -336,7 +341,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -353,7 +358,7 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "").Return(nil) + nc.EXPECT().CheckNonce(mock.Anything, noNonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper() @@ -395,7 +400,8 @@ func TestExpectationsAssertParameters(t *testing.T) { configure: func(t *testing.T, nc *NonceCheckerMock) { t.Helper() - nc.EXPECT().CheckNonce(mock.Anything, "foo").Return(nil) + nonce := NonceValue{Present: true, Value: "foo"} + nc.EXPECT().CheckNonce(mock.Anything, nonce).Return(nil) }, assert: func(t *testing.T, err error) { t.Helper()