Skip to content
Snippets Groups Projects
middleware_test.go 2.32 KiB
Newer Older
  • Learn to ignore specific revisions
  • OZGCloud's avatar
    OZGCloud committed
    /*
     * Copyright (C) 2023-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.
     */
    
    package server
    
    import (
    	"antragsraum-proxy/internal/mock"
    
    OZGCloud's avatar
    OZGCloud committed
    	"github.com/stretchr/testify/assert"
    	"net/http"
    	"testing"
    
    OZGCloud's avatar
    OZGCloud committed
    	"log"
    	"github.com/sirupsen/logrus"
    	"go.elastic.co/ecslogrus"
    
    OZGCloud's avatar
    OZGCloud committed
    )
    
    func TestRequestLoggingMiddleware(t *testing.T) {
    
    OZGCloud's avatar
    OZGCloud committed
        logger := logrus.New()
        logger.SetFormatter(&ecslogrus.Formatter{})
        log.SetOutput(logger.Writer())
    
    
    OZGCloud's avatar
    OZGCloud committed
    	t.Run("should log request", func(t *testing.T) {
    
    OZGCloud's avatar
    OZGCloud committed
    	    logger.SetLevel(logrus.DebugLevel)
    
    OZGCloud's avatar
    OZGCloud committed
    		mock.SetUpGrpcServer()
    		SetUpGrpcRouter()
    		SetUpHttpGateway()
    
    OZGCloud's avatar
    OZGCloud committed
    
    
    OZGCloud's avatar
    OZGCloud committed
    		jsonData := []byte(`{"postfachId": "testPostfachId"}`)
    		req, _ := http.NewRequest("POST", "http://localhost:8082/api/v1/rueckfragen", bytes.NewBuffer(jsonData))
    		req.Header.Set(GrpcAddressHeader, "localhost")
    
    OZGCloud's avatar
    OZGCloud committed
    
    
    OZGCloud's avatar
    OZGCloud committed
    		var buf bytes.Buffer
            log.SetOutput(&buf)
    
            defer func() {
                log.SetOutput(nil)
            }()
    
    
    OZGCloud's avatar
    OZGCloud committed
    		client := &http.Client{}
    		client.Do(req)
    
    		logOutput := buf.String()
    
    OZGCloud's avatar
    OZGCloud committed
    		assert.Contains(t, "successfully handled POST request for /api/v1/rueckfragen with body: {\"postfachId\": \"testPostfachId\"}",  logOutput)
    
    OZGCloud's avatar
    OZGCloud committed
    	})
    
    	t.Run("should not log request", func(t *testing.T) {
    
    OZGCloud's avatar
    OZGCloud committed
    	    logger.SetLevel(logrus.InfoLevel)
    
    OZGCloud's avatar
    OZGCloud committed
    		mock.SetUpGrpcServer()
    		SetUpHttpGateway()
    
    		var buf bytes.Buffer
    
    OZGCloud's avatar
    OZGCloud committed
    		log.SetOutput(&buf)
    
    OZGCloud's avatar
    OZGCloud committed
    
    		defer func() {
    
    OZGCloud's avatar
    OZGCloud committed
    			log.SetOutput(nil)
    
    OZGCloud's avatar
    OZGCloud committed
    		}()
    
    		http.Get("http://localhost:8082/")
    
    		logOutput := buf.String()
    		assert.Empty(t, logOutput)
    	})
    
    OZGCloud's avatar
    OZGCloud committed
    }