Skip to content
Snippets Groups Projects
grpc_router_test.go 2.83 KiB
Newer Older
  • Learn to ignore specific revisions
  • OZGCloud's avatar
    OZGCloud committed
    //
    // Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
    // Ministerpräsidenten des Landes Schleswig-Holstein
    // Staatskanzlei
    // Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
    //
    // Lizenziert unter der EUPL, Version 1.2 oder - sobald
    // diese von der Europäischen Kommission genehmigt wurden -
    // Folgeversionen der EUPL ("Lizenz");
    // Sie dürfen dieses Werk ausschließlich gemäß
    // dieser Lizenz nutzen.
    // Eine Kopie der Lizenz finden Sie hier:
    //
    // https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
    //
    // Sofern nicht durch anwendbare Rechtsvorschriften
    // gefordert oder in schriftlicher Form vereinbart, wird
    // die unter der Lizenz verbreitete Software "so wie sie
    // ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
    // ausdrücklich oder stillschweigend - verbreitet.
    // Die sprachspezifischen Genehmigungen und Beschränkungen
    // unter der Lizenz sind dem Lizenztext zu entnehmen.
    //
    
    
    OZGCloud's avatar
    OZGCloud committed
    package server
    
    import (
    	pb "antragsraum-proxy/gen/go"
    	"antragsraum-proxy/internal/config"
    	"antragsraum-proxy/internal/mock"
    	"context"
    	"github.com/stretchr/testify/assert"
    	"google.golang.org/grpc"
    	"google.golang.org/grpc/credentials/insecure"
    	"google.golang.org/grpc/metadata"
    	"net"
    	"testing"
    	"time"
    )
    
    func TestStartGrpcRouter(t *testing.T) {
    	setUpGrpcRouterEnv := func() (pb.AntragraumServiceClient, func()) {
    		mock.SetUpGrpcServer()
    		SetUpGrpcRouter()
    
    		conn, err := grpc.NewClient("localhost:50051", grpc.WithTransportCredentials(insecure.NewCredentials()))
    		assert.NoError(t, err)
    
    		cleanUp := func() {
    			conn.Close()
    		}
    		client := pb.NewAntragraumServiceClient(conn)
    
    		return client, cleanUp
    	}
    
    	t.Run("should start gRPC router", func(t *testing.T) {
    		SetUpGrpcRouter()
    
    		conn, err := net.DialTimeout("tcp", "localhost:50051", 2*time.Second)
    
    		assert.NoError(t, err)
    
    		conn.Close()
    	})
    
    	t.Run("should have no error", func(t *testing.T) {
    		client, cleanUp := setUpGrpcRouterEnv()
    		defer cleanUp()
    
    
    OZGCloud's avatar
    OZGCloud committed
    		md := metadata.New(map[string]string{GrpcAddressMetadata: "localhost"})
    
    OZGCloud's avatar
    OZGCloud committed
    		ctx := metadata.NewOutgoingContext(context.Background(), md)
    		resp, err := client.FindRueckfragen(ctx, &pb.GrpcFindRueckfragenRequest{PostfachId: "testPostfachId"})
    
    		assert.NoError(t, err)
    		assert.NotNil(t, resp)
    	})
    
    	t.Run("should have error", func(t *testing.T) {
    		client, cleanUp := setUpGrpcRouterEnv()
    		defer cleanUp()
    
    
    OZGCloud's avatar
    OZGCloud committed
    		md := metadata.New(map[string]string{GrpcAddressMetadata: "localhost"})
    
    OZGCloud's avatar
    OZGCloud committed
    		ctx := metadata.NewOutgoingContext(context.Background(), md)
    		resp, err := client.FindRueckfragen(ctx, &pb.GrpcFindRueckfragenRequest{})
    
    		assert.Error(t, err)
    		assert.Contains(t, err.Error(), "Id is missing")
    		assert.Nil(t, resp)
    	})
    }
    
    func TestGetGrpcServerUrl(t *testing.T) {
    	c := config.Config{}
    	c.Grpc.Server.Port = 1234
    
    	result := GetGrpcServerUrl("localhost", c)
    
    	assert.Equal(t, "localhost:1234", result)
    }