Skip to content
Snippets Groups Projects
Commit 3b725a72 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-6730 Unittests

parent bbe493a2
No related branches found
No related tags found
No related merge requests found
...@@ -35,9 +35,13 @@ import ( ...@@ -35,9 +35,13 @@ import (
"io" "io"
"net" "net"
"os" "os"
"testing"
) )
const dummyFilePath = "internal/mock/testdata/dummy.pdf" const (
defaultFilePath = "internal/mock/testdata/dummy.pdf"
testFilePath = "testdata/dummy.pdf"
)
type rueckfrageServer struct { type rueckfrageServer struct {
pb.UnimplementedAntragraumServiceServer pb.UnimplementedAntragraumServiceServer
...@@ -92,7 +96,12 @@ func (s *binaryFileServer) FindBinaryFilesMetaData(_ context.Context, _ *pb.Grpc ...@@ -92,7 +96,12 @@ func (s *binaryFileServer) FindBinaryFilesMetaData(_ context.Context, _ *pb.Grpc
} }
func (s *binaryFileServer) GetBinaryFileContent(_ *pb.GrpcGetBinaryFileDataRequest, stream pb.BinaryFileService_GetBinaryFileContentServer) error { func (s *binaryFileServer) GetBinaryFileContent(_ *pb.GrpcGetBinaryFileDataRequest, stream pb.BinaryFileService_GetBinaryFileContentServer) error {
file, err := os.Open(dummyFilePath) fp := defaultFilePath
if testing.Testing() {
fp = testFilePath
}
file, err := os.Open(fp)
if err != nil { if err != nil {
return err return err
} }
......
...@@ -43,6 +43,10 @@ func (s *rueckfrageRouter) FindRueckfragen(ctx context.Context, in *pb.GrpcFindR ...@@ -43,6 +43,10 @@ func (s *rueckfrageRouter) FindRueckfragen(ctx context.Context, in *pb.GrpcFindR
return client.FindRueckfragen(ctx, in) return client.FindRueckfragen(ctx, in)
}) })
if response == nil {
return nil, err
}
return response.(*pb.GrpcFindRueckfragenResponse), err return response.(*pb.GrpcFindRueckfragenResponse), err
} }
...@@ -51,6 +55,10 @@ func (s *rueckfrageRouter) GetRueckfrage(ctx context.Context, in *pb.GrpcGetRuec ...@@ -51,6 +55,10 @@ func (s *rueckfrageRouter) GetRueckfrage(ctx context.Context, in *pb.GrpcGetRuec
return client.GetRueckfrage(ctx, in) return client.GetRueckfrage(ctx, in)
}) })
if response == nil {
return nil, err
}
return response.(*pb.GrpcGetRueckfrageResponse), err return response.(*pb.GrpcGetRueckfrageResponse), err
} }
...@@ -59,6 +67,10 @@ func (s *rueckfrageRouter) SendRueckfrageAnswer(ctx context.Context, in *pb.Grpc ...@@ -59,6 +67,10 @@ func (s *rueckfrageRouter) SendRueckfrageAnswer(ctx context.Context, in *pb.Grpc
return client.SendRueckfrageAnswer(ctx, in) return client.SendRueckfrageAnswer(ctx, in)
}) })
if response == nil {
return nil, err
}
return response.(*pb.GrpcSendRueckfrageAnswerResponse), err return response.(*pb.GrpcSendRueckfrageAnswerResponse), err
} }
...@@ -68,6 +80,7 @@ func (s *rueckfrageRouter) handleRequest(ctx context.Context, handler func(pb.An ...@@ -68,6 +80,7 @@ func (s *rueckfrageRouter) handleRequest(ctx context.Context, handler func(pb.An
func createRueckfrageClient(grpcAddress string) (pb.AntragraumServiceClient, func() error, error) { func createRueckfrageClient(grpcAddress string) (pb.AntragraumServiceClient, func() error, error) {
target := getGrpcServerUrl(grpcAddress, conf) target := getGrpcServerUrl(grpcAddress, conf)
fmt.Println(target)
conn, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials())) conn, err := grpc.NewClient(target, grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil { if err != nil {
logger.Error("rueckfrage router failed to route: %v", err) logger.Error("rueckfrage router failed to route: %v", err)
...@@ -87,6 +100,10 @@ func (s *commandRouter) GetCommand(ctx context.Context, in *pb.GrpcGetCommandReq ...@@ -87,6 +100,10 @@ func (s *commandRouter) GetCommand(ctx context.Context, in *pb.GrpcGetCommandReq
return client.GetCommand(ctx, in) return client.GetCommand(ctx, in)
}) })
if response == nil {
return nil, err
}
return response.(*pb.GrpcCommand), err return response.(*pb.GrpcCommand), err
} }
...@@ -115,6 +132,10 @@ func (s *binaryFileRouter) FindBinaryFilesMetaData(ctx context.Context, in *pb.G ...@@ -115,6 +132,10 @@ func (s *binaryFileRouter) FindBinaryFilesMetaData(ctx context.Context, in *pb.G
return client.FindBinaryFilesMetaData(ctx, in) return client.FindBinaryFilesMetaData(ctx, in)
}) })
if response == nil {
return nil, err
}
return response.(*pb.GrpcFindFilesResponse), err return response.(*pb.GrpcFindFilesResponse), err
} }
......
...@@ -28,8 +28,13 @@ package server ...@@ -28,8 +28,13 @@ package server
import ( import (
"antragsraum-proxy/internal/mock" "antragsraum-proxy/internal/mock"
"bytes" "bytes"
"fmt"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"io"
"mime/multipart"
"net/http" "net/http"
"os"
"path/filepath"
"testing" "testing"
) )
...@@ -43,11 +48,132 @@ func TestRegisterHomeEndpoint(t *testing.T) { ...@@ -43,11 +48,132 @@ func TestRegisterHomeEndpoint(t *testing.T) {
} }
func TestRegisterAntragraumEndpoints(t *testing.T) { func TestRegisterAntragraumEndpoints(t *testing.T) {
t.Run("should find rueckfragen", func(t *testing.T) {
mock.SetUpGrpcServer() mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway() SetUpHttpGateway()
jsonData := []byte(`{"fachstelle": {"mukId": "testMukId"}}`) jsonData := []byte(`{"postfachId": "testPostfachId"}`)
resp, err := http.Post("http://localhost:8080/api/fachstellen", "application/json", bytes.NewBuffer(jsonData)) req, err := http.NewRequest("POST", "http://localhost:8082/api/v1/rueckfragen", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
})
t.Run("should get rueckfrage", func(t *testing.T) {
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
jsonData := []byte(`{"id": "testId"}`)
req, err := http.NewRequest("POST", "http://localhost:8082/api/v1/rueckfrage", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
})
t.Run("should send answer", func(t *testing.T) {
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
jsonData := []byte(`{}`)
req, err := http.NewRequest("POST", "http://localhost:8082/api/v1/antworten", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
})
}
func TestRegisterCommandEndpoints(t *testing.T) {
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
jsonData := []byte(``)
req, err := http.NewRequest("GET", "http://localhost:8082/api/v1/command/testId", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
}
func TestRegisterBinaryFileEndpoints(t *testing.T) {
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
jsonData := []byte(``)
req, err := http.NewRequest("GET", "http://localhost:8082/api/v1/file/metadata/testId", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
}
func TestRegisterFileUploadEndpoint(t *testing.T) {
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
var requestBody bytes.Buffer
writer := multipart.NewWriter(&requestBody)
file, err := os.Open("testdata/dummy.pdf")
assert.NoError(t, err)
defer file.Close()
part, err := writer.CreateFormFile("file", "dummy.pdf")
assert.NoError(t, err)
_, err = io.Copy(part, file)
assert.NoError(t, err)
err = writer.Close()
assert.NoError(t, err)
req, err := http.NewRequest("POST", "http://localhost:8082/api/v1/file", &requestBody)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
}
func TestRegisterGetFileEndpoint(t *testing.T) {
fmt.Println(filepath.Join("..", ".."))
mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway()
jsonData := []byte(``)
req, err := http.NewRequest("GET", "http://localhost:8082/api/v1/file/content/testId", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode) assert.Equal(t, http.StatusOK, resp.StatusCode)
...@@ -56,9 +182,14 @@ func TestRegisterAntragraumEndpoints(t *testing.T) { ...@@ -56,9 +182,14 @@ func TestRegisterAntragraumEndpoints(t *testing.T) {
func TestErrorHandler(t *testing.T) { func TestErrorHandler(t *testing.T) {
assertErroneousRequest := func(jsonData []byte, expectedStatusCode int) { assertErroneousRequest := func(jsonData []byte, expectedStatusCode int) {
mock.SetUpGrpcServer() mock.SetUpGrpcServer()
SetUpGrpcRouter()
SetUpHttpGateway() SetUpHttpGateway()
resp, err := http.Post("http://localhost:8080/api/fachstellen", "application/json", bytes.NewBuffer(jsonData)) req, err := http.NewRequest("POST", "http://localhost:8082/api/v1/rueckfragen", bytes.NewBuffer(jsonData))
req.Header.Set(GrpcAddressHeader, "localhost")
client := &http.Client{}
resp, err := client.Do(req)
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, expectedStatusCode, resp.StatusCode) assert.Equal(t, expectedStatusCode, resp.StatusCode)
...@@ -71,19 +202,19 @@ func TestErrorHandler(t *testing.T) { ...@@ -71,19 +202,19 @@ func TestErrorHandler(t *testing.T) {
}) })
t.Run("should have conflict error", func(t *testing.T) { t.Run("should have conflict error", func(t *testing.T) {
jsonData := []byte(`{"fachstelle": {"mukId": "conflictMukId"}}`) jsonData := []byte(`{"postfachId": "conflictId"}`)
assertErroneousRequest(jsonData, http.StatusConflict) assertErroneousRequest(jsonData, http.StatusConflict)
}) })
t.Run("should have unavailable error", func(t *testing.T) { t.Run("should have unavailable error", func(t *testing.T) {
jsonData := []byte(`{"fachstelle": {"mukId": "unavailableMukId"}}`) jsonData := []byte(`{"postfachId": "unavailableId"}`)
assertErroneousRequest(jsonData, http.StatusServiceUnavailable) assertErroneousRequest(jsonData, http.StatusServiceUnavailable)
}) })
t.Run("should have internal server error", func(t *testing.T) { t.Run("should have internal server error", func(t *testing.T) {
jsonData := []byte(`{"fachstelle": {"mukId": "erroneousMukId"}}`) jsonData := []byte(`{"postfachId": "erroneousId"}`)
assertErroneousRequest(jsonData, http.StatusInternalServerError) assertErroneousRequest(jsonData, http.StatusInternalServerError)
}) })
......
...@@ -30,11 +30,19 @@ import ( ...@@ -30,11 +30,19 @@ import (
"time" "time"
) )
var setUpOnce sync.Once var setUpHttpGatewayOnce sync.Once
var setUpGrpcRouterOnce sync.Once
func SetUpHttpGateway() { func SetUpHttpGateway() {
setUpOnce.Do(func() { setUpHttpGatewayOnce.Do(func() {
go StartHttpGateway() go StartHttpGateway()
time.Sleep(time.Second) // Wait for the server to start time.Sleep(time.Second) // Wait for the server to start
}) })
} }
func SetUpGrpcRouter() {
setUpGrpcRouterOnce.Do(func() {
go StartGrpcRouter()
time.Sleep(time.Second) // Wait for the router to start
})
}
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment