diff --git a/controller/northbound/server/auth_interceptor_test.go b/controller/northbound/server/auth_interceptor_test.go index 8498b0e9d5eab1ef0eedcaeb49a104157eecd2d2..0b4bb3757e4e00fbb5694ea1ccf0b90bd6a0e3d2 100644 --- a/controller/northbound/server/auth_interceptor_test.go +++ b/controller/northbound/server/auth_interceptor_test.go @@ -18,6 +18,7 @@ import ( ) func getTestAuthInterceptorServer(t *testing.T) (*AuthInterceptor, *User, *Role, *SbiServer) { + initUUIDs(t) jwtManager := rbac.NewJWTManager("test", time.Minute) userStore := rbac.NewMemoryUserStore() userService := rbac.NewUserService(userStore) @@ -25,16 +26,21 @@ func getTestAuthInterceptorServer(t *testing.T) (*AuthInterceptor, *User, *Role, roleStore := rbac.NewMemoryRoleStore() roleService := rbac.NewRoleService(roleStore) + mockPnd := getMockPnd(t) + pndStore := nucleus.NewMemoryPndStore() + if err := pndStore.Add(mockPnd); err != nil { + t.Fatal(err) + } s := NewAuthInterceptor(jwtManager, userService, roleService) u := NewUserServer(jwtManager, userService) r := NewRoleServer(jwtManager, roleService) - sbi := NewSbiServer(pndStore) + sbiServer := NewSbiServer(pndStore) clearAndCreateAuthTestSetup(userService, roleService) - return s, u, r, sbi + return s, u, r, sbiServer } func dialer(interceptorServer *AuthInterceptor, userServer *User, roleServer *Role, sbiServer *SbiServer) func(context.Context, string) (net.Conn, error) { diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go index bf7d1c463d448e145b9a6a1be993c3893f78eeed..9534e6fdd0eeb58930057e3dabf8dc4e9eedac40 100644 --- a/controller/northbound/server/pnd_test.go +++ b/controller/northbound/server/pnd_test.go @@ -7,8 +7,6 @@ import ( 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" - "code.fbi.h-da.de/danet/gosdn/controller/interfaces/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" @@ -20,51 +18,6 @@ import ( "github.com/stretchr/testify/mock" ) -const pndID = "2043519e-46d1-4963-9a8e-d99007e104b8" -const pendingChangeID = "0992d600-f7d4-4906-9559-409b04d59a5f" -const committedChangeID = "804787d6-e5a8-4dba-a1e6-e73f96b0119e" -const sbiID = "f6fd4b35-f039-4111-9156-5e4501bb8a5a" -const ondID = "7e0ed8cc-ebf5-46fa-9794-741494914883" - -var hostname = "manfred" -var domainname = "uwe" -var pndUUID uuid.UUID -var sbiUUID uuid.UUID -var pendingChangeUUID uuid.UUID -var committedChangeUUID uuid.UUID -var deviceUUID uuid.UUID -var mockPnd *mocks.NetworkDomain -var mockDevice device.Device -var sbiStore southbound.Store - -func initUUIDs(t *testing.T) { - 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) - } -} - func getTestPndServer(t *testing.T) *PndServer { var err error pndUUID, err = uuid.Parse(pndID) diff --git a/controller/northbound/server/test_util_test.go b/controller/northbound/server/test_util_test.go index 1a9db343a734099692c00c824d6a1a1ca6b73f76..1456c90e0271e427922a6dad4ef52fd9ce708937 100644 --- a/controller/northbound/server/test_util_test.go +++ b/controller/northbound/server/test_util_test.go @@ -6,15 +6,40 @@ import ( "log" "testing" + spb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/southbound" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/device" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/networkdomain" rbacInterfaces "code.fbi.h-da.de/danet/gosdn/controller/interfaces/rbac" + "code.fbi.h-da.de/danet/gosdn/controller/interfaces/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" "code.fbi.h-da.de/danet/gosdn/controller/rbac" "code.fbi.h-da.de/danet/gosdn/controller/store" "github.com/google/uuid" "github.com/sethvargo/go-password/password" + "github.com/stretchr/testify/mock" "golang.org/x/crypto/argon2" ) +const pndID = "2043519e-46d1-4963-9a8e-d99007e104b8" +const pendingChangeID = "0992d600-f7d4-4906-9559-409b04d59a5f" +const committedChangeID = "804787d6-e5a8-4dba-a1e6-e73f96b0119e" +const sbiID = "f6fd4b35-f039-4111-9156-5e4501bb8a5a" +const ondID = "7e0ed8cc-ebf5-46fa-9794-741494914883" + +var hostname = "manfred" +var domainname = "uwe" +var pndUUID uuid.UUID +var sbiUUID uuid.UUID +var pendingChangeUUID uuid.UUID +var committedChangeUUID uuid.UUID +var deviceUUID uuid.UUID +var mockPnd *mocks.NetworkDomain +var mockDevice device.Device +var sbiStore southbound.Store + // Name of this file requires _test at the end, because of how the availability of varibales is handled in test files of go packages. // Does not include actual file tests! @@ -179,3 +204,75 @@ func createTestUserToken(userName string, validTokenRequired bool, userService r func createHashedAndSaltedPassword(plainPWD, salt string) string { return base64.RawStdEncoding.EncodeToString(argon2.IDKey([]byte(plainPWD), []byte(salt), 1, 64*1024, 4, 32)) } + +func getMockPnd(t *testing.T) networkdomain.NetworkDomain { + 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) + } + + 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("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) + + return mockPnd +} + +func initUUIDs(t *testing.T) { + 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) + } +}