mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-10 11:36:06 +08:00
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package appstore
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
"mime/multipart"
|
|
"net/http/httptest"
|
|
"testing"
|
|
)
|
|
|
|
func TestDecodeUploadRequest(t *testing.T) {
|
|
var aFile, bFile bytes.Buffer
|
|
aFile.Write([]byte("hello"))
|
|
bFile.Write([]byte("world"))
|
|
|
|
body := new(bytes.Buffer)
|
|
writer := multipart.NewWriter(body)
|
|
|
|
part, err := writer.CreateFormFile("app_manifest_filedata", "manifest.plist")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err = io.Copy(part, &aFile)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
writer.WriteField("app_manifest_filename", "manifest.plist")
|
|
|
|
partPkg, err := writer.CreateFormFile("pkg_filedata", "foo.pkg")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
_, err = io.Copy(partPkg, &bFile)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
writer.WriteField("pkg_name", "hello.pkg")
|
|
writer.Close()
|
|
|
|
req := httptest.NewRequest("POST", "https://mdm.acme.co/", body)
|
|
req.Header.Set("Content-Type", writer.FormDataContentType())
|
|
request, err := decodeAppUploadRequest(context.Background(), req)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
decoded := request.(appUploadRequest)
|
|
|
|
if have, want := decoded.ManifestName, "manifest.plist"; have != want {
|
|
t.Errorf("have %s, want %s", have, want)
|
|
}
|
|
if have, want := decoded.PKGFilename, "hello.pkg"; have != want {
|
|
t.Errorf("have %s, want %s", have, want)
|
|
}
|
|
|
|
var a, b bytes.Buffer
|
|
io.Copy(&a, decoded.ManifestFile)
|
|
io.Copy(&b, decoded.PKGFile)
|
|
if have, want := a.String(), "hello"; have != want {
|
|
t.Errorf("have %s, want %s", have, want)
|
|
}
|
|
if have, want := b.String(), "world"; have != want {
|
|
t.Errorf("have %s, want %s", have, want)
|
|
}
|
|
}
|