MCPcopy Create free account
hub / github.com/BryanMwangi/pine / TestSaveFile

Function TestSaveFile

file_test.go:13–64  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

11)
12
13func TestSaveFile(t *testing.T) {
14 // Mock file data to upload.
15 fileContent := "Hello, test file content!"
16 fileName := "testfile.txt"
17
18 // Create a new buffer to simulate multipart form data.
19 body := &bytes.Buffer{}
20 writer := multipart.NewWriter(body)
21
22 // Create a form file field and write file content.
23 part, err := writer.CreateFormFile("file", fileName)
24 if err != nil {
25 t.Fatalf("Failed to create form file: %v", err)
26 }
27 _, err = part.Write([]byte(fileContent))
28 if err != nil {
29 t.Fatalf("Failed to write to form file: %v", err)
30 }
31 writer.Close()
32
33 // Create a new HTTP request with the multipart data.
34 req := httptest.NewRequest(http.MethodPost, "/upload", body)
35 req.Header.Set("Content-Type", writer.FormDataContentType())
36
37 // Create a test Ctx instance with the mock request.
38 ctx := &Ctx{Request: req, Server: &Server{config: Config{UploadPath: "./uploads"}}}
39
40 // Retrieve the uploaded file from the request.
41 _, fh, err := ctx.FormFile("file")
42 if err != nil {
43 t.Fatalf("Failed to retrieve form file: %v", err)
44 }
45
46 // Save the file using SaveFile.
47 err = ctx.SaveFile(fh)
48 if err != nil {
49 t.Fatalf("Failed to save file: %v", err)
50 }
51
52 // Verify the file was saved correctly.
53 savedFilePath := filepath.Join("./uploads", fileName)
54 defer os.Remove(savedFilePath) // Clean up the test file after verification.
55
56 savedContent, err := os.ReadFile(savedFilePath)
57 if err != nil {
58 t.Fatalf("Failed to read saved file: %v", err)
59 }
60
61 if string(savedContent) != fileContent {
62 t.Errorf("File content mismatch. Got: %s, Expected: %s", savedContent, fileContent)
63 }
64}
65
66func TestSaveFile_PathTraversal(t *testing.T) {
67 uploadDir := t.TempDir()

Callers

nothing calls this directly

Calls 4

FormFileMethod · 0.95
SaveFileMethod · 0.95
WriteMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected