From bb0373758a713d8d8658a97477263f335bc11da3 Mon Sep 17 00:00:00 2001 From: Stavros Date: Wed, 3 Sep 2025 14:58:24 +0300 Subject: [PATCH] tests: add resources controller test --- .../controller/resources_controller_test.go | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 internal/controller/resources_controller_test.go diff --git a/internal/controller/resources_controller_test.go b/internal/controller/resources_controller_test.go new file mode 100644 index 0000000..732b2f7 --- /dev/null +++ b/internal/controller/resources_controller_test.go @@ -0,0 +1,56 @@ +package controller_test + +import ( + "net/http/httptest" + "os" + "testing" + "tinyauth/internal/controller" + + "github.com/gin-gonic/gin" + "gotest.tools/v3/assert" +) + +func TestResourcesHandler(t *testing.T) { + // Setup + gin.SetMode(gin.TestMode) + router := gin.New() + group := router.Group("/") + + ctrl := controller.NewResourcesController(controller.ResourcesControllerConfig{ + ResourcesDir: "/tmp/tinyauth", + }, group) + ctrl.SetupRoutes() + + // Create test data + err := os.Mkdir("/tmp/tinyauth", 0755) + assert.NilError(t, err) + + file, err := os.Create("/tmp/tinyauth/test.txt") + assert.NilError(t, err) + + _, err = file.WriteString("This is a test file.") + assert.NilError(t, err) + file.Close() + + // Test existing file + req := httptest.NewRequest("GET", "/resources/test.txt", nil) + recorder := httptest.NewRecorder() + router.ServeHTTP(recorder, req) + + assert.Equal(t, 200, recorder.Code) + assert.Equal(t, "This is a test file.", recorder.Body.String()) + + // Test non-existing file + req = httptest.NewRequest("GET", "/resources/nonexistent.txt", nil) + recorder = httptest.NewRecorder() + router.ServeHTTP(recorder, req) + + assert.Equal(t, 404, recorder.Code) + + // Test directory traversal attack + req = httptest.NewRequest("GET", "/resources/../etc/passwd", nil) + recorder = httptest.NewRecorder() + router.ServeHTTP(recorder, req) + + assert.Equal(t, 404, recorder.Code) +}