Skip to content
Snippets Groups Projects
handler_test.go 3.01 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 (
    
    OZGCloud's avatar
    OZGCloud committed
    	"bytes"
    	"fachstellen-proxy/internal/mock"
    
    OZGCloud's avatar
    OZGCloud committed
    	"github.com/stretchr/testify/assert"
    	"net/http"
    	"testing"
    )
    
    func TestRegisterHomeEndpoint(t *testing.T) {
    	SetUpHttpGateway()
    
    	resp, err := http.Get("http://localhost:8080/")
    
    	assert.NoError(t, err)
    	assert.Equal(t, http.StatusOK, resp.StatusCode)
    }
    
    
    func TestRegisterFachstelleRegistrationEndpoints(t *testing.T) {
    	mock.SetUpGrpcServer()
    	SetUpHttpGateway()
    
    	jsonData := []byte(`{"fachstelle": {"mukId": "testMukId"}}`)
    
    OZGCloud's avatar
    OZGCloud committed
    	resp, err := http.Post("http://localhost:8080/api/fachstellen", "application/json", bytes.NewBuffer(jsonData))
    
    
    	assert.NoError(t, err)
    	assert.Equal(t, http.StatusOK, resp.StatusCode)
    }
    
    func TestRegisterCollaborationEndpoints(t *testing.T) {
    	mock.SetUpGrpcServer()
    	SetUpHttpGateway()
    
    	SetUpCollaborationRouter()
    
    OZGCloud's avatar
    OZGCloud committed
    	resp, err := http.Get("http://localhost:8080/api/vorgang/bG9jYWxob3N0L3Rlc3RWb3JnYW5nSWQ=/testSamlToken")
    
    
    	assert.NoError(t, err)
    	assert.Equal(t, http.StatusOK, resp.StatusCode)
    }
    
    
    OZGCloud's avatar
    OZGCloud committed
    func TestErrorHandler(t *testing.T) {
    
    OZGCloud's avatar
    OZGCloud committed
    	assertErroneousRequest := func(jsonData []byte, expectedStatusCode int) {
    
    OZGCloud's avatar
    OZGCloud committed
    		mock.SetUpGrpcServer()
    		SetUpHttpGateway()
    
    
    OZGCloud's avatar
    OZGCloud committed
    		resp, err := http.Post("http://localhost:8080/api/fachstellen", "application/json", bytes.NewBuffer(jsonData))
    
    OZGCloud's avatar
    OZGCloud committed
    
    		assert.NoError(t, err)
    
    OZGCloud's avatar
    OZGCloud committed
    		assert.Equal(t, expectedStatusCode, resp.StatusCode)
    	}
    
    	t.Run("should have bad request error", func(t *testing.T) {
    		jsonData := []byte(`{}`)
    
    		assertErroneousRequest(jsonData, http.StatusBadRequest)
    
    OZGCloud's avatar
    OZGCloud committed
    	})
    
    	t.Run("should have conflict error", func(t *testing.T) {
    		jsonData := []byte(`{"fachstelle": {"mukId": "conflictMukId"}}`)
    
    
    OZGCloud's avatar
    OZGCloud committed
    		assertErroneousRequest(jsonData, http.StatusConflict)
    
    OZGCloud's avatar
    OZGCloud committed
    	})
    
    	t.Run("should have unavailable error", func(t *testing.T) {
    		jsonData := []byte(`{"fachstelle": {"mukId": "unavailableMukId"}}`)
    
    
    OZGCloud's avatar
    OZGCloud committed
    		assertErroneousRequest(jsonData, http.StatusServiceUnavailable)
    
    OZGCloud's avatar
    OZGCloud committed
    	})
    
    	t.Run("should have internal server error", func(t *testing.T) {
    		jsonData := []byte(`{"fachstelle": {"mukId": "erroneousMukId"}}`)
    
    
    OZGCloud's avatar
    OZGCloud committed
    		assertErroneousRequest(jsonData, http.StatusInternalServerError)
    
    OZGCloud's avatar
    OZGCloud committed
    	})
    }