Skip to content

Commit bb03737

Browse files
committed
tests: add resources controller test
1 parent f8836fc commit bb03737

1 file changed

Lines changed: 56 additions & 0 deletions

File tree

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package controller_test
2+
3+
import (
4+
"net/http/httptest"
5+
"os"
6+
"testing"
7+
"tinyauth/internal/controller"
8+
9+
"github.com/gin-gonic/gin"
10+
"gotest.tools/v3/assert"
11+
)
12+
13+
func TestResourcesHandler(t *testing.T) {
14+
// Setup
15+
gin.SetMode(gin.TestMode)
16+
router := gin.New()
17+
group := router.Group("/")
18+
19+
ctrl := controller.NewResourcesController(controller.ResourcesControllerConfig{
20+
ResourcesDir: "/tmp/tinyauth",
21+
}, group)
22+
ctrl.SetupRoutes()
23+
24+
// Create test data
25+
err := os.Mkdir("/tmp/tinyauth", 0755)
26+
assert.NilError(t, err)
27+
28+
file, err := os.Create("/tmp/tinyauth/test.txt")
29+
assert.NilError(t, err)
30+
31+
_, err = file.WriteString("This is a test file.")
32+
assert.NilError(t, err)
33+
file.Close()
34+
35+
// Test existing file
36+
req := httptest.NewRequest("GET", "/resources/test.txt", nil)
37+
recorder := httptest.NewRecorder()
38+
router.ServeHTTP(recorder, req)
39+
40+
assert.Equal(t, 200, recorder.Code)
41+
assert.Equal(t, "This is a test file.", recorder.Body.String())
42+
43+
// Test non-existing file
44+
req = httptest.NewRequest("GET", "/resources/nonexistent.txt", nil)
45+
recorder = httptest.NewRecorder()
46+
router.ServeHTTP(recorder, req)
47+
48+
assert.Equal(t, 404, recorder.Code)
49+
50+
// Test directory traversal attack
51+
req = httptest.NewRequest("GET", "/resources/../etc/passwd", nil)
52+
recorder = httptest.NewRecorder()
53+
router.ServeHTTP(recorder, req)
54+
55+
assert.Equal(t, 404, recorder.Code)
56+
}

0 commit comments

Comments
 (0)