-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathutils_test.go
60 lines (44 loc) · 2.22 KB
/
utils_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package async_sequencer
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/code-payments/code-server/pkg/code/data/fulfillment"
"github.com/code-payments/code-server/pkg/code/data/nonce"
)
func TestMarkNonceAsAvailableDueToRevokedFulfillment_SafetyChecks(t *testing.T) {
env := setupWorkerEnv(t)
fulfillmentRecord := env.createAnyFulfillmentInState(t, fulfillment.StateUnknown)
nonceRecord, err := env.data.GetNonce(env.ctx, *fulfillmentRecord.Nonce)
require.NoError(t, err)
nonceRecord.State = nonce.StateAvailable
require.NoError(t, env.data.SaveNonce(env.ctx, nonceRecord))
err = env.worker.markNonceAvailableDueToRevokedFulfillment(env.ctx, fulfillmentRecord)
require.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "unexpected nonce state"))
nonceRecord.State = nonce.StateReleased
require.NoError(t, env.data.SaveNonce(env.ctx, nonceRecord))
err = env.worker.markNonceAvailableDueToRevokedFulfillment(env.ctx, fulfillmentRecord)
require.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "unexpected nonce state"))
nonceRecord.Blockhash = "blockhash"
require.NoError(t, env.data.SaveNonce(env.ctx, nonceRecord))
err = env.worker.markNonceAvailableDueToRevokedFulfillment(env.ctx, fulfillmentRecord)
require.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "unexpected nonce blockhash"))
nonceRecord.Signature = "signature"
require.NoError(t, env.data.SaveNonce(env.ctx, nonceRecord))
err = env.worker.markNonceAvailableDueToRevokedFulfillment(env.ctx, fulfillmentRecord)
require.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "unexpected nonce signature"))
fulfillmentRecord.State = fulfillment.StatePending
err = env.worker.markNonceAvailableDueToRevokedFulfillment(env.ctx, fulfillmentRecord)
require.Error(t, err)
assert.True(t, strings.Contains(err.Error(), "fulfillment is in dangerous state to manage nonce state"))
actualNonceRecord, err := env.data.GetNonce(env.ctx, *fulfillmentRecord.Nonce)
require.NoError(t, err)
assert.Equal(t, nonce.StateReleased, actualNonceRecord.State)
assert.Equal(t, "signature", actualNonceRecord.Signature)
assert.Equal(t, "blockhash", actualNonceRecord.Blockhash)
}