Support TXT uploads and extend XigmaNAS event parsing
This commit is contained in:
@@ -15,7 +15,7 @@ import (
|
||||
|
||||
func newFlowTestServer() (*Server, *httptest.Server) {
|
||||
s := &Server{
|
||||
jobManager: NewJobManager(),
|
||||
jobManager: NewJobManager(),
|
||||
collectors: testCollectorRegistry(),
|
||||
}
|
||||
mux := http.NewServeMux()
|
||||
@@ -110,6 +110,61 @@ func TestUploadArchiveRegressionAndSourceMetadata(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUploadTXTFile(t *testing.T) {
|
||||
_, ts := newFlowTestServer()
|
||||
defer ts.Close()
|
||||
|
||||
txt := `Version:
|
||||
--------
|
||||
14.3.0.5
|
||||
|
||||
loader_brand="XigmaNAS"
|
||||
`
|
||||
|
||||
reqBody := &bytes.Buffer{}
|
||||
writer := multipart.NewWriter(reqBody)
|
||||
part, err := writer.CreateFormFile("archive", "xigmanas.txt")
|
||||
if err != nil {
|
||||
t.Fatalf("create form file: %v", err)
|
||||
}
|
||||
if _, err := part.Write([]byte(txt)); err != nil {
|
||||
t.Fatalf("write txt body: %v", err)
|
||||
}
|
||||
if err := writer.Close(); err != nil {
|
||||
t.Fatalf("close multipart writer: %v", err)
|
||||
}
|
||||
|
||||
uploadReq, err := http.NewRequest(http.MethodPost, ts.URL+"/api/upload", reqBody)
|
||||
if err != nil {
|
||||
t.Fatalf("build upload request: %v", err)
|
||||
}
|
||||
uploadReq.Header.Set("Content-Type", writer.FormDataContentType())
|
||||
|
||||
uploadResp, err := http.DefaultClient.Do(uploadReq)
|
||||
if err != nil {
|
||||
t.Fatalf("upload request failed: %v", err)
|
||||
}
|
||||
defer uploadResp.Body.Close()
|
||||
|
||||
if uploadResp.StatusCode != http.StatusOK {
|
||||
t.Fatalf("expected 200 from /api/upload, got %d", uploadResp.StatusCode)
|
||||
}
|
||||
|
||||
var uploadPayload map[string]interface{}
|
||||
if err := json.NewDecoder(uploadResp.Body).Decode(&uploadPayload); err != nil {
|
||||
t.Fatalf("decode upload response: %v", err)
|
||||
}
|
||||
if uploadPayload["status"] != "ok" {
|
||||
t.Fatalf("expected upload status ok, got %v", uploadPayload["status"])
|
||||
}
|
||||
if uploadPayload["filename"] != "xigmanas.txt" {
|
||||
t.Fatalf("expected filename xigmanas.txt, got %v", uploadPayload["filename"])
|
||||
}
|
||||
if uploadPayload["vendor"] != "XigmaNAS Parser" {
|
||||
t.Fatalf("expected vendor XigmaNAS Parser, got %v", uploadPayload["vendor"])
|
||||
}
|
||||
}
|
||||
|
||||
func TestCollectSmokeErrorFormat(t *testing.T) {
|
||||
_, ts := newFlowTestServer()
|
||||
defer ts.Close()
|
||||
|
||||
Reference in New Issue
Block a user