photostorate -> minio/importer
diff --git a/apps/minio/importer/importer_test.go b/apps/minio/importer/importer_test.go
new file mode 100644
index 0000000..90fad07
--- /dev/null
+++ b/apps/minio/importer/importer_test.go
@@ -0,0 +1,116 @@
+package importer
+
+import (
+	"net/http"
+	"net/http/httptest"
+	"strings"
+	"testing"
+)
+
+func checkErr(err error, t *testing.T) {
+	if err != nil {
+		t.Fatal(err)
+	}
+}
+
+type OkHandler struct {
+}
+
+func (h *OkHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+
+}
+
+type ErrorHandler struct {
+}
+
+func (h *ErrorHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+	http.Error(w, "", http.StatusBadRequest)
+}
+
+func TestValidEvent(t *testing.T) {
+	q, err := EventToQuery(`{"Key": "foo/bar"}`)
+	if err != nil {
+		t.Fatal(err)
+	}
+	expected := `mutation {
+  addImage(input: [{ objectPath: "foo/bar" }]) {
+    image {
+      id
+    }
+  }
+}`
+	if q.Query != expected {
+		t.Fatal(q.Query)
+	}
+}
+
+func TestValidEventEscaping(t *testing.T) {
+	q, err := EventToQuery(`{"Key": "foo\"bar"}`)
+	if err != nil {
+		t.Fatal(err)
+	}
+	expected := `mutation {
+  addImage(input: [{ objectPath: "foo\"bar" }]) {
+    image {
+      id
+    }
+  }
+}`
+	if q.Query != expected {
+		t.Fatal(q.Query)
+	}
+}
+
+func TestNoKey(t *testing.T) {
+	_, err := EventToQuery(`{"foo": "bar"}`)
+	if err == nil {
+		t.Fatal("Got key")
+	}
+}
+
+func TestInvalidKey(t *testing.T) {
+	_, err := EventToQuery(`{"foo": 123}`)
+	if err == nil {
+		t.Fatal("Got key")
+	}
+}
+
+func TestInvalidKeyComplex(t *testing.T) {
+	_, err := EventToQuery(`{"foo": {"bar": 5}}`)
+	if err == nil {
+		t.Fatal("Got key")
+	}
+}
+
+func TestHandlerOk(t *testing.T) {
+	mockApi := httptest.NewServer(&OkHandler{})
+	r, err := http.NewRequest("GET", "/foo", strings.NewReader(`{"Key": "foo/bar"}`))
+	checkErr(err, t)
+	rec := httptest.NewRecorder()
+	(&Handler{mockApi.URL}).ServeHTTP(rec, r)
+	if rec.Code != http.StatusOK {
+		t.Fatal(rec.Code)
+	}
+}
+
+func TestHandlerInvalidEvent(t *testing.T) {
+	mockApi := httptest.NewServer(&OkHandler{})
+	r, err := http.NewRequest("GET", "/foo", strings.NewReader(`{"Key": 123}`))
+	checkErr(err, t)
+	rec := httptest.NewRecorder()
+	(&Handler{mockApi.URL}).ServeHTTP(rec, r)
+	if rec.Code != http.StatusBadRequest {
+		t.Fatal(rec.Code)
+	}
+}
+
+func TestHandlerError(t *testing.T) {
+	mockApi := httptest.NewServer(&ErrorHandler{})
+	r, err := http.NewRequest("GET", "/foo", strings.NewReader(`{"Key": "foo/bar"}`))
+	checkErr(err, t)
+	rec := httptest.NewRecorder()
+	(&Handler{mockApi.URL}).ServeHTTP(rec, r)
+	if rec.Code == http.StatusOK {
+		t.Fatal(rec.Code)
+	}
+}