Update nosql integration

* shutdown and reload database on SIGHUP
This commit is contained in:
max furman 2019-04-24 17:42:14 -07:00
parent b4137053cf
commit cbeca9383b
4 changed files with 120 additions and 41 deletions

View file

@ -5,24 +5,24 @@ import (
"testing"
"github.com/smallstep/assert"
"github.com/smallstep/nosql"
"github.com/smallstep/nosql/database"
)
type MockNoSQLDB struct {
type MockdatabaseDB struct {
err error
ret1, ret2 interface{}
get func(bucket, key []byte) ([]byte, error)
set func(bucket, key, value []byte) error
open func(path string) error
open func(dataSourceName string, opt ...database.Option) error
close func() error
createTable func(bucket []byte) error
deleteTable func(bucket []byte) error
del func(bucket, key []byte) error
list func(bucket []byte) ([]*nosql.Entry, error)
update func(tx *nosql.Tx) error
list func(bucket []byte) ([]*database.Entry, error)
update func(tx *database.Tx) error
}
func (m *MockNoSQLDB) Get(bucket, key []byte) ([]byte, error) {
func (m *MockdatabaseDB) Get(bucket, key []byte) ([]byte, error) {
if m.get != nil {
return m.get(bucket, key)
}
@ -32,56 +32,56 @@ func (m *MockNoSQLDB) Get(bucket, key []byte) ([]byte, error) {
return m.ret1.([]byte), m.err
}
func (m *MockNoSQLDB) Set(bucket, key, value []byte) error {
func (m *MockdatabaseDB) Set(bucket, key, value []byte) error {
if m.set != nil {
return m.set(bucket, key, value)
}
return m.err
}
func (m *MockNoSQLDB) Open(path string) error {
func (m *MockdatabaseDB) Open(dataSourceName string, opt ...database.Option) error {
if m.open != nil {
return m.open(path)
return m.open(dataSourceName, opt...)
}
return m.err
}
func (m *MockNoSQLDB) Close() error {
func (m *MockdatabaseDB) Close() error {
if m.close != nil {
return m.close()
}
return m.err
}
func (m *MockNoSQLDB) CreateTable(bucket []byte) error {
func (m *MockdatabaseDB) CreateTable(bucket []byte) error {
if m.createTable != nil {
return m.createTable(bucket)
}
return m.err
}
func (m *MockNoSQLDB) DeleteTable(bucket []byte) error {
func (m *MockdatabaseDB) DeleteTable(bucket []byte) error {
if m.deleteTable != nil {
return m.deleteTable(bucket)
}
return m.err
}
func (m *MockNoSQLDB) Del(bucket, key []byte) error {
func (m *MockdatabaseDB) Del(bucket, key []byte) error {
if m.del != nil {
return m.del(bucket, key)
}
return m.err
}
func (m *MockNoSQLDB) List(bucket []byte) ([]*nosql.Entry, error) {
func (m *MockdatabaseDB) List(bucket []byte) ([]*database.Entry, error) {
if m.list != nil {
return m.list(bucket)
}
return m.ret1.([]*nosql.Entry), m.err
return m.ret1.([]*database.Entry), m.err
}
func (m *MockNoSQLDB) Update(tx *nosql.Tx) error {
func (m *MockdatabaseDB) Update(tx *database.Tx) error {
if m.update != nil {
return m.update(tx)
}
@ -100,16 +100,16 @@ func TestIsRevoked(t *testing.T) {
},
"false/ErrNotFound": {
key: "sn",
db: &DB{&MockNoSQLDB{err: nosql.ErrNotFound, ret1: nil}},
db: &DB{&MockdatabaseDB{err: database.ErrNotFound, ret1: nil}},
},
"error/checking bucket": {
key: "sn",
db: &DB{&MockNoSQLDB{err: errors.New("force"), ret1: nil}},
db: &DB{&MockdatabaseDB{err: errors.New("force"), ret1: nil}},
err: errors.New("error checking revocation bucket: force"),
},
"true": {
key: "sn",
db: &DB{&MockNoSQLDB{ret1: []byte("value")}},
db: &DB{&MockdatabaseDB{ret1: []byte("value")}},
isRevoked: true,
},
}
@ -136,7 +136,7 @@ func TestRevoke(t *testing.T) {
}{
"error/force isRevoked": {
rci: &RevokedCertificateInfo{Serial: "sn"},
db: &DB{&MockNoSQLDB{
db: &DB{&MockdatabaseDB{
get: func(bucket []byte, sn []byte) ([]byte, error) {
return nil, errors.New("force IsRevoked")
},
@ -145,7 +145,7 @@ func TestRevoke(t *testing.T) {
},
"error/was already revoked": {
rci: &RevokedCertificateInfo{Serial: "sn"},
db: &DB{&MockNoSQLDB{
db: &DB{&MockdatabaseDB{
get: func(bucket []byte, sn []byte) ([]byte, error) {
return nil, nil
},
@ -154,9 +154,9 @@ func TestRevoke(t *testing.T) {
},
"error/database set": {
rci: &RevokedCertificateInfo{Serial: "sn"},
db: &DB{&MockNoSQLDB{
db: &DB{&MockdatabaseDB{
get: func(bucket []byte, sn []byte) ([]byte, error) {
return nil, nosql.ErrNotFound
return nil, database.ErrNotFound
},
set: func(bucket []byte, key []byte, value []byte) error {
return errors.New("force")
@ -166,9 +166,9 @@ func TestRevoke(t *testing.T) {
},
"ok": {
rci: &RevokedCertificateInfo{Serial: "sn"},
db: &DB{&MockNoSQLDB{
db: &DB{&MockdatabaseDB{
get: func(bucket []byte, sn []byte) ([]byte, error) {
return nil, nosql.ErrNotFound
return nil, database.ErrNotFound
},
set: func(bucket []byte, key []byte, value []byte) error {
return nil