Add tests for box
This commit is contained in:
parent
5fc9dd94fe
commit
a8ce240049
@ -6,6 +6,8 @@ import (
|
||||
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
|
||||
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
|
||||
bolt "go.etcd.io/bbolt"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
var boxBucket = []byte("box")
|
||||
@ -94,12 +96,19 @@ func (s *State) boxDelete(
|
||||
memTxn *memdb.Txn,
|
||||
ref *vagrant_plugin_sdk.Ref_Box,
|
||||
) (err error) {
|
||||
b, err := s.boxGet(dbTxn, memTxn, ref)
|
||||
if err != nil {
|
||||
if status.Code(err) == codes.NotFound {
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
// TODO: should references to the box, say in the machine also be deleted?
|
||||
// Delete the box
|
||||
if err = dbTxn.Bucket(boxBucket).Delete(s.boxIdByRef(ref)); err != nil {
|
||||
if err = dbTxn.Bucket(boxBucket).Delete(s.boxId(b)); err != nil {
|
||||
return
|
||||
}
|
||||
if err = memTxn.Delete(boxIndexTableName, s.newBoxIndexRecordByRef(ref)); err != nil {
|
||||
if err = memTxn.Delete(boxIndexTableName, s.newBoxIndexRecord(b)); err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
|
||||
120
internal/server/singleprocess/state/box_test.go
Normal file
120
internal/server/singleprocess/state/box_test.go
Normal file
@ -0,0 +1,120 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/hashicorp/vagrant-plugin-sdk/proto/vagrant_plugin_sdk"
|
||||
"github.com/hashicorp/vagrant/internal/server/proto/vagrant_server"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestBox(t *testing.T) {
|
||||
t.Run("Get returns error if not exist", func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
s := TestState(t)
|
||||
defer s.Close()
|
||||
|
||||
_, err := s.BoxGet(&vagrant_plugin_sdk.Ref_Box{ResourceId: "nothing"})
|
||||
require.Error(err)
|
||||
})
|
||||
|
||||
t.Run("Put and Get", func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
s := TestState(t)
|
||||
defer s.Close()
|
||||
|
||||
testBox := &vagrant_server.Box{
|
||||
Id: "qwerwasdf",
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "1.2.3",
|
||||
Provider: "virtualbox",
|
||||
}
|
||||
|
||||
testBoxRef := &vagrant_plugin_sdk.Ref_Box{
|
||||
ResourceId: "qwerwasdf",
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "1.2.3",
|
||||
Provider: "virtualbox",
|
||||
}
|
||||
|
||||
// Set
|
||||
err := s.BoxPut(testBox)
|
||||
require.NoError(err)
|
||||
|
||||
// Get full ref
|
||||
{
|
||||
resp, err := s.BoxGet(testBoxRef)
|
||||
require.NoError(err)
|
||||
require.NotNil(resp)
|
||||
require.Equal(resp.Name, testBox.Name)
|
||||
}
|
||||
|
||||
// Get by id
|
||||
{
|
||||
resp, err := s.BoxGet(&vagrant_plugin_sdk.Ref_Box{
|
||||
ResourceId: "qwerwasdf",
|
||||
})
|
||||
require.NoError(err)
|
||||
require.NotNil(resp)
|
||||
require.Equal(resp.Name, testBox.Name)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("Delete", func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
s := TestState(t)
|
||||
defer s.Close()
|
||||
|
||||
testBox := &vagrant_server.Box{
|
||||
Id: "qwerwasdf",
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "1.2.3",
|
||||
Provider: "virtualbox",
|
||||
}
|
||||
|
||||
testBoxRef := &vagrant_plugin_sdk.Ref_Box{
|
||||
ResourceId: "qwerwasdf",
|
||||
}
|
||||
err := s.BoxDelete(testBoxRef)
|
||||
require.NoError(err)
|
||||
|
||||
err = s.BoxPut(testBox)
|
||||
require.NoError(err)
|
||||
|
||||
err = s.BoxDelete(testBoxRef)
|
||||
require.NoError(err)
|
||||
|
||||
_, err = s.BoxGet(testBoxRef)
|
||||
require.Error(err)
|
||||
})
|
||||
|
||||
t.Run("List", func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
|
||||
s := TestState(t)
|
||||
defer s.Close()
|
||||
|
||||
err := s.BoxPut(&vagrant_server.Box{
|
||||
Id: "qwerwasdf",
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "1.2.3",
|
||||
Provider: "virtualbox",
|
||||
})
|
||||
require.NoError(err)
|
||||
|
||||
err = s.BoxPut(&vagrant_server.Box{
|
||||
Id: "rrbrwasdf",
|
||||
Name: "hashicorp/bionic",
|
||||
Version: "1.2.4",
|
||||
Provider: "virtualbox",
|
||||
})
|
||||
require.NoError(err)
|
||||
|
||||
b, err := s.BoxList()
|
||||
require.NoError(err)
|
||||
require.Len(b, 2)
|
||||
})
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user