Files
micromdm/platform/appstore/upload_app_test.go
Victor Vrantchan 431a09998c refactor app upload APIs (#353)
Closes #296
2017-12-10 01:21:59 -05:00

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)
}
}