Skip to content
Snippets Groups Projects
pluginFilesystemStore_test.go 3.88 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	"context"
    
    	"testing"
    
    	"code.fbi.h-da.de/danet/gosdn/controller/interfaces/plugin"
    	"code.fbi.h-da.de/danet/gosdn/controller/mocks"
    	"code.fbi.h-da.de/danet/gosdn/controller/store"
    	"github.com/google/uuid"
    
    	"go.mongodb.org/mongo-driver/mongo"
    
    )
    
    func ensureStoreFilesForTestsAreRemoved() {
    	ensureStoreFileForTestsIsRemoved(store.PluginFilenameSuffix)
    	ensureStoreFileForTestsIsRemoved(store.NetworkElementFilenameSuffix)
    }
    
    func TestAddPlugin(t *testing.T) {
    	defer ensureStoreFilesForTestsAreRemoved()
    
    
    	pluginStore := NewPluginStore(&mongo.Database{})
    
    	err := pluginStore.Add(context.TODO(), mockPlugin)
    
    	if err != nil {
    		t.Error(err)
    	}
    }
    
    func TestGetAllPlugins(t *testing.T) {
    	defer ensureStoreFilesForTestsAreRemoved()
    
    
    	pluginStore := NewPluginStore(&mongo.Database{})
    
    
    	mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
    	if err != nil {
    		t.Error(err)
    	}
    	mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
    	if err != nil {
    		t.Error(err)
    	}
    
    	mockPlugin1 := new(mocks.Plugin)
    	mockPlugin2 := new(mocks.Plugin)
    	mockPlugin1.On("ID").Return(mockPlugin1ID)
    	mockPlugin2.On("ID").Return(mockPlugin2ID)
    
    	inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
    
    	for _, plugin := range inputPlugins {
    
    		err := pluginStore.Add(context.TODO(), plugin)
    
    	returnPlugins, err := pluginStore.GetAll(context.TODO())
    
    	if err != nil {
    		t.Error(err)
    	}
    
    	length := len(returnPlugins)
    	if length != 2 {
    		t.Errorf("GetAll() length of array = %v, want %v", length, 2)
    	}
    
    	for i, sbi := range returnPlugins {
    		if sbi.ID != inputPlugins[i].ID().String() {
    			t.Errorf("GetAll() = %v, want %v", sbi.ID, inputPlugins[i].ID().String())
    		}
    	}
    }
    
    func TestGetPlugin(t *testing.T) {
    	defer ensureStoreFilesForTestsAreRemoved()
    
    
    	pluginStore := NewPluginStore(&mongo.Database{})
    
    
    	mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
    	if err != nil {
    		t.Error(err)
    	}
    	mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
    	if err != nil {
    		t.Error(err)
    	}
    	mockPlugin1 := &mocks.Plugin{}
    	mockPlugin1.On("ID").Return(mockPlugin1ID)
    	mockPlugin2 := &mocks.Plugin{}
    	mockPlugin2.On("ID").Return(mockPlugin2ID)
    
    	inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
    
    	for _, plugins := range inputPlugins {
    
    		err := pluginStore.Add(context.TODO(), plugins)
    
    	returnPlugin, err := pluginStore.Get(context.TODO(), store.Query{ID: mockPlugin2ID, Name: ""})
    
    	if err != nil {
    		t.Error(err)
    	}
    
    	if returnPlugin.ID != mockPlugin2.ID().String() {
    		t.Errorf("Get() = %v, want %v", returnPlugin.ID, mockPlugin2.ID().String())
    	}
    }
    
    func TestDeleteAllPlugins(t *testing.T) {
    	defer ensureStoreFilesForTestsAreRemoved()
    
    
    	pluginStore := NewPluginStore(&mongo.Database{})
    
    
    	mockPlugin1ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa")
    	if err != nil {
    		t.Error(err)
    	}
    	mockPlugin2ID, err := uuid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaab")
    	if err != nil {
    		t.Error(err)
    	}
    	mockPlugin1 := mockPlugin(t)
    
    	mockPlugin1.(*mocks.Plugin).On("ID").Return(mockPlugin1ID) //nolint:errcheck
    
    	mockPlugin2.(*mocks.Plugin).On("ID").Return(mockPlugin2ID) //nolint:errcheck
    
    
    	inputPlugins := [2]plugin.Plugin{mockPlugin1, mockPlugin2}
    
    	for _, plugins := range inputPlugins {
    
    		err := pluginStore.Add(context.TODO(), plugins)
    
    	err = pluginStore.Delete(context.TODO(), mockPlugin1)
    
    	returnPlugins, err := pluginStore.GetAll(context.TODO())
    
    	if err != nil {
    		t.Error(err)
    	}
    
    	length := len(returnPlugins)
    	if length != 1 {
    		t.Errorf("GetAll() length of array = %v, want %v", length, 2)
    	}
    
    	if returnPlugins[0].ID != inputPlugins[1].ID().String() {
    		t.Errorf("GetAll() = %v, want %v", returnPlugins[0].ID, inputPlugins[1].ID().String())
    	}
    }