storj/satellite/orders/serials_test.go
Egon Elbre f3b4bf2b7c satellite/satellitedb/satellitedbtest: pass ctx as an argument
ctx is created in most tests, instead pass in as argument
to reduce code duplication.

Change-Id: I466c51c008392001129c8b007c9d6b3619935ac4
2020-01-20 16:35:42 +02:00

58 lines
1.8 KiB
Go

// Copyright (C) 2019 Storj Labs, Inc.
// See LICENSE for copying information.
package orders_test
import (
"testing"
"time"
"github.com/stretchr/testify/require"
"storj.io/common/storj"
"storj.io/common/testcontext"
"storj.io/storj/satellite"
"storj.io/storj/satellite/orders"
"storj.io/storj/satellite/satellitedb/satellitedbtest"
)
func TestSerialNumbers(t *testing.T) {
satellitedbtest.Run(t, func(ctx *testcontext.Context, t *testing.T, db satellite.DB) {
ordersDB := db.Orders()
expectedBucket := []byte("bucketID")
err := ordersDB.CreateSerialInfo(ctx, storj.SerialNumber{1}, expectedBucket, time.Now().UTC())
require.NoError(t, err)
bucketID, err := ordersDB.UseSerialNumber(ctx, storj.SerialNumber{1}, storj.NodeID{1})
require.NoError(t, err)
require.Equal(t, expectedBucket, bucketID)
// try to use used serial number
_, err = ordersDB.UseSerialNumber(ctx, storj.SerialNumber{1}, storj.NodeID{1})
require.Error(t, err)
require.True(t, orders.ErrUsingSerialNumber.Has(err))
err = ordersDB.UnuseSerialNumber(ctx, storj.SerialNumber{1}, storj.NodeID{1})
require.NoError(t, err)
bucketID, err = ordersDB.UseSerialNumber(ctx, storj.SerialNumber{1}, storj.NodeID{1})
require.NoError(t, err)
require.Equal(t, expectedBucket, bucketID)
// not existing serial number
bucketID, err = ordersDB.UseSerialNumber(ctx, storj.SerialNumber{99}, storj.NodeID{1})
require.Error(t, err)
require.True(t, orders.ErrUsingSerialNumber.Has(err))
require.Empty(t, bucketID)
deleted, err := ordersDB.DeleteExpiredSerials(ctx, time.Now().UTC())
require.NoError(t, err)
require.Equal(t, deleted, 1)
// check serial number has been deleted from serial_numbers and used_serials
_, err = ordersDB.UseSerialNumber(ctx, storj.SerialNumber{1}, storj.NodeID{1})
require.EqualError(t, err, "serial number: serial number not found")
})
}