Micro-service for file storage and processing written in Go
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

68 lines
1.7 KiB

package main
import (
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"github.com/gorilla/mux"
"github.com/stretchr/testify/assert"
)
func TestIndexRoute(t *testing.T) {
t.Run("Index route returns valid response", func(t *testing.T) {
request := httptest.NewRequest(http.MethodGet, "/", nil)
responseRecorder := httptest.NewRecorder()
IndexHandler(responseRecorder, request)
assert.Equal(t, responseRecorder.Code, 200, "Response code should be 200")
assert.NotNil(t, responseRecorder.Body, "Response should contain body")
})
}
func TestEndpointRoute(t *testing.T) {
// TODO: Use mock/fake for dummy pipeline data
givenEndpoint := Pipeline{
Name: "example pipeline",
Slug: "example",
Type: 0,
RemoveMetadata: false,
Steps: []Step{
{
Name: "resize image",
Type: 0,
},
{
Name: "compress image",
Type: 1,
},
},
}
t.Run("Registered pipelines are valid routes", func(t *testing.T) {
router := mux.NewRouter()
RegisterPipelineRoutes(router, []IPipeline{givenEndpoint})
request, _ := http.NewRequest("GET", "/"+givenEndpoint.Slug, nil)
responseRecorder := httptest.NewRecorder()
router.ServeHTTP(responseRecorder, request)
assert.Equal(t, responseRecorder.Code, 200)
body, _ := json.Marshal(givenEndpoint)
assert.JSONEq(t, string(body), responseRecorder.Body.String())
})
t.Run("Unregistered pipelines return 404", func(t *testing.T) {
router := mux.NewRouter()
request, _ := http.NewRequest("GET", "/"+givenEndpoint.Slug, nil)
responseRecorder := httptest.NewRecorder()
router.ServeHTTP(responseRecorder, request)
assert.Equal(t, responseRecorder.Code, 404)
})
}