Files
upstream-ory-kratos/pkg/testhelpers/courier.go
upstream-mirror c60cc7ca75
Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
snapshot of https://github.com/ory/kratos.git (master, 2026-09-15; blobs > 131072B omitted)
2026-09-15 21:19:12 +05:00

62 lines
1.6 KiB
Go

// Copyright © 2023 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package testhelpers
import (
"context"
"regexp"
"sort"
"strings"
"testing"
"github.com/stretchr/testify/require"
"github.com/ory/kratos/courier"
keysetpagination "github.com/ory/x/pagination/keysetpagination_v2"
)
func CourierExpectMessage(ctx context.Context, t *testing.T, reg interface {
courier.PersistenceProvider
}, recipient, subject string,
) *courier.Message {
t.Helper()
messages, _, err := reg.CourierPersister().ListMessages(ctx, courier.ListCourierMessagesParameters{
Recipient: recipient,
}, []keysetpagination.Option{})
require.NoError(t, err)
sort.Slice(messages, func(i, j int) bool {
return messages[i].CreatedAt.After(messages[j].CreatedAt)
})
for _, m := range messages {
if strings.EqualFold(m.Recipient, recipient) && (strings.Contains(m.Subject, subject) || strings.Contains(m.Body, subject)) {
return &m
}
}
require.Failf(t, "could not find courier messages", "could not find courier messages with recipient %s and subject %s", recipient, subject)
return nil
}
func CourierExpectLinkInMessage(t *testing.T, message *courier.Message, offset int) string {
if offset == 0 {
offset = 1
}
match := regexp.MustCompile(`(http[^\s]+)`).FindStringSubmatch(message.Body)
require.Len(t, match, offset*2)
return match[offset]
}
func CourierExpectCodeInMessage(t *testing.T, message *courier.Message, offset int) string {
if offset == 0 {
offset = 1
}
match := regexp.MustCompile(CodeRegex).FindStringSubmatch(message.Body)
require.Len(t, match, offset*2)
return match[offset]
}