87 lines
2.2 KiB
Go
87 lines
2.2 KiB
Go
|
package filestack
|
||
|
|
||
|
import (
|
||
|
"io"
|
||
|
"net/http"
|
||
|
"net/http/httptest"
|
||
|
"os"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/stretchr/testify/require"
|
||
|
|
||
|
"github.com/influxdata/telegraf/testutil"
|
||
|
)
|
||
|
|
||
|
func postWebhooks(t *testing.T, md *Webhook, eventBodyFile io.Reader) *httptest.ResponseRecorder {
|
||
|
req, err := http.NewRequest("POST", "/filestack", eventBodyFile)
|
||
|
require.NoError(t, err)
|
||
|
w := httptest.NewRecorder()
|
||
|
|
||
|
md.eventHandler(w, req)
|
||
|
|
||
|
return w
|
||
|
}
|
||
|
|
||
|
func TestDialogEvent(t *testing.T) {
|
||
|
var acc testutil.Accumulator
|
||
|
fs := &Webhook{Path: "/filestack", acc: &acc}
|
||
|
resp := postWebhooks(t, fs, getFile(t, "testdata/dialog_open.json"))
|
||
|
if resp.Code != http.StatusOK {
|
||
|
t.Errorf("POST returned HTTP status code %v.\nExpected %v", resp.Code, http.StatusOK)
|
||
|
}
|
||
|
|
||
|
fields := map[string]interface{}{
|
||
|
"id": "102",
|
||
|
}
|
||
|
|
||
|
tags := map[string]string{
|
||
|
"action": "fp.dialog",
|
||
|
}
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t, "filestack_webhooks", fields, tags)
|
||
|
}
|
||
|
|
||
|
func TestParseError(t *testing.T) {
|
||
|
fs := &Webhook{Path: "/filestack"}
|
||
|
resp := postWebhooks(t, fs, strings.NewReader(""))
|
||
|
if resp.Code != http.StatusBadRequest {
|
||
|
t.Errorf("POST returned HTTP status code %v.\nExpected %v", resp.Code, http.StatusBadRequest)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestUploadEvent(t *testing.T) {
|
||
|
var acc testutil.Accumulator
|
||
|
fs := &Webhook{Path: "/filestack", acc: &acc}
|
||
|
resp := postWebhooks(t, fs, getFile(t, "testdata/upload.json"))
|
||
|
if resp.Code != http.StatusOK {
|
||
|
t.Errorf("POST returned HTTP status code %v.\nExpected %v", resp.Code, http.StatusOK)
|
||
|
}
|
||
|
|
||
|
fields := map[string]interface{}{
|
||
|
"id": "100946",
|
||
|
}
|
||
|
|
||
|
tags := map[string]string{
|
||
|
"action": "fp.upload",
|
||
|
}
|
||
|
|
||
|
acc.AssertContainsTaggedFields(t, "filestack_webhooks", fields, tags)
|
||
|
}
|
||
|
|
||
|
func TestVideoConversionEvent(t *testing.T) {
|
||
|
var acc testutil.Accumulator
|
||
|
fs := &Webhook{Path: "/filestack", acc: &acc}
|
||
|
resp := postWebhooks(t, fs, getFile(t, "testdata/video_conversion.json"))
|
||
|
if resp.Code != http.StatusBadRequest {
|
||
|
t.Errorf("POST returned HTTP status code %v.\nExpected %v", resp.Code, http.StatusBadRequest)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func getFile(t *testing.T, filePath string) io.Reader {
|
||
|
file, err := os.Open(filePath)
|
||
|
require.NoErrorf(t, err, "could not read from file %s", filePath)
|
||
|
|
||
|
return file
|
||
|
}
|