From 537a8d2060f765db90fec768ee3b6cda785e33b1 Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Sun, 19 May 2019 12:49:09 +0200 Subject: [PATCH] upd(messaging): remove external tests for webhooks Signed-off-by: Tit Petric --- .drone.yml | 2 +- messaging/internal/service/main_test.go | 2 +- .../internal/service/webhook_fortune_test.go | 31 +++++++++++++++++++ messaging/internal/service/webhook_test.go | 18 ++++++++--- 4 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 messaging/internal/service/webhook_fortune_test.go diff --git a/.drone.yml b/.drone.yml index cb5c0b020..192e7cca2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -106,7 +106,7 @@ steps: - gotest -v --tags="migrations" ./system/db/... - gotest -v --tags="migrations" ./compose/db/... - gotest -v --tags="migrations" ./messaging/db/... - - go test -run=^$ --tags="integration external" ./cmd/... ./internal/... ./compose/... ./messaging/... ./system/... + - go test -run=^$ --tags="integration" ./cmd/... ./internal/... ./compose/... ./messaging/... ./system/... - gotest -failfast --coverprofile=coverage.txt -v --tags="integration" ./internal/... ./system/... ./compose/... ./messaging/... - name: coverage diff --git a/messaging/internal/service/main_test.go b/messaging/internal/service/main_test.go index b8444fcb0..d764feeaf 100644 --- a/messaging/internal/service/main_test.go +++ b/messaging/internal/service/main_test.go @@ -1,4 +1,4 @@ -// +build integration external +// +build integration package service diff --git a/messaging/internal/service/webhook_fortune_test.go b/messaging/internal/service/webhook_fortune_test.go new file mode 100644 index 000000000..e12afa46f --- /dev/null +++ b/messaging/internal/service/webhook_fortune_test.go @@ -0,0 +1,31 @@ +// +build integration + +package service + +import ( + "fmt" + + "encoding/json" + "net/http" +) + +type Fortune struct{} + +func (*Fortune) ServeHTTP(w http.ResponseWriter, r *http.Request) { + fortune := "Fortune favors the prepared mind. - Louis Pasteur" + username := r.URL.Query()["username"] + if len(username) > 0 { + response := struct { + Username string `json:"username"` + Text string `json:"text"` + }{ + username[0], + fortune, + } + b, _ := json.Marshal(response) + w.Header().Set("Content-Type", "application/json") + w.Write(b) + return + } + fmt.Fprintf(w, fortune) +} diff --git a/messaging/internal/service/webhook_test.go b/messaging/internal/service/webhook_test.go index 64cd36a50..21c016b0a 100644 --- a/messaging/internal/service/webhook_test.go +++ b/messaging/internal/service/webhook_test.go @@ -1,4 +1,4 @@ -// +build integration,external +// +build integration package service @@ -7,6 +7,8 @@ import ( "strings" "testing" + "net/http/httptest" + "github.com/crusttech/crust/internal/auth" "github.com/crusttech/crust/internal/config" "github.com/crusttech/crust/internal/http" @@ -16,6 +18,10 @@ import ( ) func TestOutgoingWebhook(t *testing.T) { + handler := &Fortune{} + server := httptest.NewServer(handler) + defer server.Close() + var channel = &types.Channel{ID: 1} ctx := context.WithValue(context.Background(), "testing", true) @@ -39,8 +45,9 @@ func TestOutgoingWebhook(t *testing.T) { /* create outgoing webhook */ webhook, err := svc.Create(types.OutgoingWebhook, channel.ID, types.WebhookRequest{ Username: "test-webhook", + UserID: 1337, OutgoingTrigger: "fortune", - OutgoingURL: "https://api.scene-si.org/fortune.php", + OutgoingURL: server.URL, }) test.Assert(t, err == nil, "Error when creating webhook: %+v", err) @@ -55,14 +62,15 @@ func TestOutgoingWebhook(t *testing.T) { { message, err := svc.Do(webhooks[0], "") test.Assert(t, err == nil, "Error when triggering webhook: %+v", err) - test.Assert(t, strings.Contains(message.Message, "BOFH"), "Unexpected webhook output: %s", message.Message) + test.Assert(t, strings.Contains(message.Message, "Louis Pasteur"), "Unexpected webhook output: %s", message.Message) } // update webhook wh, err := svc.Update(webhook.ID, types.OutgoingWebhook, channel.ID, types.WebhookRequest{ Username: "test-webhook-json", + UserID: 1337, OutgoingTrigger: "fortune-json", - OutgoingURL: "https://api.scene-si.org/fortune.php?username=test", + OutgoingURL: server.URL + "?username=test", }) test.Assert(t, err == nil, "Error when updating webhook: %+v", err) @@ -71,7 +79,7 @@ func TestOutgoingWebhook(t *testing.T) { message, err := svc.Do(wh, "") test.Assert(t, err == nil, "Error when triggering webhook: %+v", err) test.Assert(t, message.Meta.Username == "test", "Expected message.meta.username = 'test', got: '%s'", message.Meta.Username) - test.Assert(t, strings.Contains(message.Message, "BOFH"), "Unexpected webhook output: %s", message.Message) + test.Assert(t, strings.Contains(message.Message, "Louis Pasteur"), "Unexpected webhook output: %s", message.Message) } } }