From b53fab23f88c33c52a593d6443b903c849773f1e Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 28 Aug 2024 08:02:42 +0200
Subject: [PATCH] OZG-6514 Errorhandling verbessert

---
 internal/mock/grpc_server.go        | 12 ++++++------
 internal/server/grpc_router.go      | 18 ++++++++++++------
 internal/server/grpc_router_test.go |  6 +++---
 3 files changed, 21 insertions(+), 15 deletions(-)

diff --git a/internal/mock/grpc_server.go b/internal/mock/grpc_server.go
index 3863406..f38b1e0 100644
--- a/internal/mock/grpc_server.go
+++ b/internal/mock/grpc_server.go
@@ -43,15 +43,15 @@ type registrationServer struct {
 
 func (s *registrationServer) Register(ctx context.Context, in *pb.GrpcFachstelleRegistrationRequest) (*pb.GrpcFachstelleRegistrationResponse, error) {
 	if in.Fachstelle == nil {
-		return nil, status.Error(codes.InvalidArgument, "Fachstelle is missing")
+		return nil, status.Error(codes.InvalidArgument, "fachstelle is missing")
 	}
 
 	if in.Fachstelle.MukId == "conflictMukId" {
-		return nil, status.Error(codes.AlreadyExists, "Conflict MukId")
+		return nil, status.Error(codes.AlreadyExists, "conflict MukId")
 	} else if in.Fachstelle.MukId == "unavailableMukId" {
-		return nil, status.Error(codes.Unavailable, "Unavailable MukId")
+		return nil, status.Error(codes.Unavailable, "unavailable MukId")
 	} else if in.Fachstelle.MukId == "erroneousMukId" {
-		return nil, status.Error(codes.Internal, "Erroneous MukId")
+		return nil, status.Error(codes.Internal, "erroneous MukId")
 	}
 
 	return &pb.GrpcFachstelleRegistrationResponse{}, nil
@@ -63,11 +63,11 @@ type collaborationServer struct {
 
 func (s *collaborationServer) FindVorgang(ctx context.Context, in *pb.GrpcFindVorgangRequest) (*pb.GrpcFindVorgangResponse, error) {
 	if in.VorgangId == "" {
-		return nil, status.Error(codes.InvalidArgument, "VorgangId is missing")
+		return nil, status.Error(codes.InvalidArgument, "vorgangId is missing")
 	}
 
 	if in.SamlToken == "" {
-		return nil, status.Error(codes.InvalidArgument, "SamlToken is missing")
+		return nil, status.Error(codes.InvalidArgument, "samlToken is missing")
 	}
 
 	return &pb.GrpcFindVorgangResponse{Vorgang: &pb.GrpcVorgang{Id: "testVorgangId"}}, nil
diff --git a/internal/server/grpc_router.go b/internal/server/grpc_router.go
index 3b9006e..a0437cd 100644
--- a/internal/server/grpc_router.go
+++ b/internal/server/grpc_router.go
@@ -49,16 +49,20 @@ type collaborationRouter struct {
 
 func (s *collaborationRouter) FindVorgang(ctx context.Context, in *pb.GrpcFindVorgangRequest) (*pb.GrpcFindVorgangResponse, error) {
 	if in.VorgangId == "" {
-		return nil, status.Error(codes.InvalidArgument, "VorgangId is missing")
+		return nil, status.Error(codes.InvalidArgument, "vorgangId is missing")
 	}
 
 	collaborationInfo, decodeErr := DecodeCollaborationInfo(in.VorgangId)
 	if decodeErr != nil {
-		return nil, status.Error(codes.InvalidArgument, "VorgangId has invalid format, expected base64 encoded 'collaborationServerAddress/vorgangId'")
+		return nil, status.Error(codes.InvalidArgument, decodeErr.Error())
 	}
 
-	client, connCleanUp := createCollaborationClient(collaborationInfo.CollaborationServerAddress)
+	client, connCleanUp, err := createCollaborationClient(collaborationInfo.CollaborationServerAddress)
+	if err != nil {
+		return nil, status.Error(codes.Internal, err.Error())
+	}
 	defer connCleanUp()
+
 	updatedRequest := &pb.GrpcFindVorgangRequest{VorgangId: collaborationInfo.Attribute, SamlToken: in.SamlToken}
 
 	return client.FindVorgang(context.Background(), updatedRequest)
@@ -86,11 +90,13 @@ func DecodeCollaborationInfo(encodedCollaborationInfo string) (*CollaborationInf
 	}, nil
 }
 
-func createCollaborationClient(collaborationServerAddress string) (pb.CollaborationServiceClient, func()) {
+func createCollaborationClient(collaborationServerAddress string) (pb.CollaborationServiceClient, func(), error) {
 	target := GetCollaborationServerUrl(collaborationServerAddress, conf)
 	conn, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials()))
 	if err != nil {
-		logger.Fatal("collaboration router failed to route: %v", err)
+		logger.Error("collaboration router failed to route: %v", err)
+
+		return nil, nil, errors.New("collaboration router failed to route")
 	}
 
 	client := pb.NewCollaborationServiceClient(conn)
@@ -98,7 +104,7 @@ func createCollaborationClient(collaborationServerAddress string) (pb.Collaborat
 		conn.Close()
 	}
 
-	return client, connCleanUp
+	return client, connCleanUp, nil
 }
 
 func GetCollaborationServerUrl(collaborationServerAddress string, c config.Config) string {
diff --git a/internal/server/grpc_router_test.go b/internal/server/grpc_router_test.go
index 1875306..4401e58 100644
--- a/internal/server/grpc_router_test.go
+++ b/internal/server/grpc_router_test.go
@@ -82,7 +82,7 @@ func TestStartCollaborationRouter(t *testing.T) {
 		resp, err := client.FindVorgang(context.Background(), &pb.GrpcFindVorgangRequest{VorgangId: "bG9jYWxob3N0L3Rlc3RWb3JnYW5nSWQ="})
 
 		assert.Error(t, err)
-		assert.Contains(t, err.Error(), "SamlToken is missing")
+		assert.Contains(t, err.Error(), "samlToken is missing")
 		assert.Nil(t, resp)
 	})
 
@@ -93,7 +93,7 @@ func TestStartCollaborationRouter(t *testing.T) {
 		resp, err := client.FindVorgang(context.Background(), &pb.GrpcFindVorgangRequest{})
 
 		assert.Error(t, err)
-		assert.Contains(t, err.Error(), "VorgangId is missing")
+		assert.Contains(t, err.Error(), "vorgangId is missing")
 		assert.Nil(t, resp)
 	})
 }
@@ -106,7 +106,7 @@ func TestDecodeCollaborationInfo(t *testing.T) {
 		assert.NotNil(t, result)
 	})
 
-	t.Run("should have collaboration server dddress", func(t *testing.T) {
+	t.Run("should have collaboration server address", func(t *testing.T) {
 		result, err := DecodeCollaborationInfo("bG9jYWxob3N0L3Rlc3RWb3JnYW5nSWQ=")
 
 		assert.NoError(t, err)
-- 
GitLab