diff --git a/controller/northbound/server/pnd_test.go b/controller/northbound/server/pnd_test.go
index 58771744dc7f0922f8a9a42ca89f89ef2b1aa66d..5b7a6aa3c123f314859db18815507b4802c5ee70 100644
--- a/controller/northbound/server/pnd_test.go
+++ b/controller/northbound/server/pnd_test.go
@@ -2,7 +2,6 @@ package server
 
 import (
 	"context"
-	"os"
 	"reflect"
 	"testing"
 	"time"
@@ -14,14 +13,12 @@ import (
 	"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/controller/rbac"
 	"code.fbi.h-da.de/danet/gosdn/models/generated/openconfig"
 	"github.com/golang/protobuf/proto"
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/go-cmp/cmp/cmpopts"
 	"github.com/google/uuid"
 	"github.com/openconfig/gnmi/proto/gnmi"
-	log "github.com/sirupsen/logrus"
 	"github.com/stretchr/testify/mock"
 )
 
@@ -42,32 +39,59 @@ var mockPnd *mocks.NetworkDomain
 var mockDevice device.Device
 var sbiStore southbound.Store
 
-func TestMain(m *testing.M) {
-	log.SetReportCaller(true)
+func initUUIDs(t *testing.T) {
 	var err error
 	pndUUID, err = uuid.Parse(pndID)
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
 
 	sbiUUID, err = uuid.Parse(sbiID)
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
 
 	pendingChangeUUID, err = uuid.Parse(pendingChangeID)
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
 
 	committedChangeUUID, err = uuid.Parse(committedChangeID)
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
 
 	deviceUUID, err = uuid.Parse(ondID)
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
+	}
+}
+
+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{
@@ -84,14 +108,14 @@ func TestMain(m *testing.M) {
 
 	sbi, err := nucleus.NewSBI(spb.Type_TYPE_OPENCONFIG, sbiUUID)
 	if err != nil {
-		log.Fatal(err)
+		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 {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
 
 	mockChange := &mocks.Change{}
@@ -115,21 +139,96 @@ func TestMain(m *testing.M) {
 	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)
 
-	pndc = nucleus.NewMemoryPndStore()
-	if err := pndc.Add(mockPnd); err != nil {
-		log.Fatal(err)
+	pndStore := nucleus.NewMemoryPndStore()
+	if err := pndStore.Add(mockPnd); err != nil {
+		t.Fatal(err)
 	}
 
-	// everyting auth related
-	userService = rbac.NewUserService(rbac.NewMemoryUserStore())
-	roleService = rbac.NewRoleService(rbac.NewMemoryRoleStore())
-	err = clearAndCreateAuthTestSetup()
+	c := NewCoreServer(pndStore)
+
+	return c
+}
+
+func getTestPndServer(t *testing.T) *pndServer {
+	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 {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
-	jwt = rbac.NewJWTManager("", 1*time.Minute)
 
-	os.Exit(m.Run())
+	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 := NewPndServer(pndStore)
+
+	return c
 }
 
 // TODO: We should re-add all tests for changes.
@@ -165,10 +264,9 @@ func Test_pnd_Get(t *testing.T) {
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			p := core{
-				UnimplementedCoreServiceServer: pb.UnimplementedCoreServiceServer{},
-			}
-			resp, err := p.GetPnd(tt.args.ctx, tt.args.request)
+			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
@@ -184,6 +282,8 @@ func Test_pnd_Get(t *testing.T) {
 }
 
 func Test_pnd_GetPath(t *testing.T) {
+	initUUIDs(t)
+
 	opts := cmp.Options{
 		cmpopts.SortSlices(
 			func(x, y *gnmi.Update) bool {
@@ -209,9 +309,9 @@ func Test_pnd_GetPath(t *testing.T) {
 				ctx: context.Background(),
 				request: &ppb.GetPathRequest{
 					Timestamp: time.Now().UnixNano(),
-					Did:       mockDevice.ID().String(),
+					Did:       deviceUUID.String(),
 					Path:      "system/config/hostname",
-					Pid:       mockPnd.ID().String(),
+					Pid:       pndUUID.String(),
 				},
 			},
 			want: []*gnmi.Notification{
@@ -247,9 +347,9 @@ func Test_pnd_GetPath(t *testing.T) {
 				ctx: context.Background(),
 				request: &ppb.GetPathRequest{
 					Timestamp: time.Now().UnixNano(),
-					Did:       mockDevice.ID().String(),
+					Did:       deviceUUID.String(),
 					Path:      "system",
-					Pid:       mockPnd.ID().String(),
+					Pid:       pndUUID.String(),
 				},
 			},
 			want: []*gnmi.Notification{
@@ -279,9 +379,9 @@ func Test_pnd_GetPath(t *testing.T) {
 				ctx: context.Background(),
 				request: &ppb.GetPathRequest{
 					Timestamp: time.Now().UnixNano(),
-					Did:       mockDevice.ID().String(),
+					Did:       deviceUUID.String(),
 					Path:      "this/path/is/not/valid",
-					Pid:       mockPnd.ID().String(),
+					Pid:       pndUUID.String(),
 				},
 			},
 			want:    []*gnmi.Notification{},
@@ -290,9 +390,7 @@ func Test_pnd_GetPath(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			s := pndServer{
-				UnimplementedPndServiceServer: ppb.UnimplementedPndServiceServer{},
-			}
+			s := getTestPndServer(t)
 			resp, err := s.GetPath(tt.args.ctx, tt.args.request)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("GetPath() error = %v, wantErr %v", err, tt.wantErr)