Skip to content
Snippets Groups Projects
Commit 64d0146b authored by André Sterba's avatar André Sterba
Browse files

Refactor tests

parent e114537a
No related branches found
No related tags found
6 merge requests!376Add additional example application hostname-checker,!349Northbound refactoring to implement NIB concept for devices,!343Add basic application framework and example application to show interaction between events an NBI,!339Create basic venv-manager for use with arista,!327Remove NBI package global services and refactor NBI servers,!324Provide prototype implementation for topology handling
Pipeline #103637 failed
......@@ -58,19 +58,24 @@ func dialer(interceptorServer *AuthInterceptor, userServer *User, roleServer *Ro
}
func TestAuthInterceptor_Unary(t *testing.T) {
a, u, r, s := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
authServer, userServer, roleServer, sbiServer := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
if err != nil {
t.Fatal(err)
}
wrongUserToken, err := createTestUserToken("foo", false, a.userService, a.jwtManager)
wrongUserToken, err := createTestUserToken("foo", false, authServer.userService, authServer.jwtManager)
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
conn, err := grpc.DialContext(ctx, "", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(dialer(a, u, r, s)))
conn, err := grpc.DialContext(
ctx,
"",
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithContextDialer(dialer(authServer, userServer, roleServer, sbiServer)),
)
if err != nil {
t.Fatal(err)
}
......@@ -145,14 +150,19 @@ func TestAuthInterceptor_Unary(t *testing.T) {
}
func TestAuthInterceptor_Stream(t *testing.T) {
a, u, r, s := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
authServer, userServer, roleServer, sbiServer := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
if err != nil {
t.Fatal(err)
}
ctx := context.Background()
conn, err := grpc.DialContext(ctx, "", grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(dialer(a, u, r, s)))
conn, err := grpc.DialContext(
ctx,
"",
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithContextDialer(dialer(authServer, userServer, roleServer, sbiServer)),
)
if err != nil {
t.Fatal(err)
}
......@@ -211,13 +221,13 @@ func TestAuthInterceptor_Stream(t *testing.T) {
}
func TestAuthInterceptor_authorize(t *testing.T) {
a, _, _, _ := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, a.userService, a.jwtManager)
authServer, _, _, _ := getTestAuthInterceptorServer(t)
validToken, err := createTestUserToken("testAdmin", true, authServer.userService, authServer.jwtManager)
if err != nil {
t.Fatal(err)
}
wrongUserToken, err := createTestUserToken("foo", false, a.userService, a.jwtManager)
wrongUserToken, err := createTestUserToken("foo", false, authServer.userService, authServer.jwtManager)
if err != nil {
t.Fatal(err)
}
......@@ -258,7 +268,7 @@ func TestAuthInterceptor_authorize(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := a.authorize(tt.args.ctx, tt.args.method); (err != nil) != tt.wantErr {
if err := authServer.authorize(tt.args.ctx, tt.args.method); (err != nil) != tt.wantErr {
t.Errorf("AuthInterceptor.authorize() error = %v, wantErr %v", err, tt.wantErr)
}
})
......
......@@ -7,8 +7,97 @@ import (
"time"
pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/mocks"
"code.fbi.h-da.de/danet/gosdn/controller/nucleus"
"code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
"github.com/google/uuid"
"github.com/stretchr/testify/mock"
)
func getTestCoreServer(t *testing.T) *Core {
var err error
pndUUID, err = uuid.Parse(pndID)
if err != nil {
t.Fatal(err)
}
sbiUUID, err = uuid.Parse(sbiID)
if err != nil {
t.Fatal(err)
}
pendingChangeUUID, err = uuid.Parse(pendingChangeID)
if err != nil {
t.Fatal(err)
}
committedChangeUUID, err = uuid.Parse(committedChangeID)
if err != nil {
t.Fatal(err)
}
deviceUUID, err = uuid.Parse(ondID)
if err != nil {
t.Fatal(err)
}
mockDevice = &nucleus.CommonDevice{
Model: &openconfig.Device{
System: &openconfig.OpenconfigSystem_System{
Config: &openconfig.OpenconfigSystem_System_Config{
Hostname: &hostname,
DomainName: &domainname,
},
},
},
UUID: deviceUUID,
}
sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG, sbiUUID)
if err != nil {
t.Fatal(err)
}
mockDevice.(*nucleus.CommonDevice).SetSBI(sbi)
mockDevice.(*nucleus.CommonDevice).SetTransport(&mocks.Transport{})
mockDevice.(*nucleus.CommonDevice).SetName(hostname)
sbiStore = nucleus.NewSbiStore(pndUUID)
if err := sbiStore.Add(mockDevice.SBI()); err != nil {
t.Fatal(err)
}
mockChange := &mocks.Change{}
mockChange.On("Age").Return(time.Hour)
mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
mockPnd = &mocks.NetworkDomain{}
mockPnd.On("ID").Return(pndUUID)
mockPnd.On("GetName").Return("test")
mockPnd.On("GetDescription").Return("test")
mockPnd.On("GetSBIs").Return(sbiStore)
mockPnd.On("GetSBI", mock.Anything).Return(mockDevice.SBI(), nil)
mockPnd.On("Devices").Return([]uuid.UUID{deviceUUID})
mockPnd.On("PendingChanges").Return([]uuid.UUID{pendingChangeUUID})
mockPnd.On("CommittedChanges").Return([]uuid.UUID{committedChangeUUID})
mockPnd.On("GetChange", mock.Anything).Return(mockChange, nil)
mockPnd.On("AddDevice", mock.Anything, mock.Anything, mock.Anything).Return(nil)
mockPnd.On("GetDevice", mock.Anything).Return(mockDevice, nil)
mockPnd.On("Commit", mock.Anything).Return(nil)
mockPnd.On("Confirm", mock.Anything).Return(nil)
mockPnd.On("ChangeOND", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(uuid.Nil, nil)
mockPnd.On("Request", mock.Anything, mock.Anything).Return(nil, nil)
pndStore := nucleus.NewMemoryPndStore()
if err := pndStore.Add(mockPnd); err != nil {
t.Fatal(err)
}
c := NewCoreServer(pndStore)
return c
}
func Test_core_Set(t *testing.T) {
type args struct {
ctx context.Context
......@@ -41,9 +130,7 @@ func Test_core_Set(t *testing.T) {
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s := Core{
UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
}
s := getTestCoreServer(t)
got, err := s.CreatePndList(tt.args.ctx, tt.args.request)
if (err != nil) != tt.wantErr {
t.Errorf("core.Set() error = %v, wantErr %v", err, tt.wantErr)
......@@ -86,9 +173,7 @@ func Test_core_GetPnd(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s := Core{
UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
}
s := getTestCoreServer(t)
resp, err := s.GetPnd(tt.args.ctx, tt.args.request)
if (err != nil) != tt.wantErr {
t.Errorf("core.GetPnd() error = %v, wantErr %v", err, tt.wantErr)
......@@ -129,14 +214,12 @@ func Test_core_GetPndList(t *testing.T) {
Timestamp: time.Now().UnixNano(),
},
},
length: 2,
length: 1,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
s := Core{
UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
}
s := getTestCoreServer(t)
resp, err := s.GetPndList(tt.args.ctx, tt.args.request)
if (err != nil) != tt.wantErr {
t.Errorf("core.GetPndList() error = %v, wantErr %v", err, tt.wantErr)
......
......@@ -2,11 +2,9 @@ package server
import (
"context"
"reflect"
"testing"
"time"
pb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/core"
ppb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/pnd"
spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound"
"code.fbi.h-da.de/danet/gosdn/controller/interfaces/device"
......@@ -67,88 +65,6 @@ func initUUIDs(t *testing.T) {
}
}
func getTestCoreServer(t *testing.T) *Core {
var err error
pndUUID, err = uuid.Parse(pndID)
if err != nil {
t.Fatal(err)
}
sbiUUID, err = uuid.Parse(sbiID)
if err != nil {
t.Fatal(err)
}
pendingChangeUUID, err = uuid.Parse(pendingChangeID)
if err != nil {
t.Fatal(err)
}
committedChangeUUID, err = uuid.Parse(committedChangeID)
if err != nil {
t.Fatal(err)
}
deviceUUID, err = uuid.Parse(ondID)
if err != nil {
t.Fatal(err)
}
mockDevice = &nucleus.CommonDevice{
Model: &openconfig.Device{
System: &openconfig.OpenconfigSystem_System{
Config: &openconfig.OpenconfigSystem_System_Config{
Hostname: &hostname,
DomainName: &domainname,
},
},
},
UUID: deviceUUID,
}
sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG, sbiUUID)
if err != nil {
t.Fatal(err)
}
mockDevice.(*nucleus.CommonDevice).SetSBI(sbi)
mockDevice.(*nucleus.CommonDevice).SetTransport(&mocks.Transport{})
mockDevice.(*nucleus.CommonDevice).SetName(hostname)
sbiStore = nucleus.NewSbiStore(pndUUID)
if err := sbiStore.Add(mockDevice.SBI()); err != nil {
t.Fatal(err)
}
mockChange := &mocks.Change{}
mockChange.On("Age").Return(time.Hour)
mockChange.On("State").Return(ppb.ChangeState_CHANGE_STATE_INCONSISTENT)
mockPnd = &mocks.NetworkDomain{}
mockPnd.On("ID").Return(pndUUID)
mockPnd.On("GetName").Return("test")
mockPnd.On("GetDescription").Return("test")
mockPnd.On("GetSBIs").Return(sbiStore)
mockPnd.On("GetSBI", mock.Anything).Return(mockDevice.SBI(), nil)
mockPnd.On("Devices").Return([]uuid.UUID{deviceUUID})
mockPnd.On("PendingChanges").Return([]uuid.UUID{pendingChangeUUID})
mockPnd.On("CommittedChanges").Return([]uuid.UUID{committedChangeUUID})
mockPnd.On("GetChange", mock.Anything).Return(mockChange, nil)
mockPnd.On("AddDevice", mock.Anything, mock.Anything, mock.Anything).Return(nil)
mockPnd.On("GetDevice", mock.Anything).Return(mockDevice, nil)
mockPnd.On("Commit", mock.Anything).Return(nil)
mockPnd.On("Confirm", mock.Anything).Return(nil)
mockPnd.On("ChangeOND", mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(uuid.Nil, nil)
mockPnd.On("Request", mock.Anything, mock.Anything).Return(nil, nil)
pndStore := nucleus.NewMemoryPndStore()
if err := pndStore.Add(mockPnd); err != nil {
t.Fatal(err)
}
c := NewCoreServer(pndStore)
return c
}
func getTestPndServer(t *testing.T) *PndServer {
var err error
pndUUID, err = uuid.Parse(pndID)
......@@ -231,56 +147,6 @@ func getTestPndServer(t *testing.T) *PndServer {
return c
}
// TODO: We should re-add all tests for changes.
// As of now this is not possible as we can't use the mock pnd, as it can't be serialized because of
// cyclic use of mock in it.
func Test_pnd_Get(t *testing.T) {
type args struct {
ctx context.Context
request *pb.GetPndRequest
}
tests := []struct {
name string
args args
want *pb.GetPndResponse
wantErr bool
}{
{
name: "get pnd",
args: args{
ctx: context.Background(),
request: &pb.GetPndRequest{
Pid: pndID,
},
},
want: &pb.GetPndResponse{
Pnd: &ppb.PrincipalNetworkDomain{
Id: pndID,
Name: "test",
Description: "test"},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
c := getTestCoreServer(t)
resp, err := c.GetPnd(tt.args.ctx, tt.args.request)
if (err != nil) != tt.wantErr {
t.Errorf("Get() error = %v, wantErr %v", err, tt.wantErr)
return
}
got := resp.GetPnd()
if !reflect.DeepEqual(got, tt.want.Pnd) {
t.Errorf("Get() got = %v, want %v", got, tt.want.Pnd)
}
})
}
}
func Test_pnd_GetPath(t *testing.T) {
initUUIDs(t)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment