package notify import ( "context" "io" "log/slog" "net/http" "net/url" ) // NtfyPriority exports ntfyPriority for testing. func NtfyPriority(priority string) string { return ntfyPriority(priority) } // SlackColor exports slackColor for testing. func SlackColor(priority string) string { return slackColor(priority) } // NewRequestForTest exports newRequest for testing. func NewRequestForTest( ctx context.Context, method string, target *url.URL, body io.Reader, ) *http.Request { return newRequest(ctx, method, target, body) } // NewTestService creates a Service suitable for unit testing. // It discards log output and uses the given transport. func NewTestService(transport http.RoundTripper) *Service { return &Service{ log: slog.New(slog.DiscardHandler), transport: transport, } } // SetNtfyURL sets the ntfy URL on a Service for testing. func (svc *Service) SetNtfyURL(u *url.URL) { svc.ntfyURL = u } // SetSlackWebhookURL sets the Slack webhook URL on a // Service for testing. func (svc *Service) SetSlackWebhookURL(u *url.URL) { svc.slackWebhookURL = u } // SetMattermostWebhookURL sets the Mattermost webhook URL on // a Service for testing. func (svc *Service) SetMattermostWebhookURL(u *url.URL) { svc.mattermostWebhookURL = u } // SendNtfy exports sendNtfy for testing. func (svc *Service) SendNtfy( ctx context.Context, topicURL *url.URL, title, message, priority string, ) error { return svc.sendNtfy(ctx, topicURL, title, message, priority) } // SendSlack exports sendSlack for testing. func (svc *Service) SendSlack( ctx context.Context, webhookURL *url.URL, title, message, priority string, ) error { return svc.sendSlack( ctx, webhookURL, title, message, priority, ) }