75f3dd141c
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CI and Release / lint-frontend (push) Has been cancelled
CI and Release / dockerfile-scan (push) Has been cancelled
CI and Release / test-frontend (push) Has been cancelled
CI and Release / lint-verification-agent (push) Has been cancelled
CI and Release / test-verification-agent (push) Has been cancelled
CI and Release / e2e-verification-agent (push) Has been cancelled
CI and Release / test-backend (push) Has been cancelled
CI and Release / build-dev-image (push) Has been cancelled
CI and Release / push-dev-image (push) Has been cancelled
CI and Release / build-image (push) Has been cancelled
CI and Release / build-verification-image (push) Has been cancelled
CI and Release / determine-version (push) Has been cancelled
CI and Release / push-image (push) Has been cancelled
CI and Release / push-verification-image (12) (push) Has been cancelled
CI and Release / lint-backend (push) Has been cancelled
CI and Release / push-verification-image (17) (push) Has been cancelled
CI and Release / push-verification-image (18) (push) Has been cancelled
CI and Release / release (push) Has been cancelled
CI and Release / publish-helm-chart (push) Has been cancelled
CI and Release / push-verification-image (13) (push) Has been cancelled
CI and Release / push-verification-image (14) (push) Has been cancelled
CI and Release / push-verification-image (15) (push) Has been cancelled
CI and Release / push-verification-image (16) (push) Has been cancelled
73 lines
1.4 KiB
Go
73 lines
1.4 KiB
Go
package notifiers
|
|
|
|
import (
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"sync"
|
|
"sync/atomic"
|
|
|
|
"github.com/google/uuid"
|
|
|
|
webhook_notifier "databasus-backend/internal/features/notifiers/models/webhook"
|
|
)
|
|
|
|
type WebhookStub struct {
|
|
server *httptest.Server
|
|
callCount atomic.Int64
|
|
}
|
|
|
|
func startWebhookStub() *WebhookStub {
|
|
stub := &WebhookStub{}
|
|
|
|
stub.server = httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
stub.callCount.Add(1)
|
|
w.WriteHeader(http.StatusOK)
|
|
}))
|
|
|
|
return stub
|
|
}
|
|
|
|
var sharedWebhookStub = sync.OnceValue(startWebhookStub)
|
|
|
|
func GetWebhookStub() *WebhookStub {
|
|
return sharedWebhookStub()
|
|
}
|
|
|
|
func (s *WebhookStub) URL() string {
|
|
return s.server.URL
|
|
}
|
|
|
|
func (s *WebhookStub) CallCount() int {
|
|
return int(s.callCount.Load())
|
|
}
|
|
|
|
func (s *WebhookStub) ResetCalls() {
|
|
s.callCount.Store(0)
|
|
}
|
|
|
|
func CreateTestNotifier(workspaceID uuid.UUID) *Notifier {
|
|
notifier := &Notifier{
|
|
WorkspaceID: workspaceID,
|
|
Name: "test " + uuid.New().String(),
|
|
NotifierType: NotifierTypeWebhook,
|
|
WebhookNotifier: &webhook_notifier.WebhookNotifier{
|
|
WebhookURL: GetWebhookStub().URL() + "/test-" + uuid.New().String(),
|
|
WebhookMethod: webhook_notifier.WebhookMethodPOST,
|
|
},
|
|
}
|
|
|
|
notifier, err := notifierRepository.Save(notifier)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return notifier
|
|
}
|
|
|
|
func RemoveTestNotifier(notifier *Notifier) {
|
|
err := notifierRepository.Delete(notifier)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|