Merged in feature/momocks (pull request #150)
Decrease Mocks * feature/nomocks * nonet * assertsaws * assert
This commit is contained in:
+64
-11
@@ -3,6 +3,7 @@ package test
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"regexp"
|
||||
"testing"
|
||||
@@ -50,22 +51,22 @@ func GetQueueName(t testing.TB, name RunnerName) string {
|
||||
return GetAlias(t, string(name))
|
||||
}
|
||||
|
||||
func CreateQueue(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigProvider, name RunnerName) string {
|
||||
func CreateQueue(t testing.TB, cfg serviceconfig.ConfigProvider, name RunnerName) string {
|
||||
t.Helper()
|
||||
queueName := GetQueueName(t, name)
|
||||
queueM, err := cfg.GetQueueClient().CreateQueue(ctx, &sqs.CreateQueueInput{
|
||||
queueM, err := cfg.GetQueueClient().CreateQueue(t.Context(), &sqs.CreateQueueInput{
|
||||
QueueName: aws.String(queueName),
|
||||
})
|
||||
require.NoError(t, err)
|
||||
slog.Info("create queue", "name", queueName, "url", *queueM.QueueUrl)
|
||||
|
||||
err = cfg.PingQueueByURL(ctx, *queueM.QueueUrl)
|
||||
err = cfg.PingQueueByURL(t.Context(), *queueM.QueueUrl)
|
||||
require.NoError(t, err)
|
||||
|
||||
return *queueM.QueueUrl
|
||||
}
|
||||
|
||||
func AssertMessage(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigProvider, params *queue.ReceiveParams) types.Message {
|
||||
func AssertMessage(t testing.TB, cfg serviceconfig.ConfigProvider, params *queue.ReceiveParams) types.Message {
|
||||
t.Helper()
|
||||
timeout := time.After(30 * time.Second)
|
||||
tick := time.NewTicker(500 * time.Millisecond)
|
||||
@@ -78,7 +79,7 @@ func AssertMessage(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigPr
|
||||
case <-tick.C:
|
||||
slog.Info("receiving from queue")
|
||||
|
||||
result, err := cfg.ReceiveFromQueue(ctx, params)
|
||||
result, err := cfg.ReceiveFromQueue(t.Context(), params)
|
||||
if err != nil {
|
||||
continue
|
||||
} else if len(result.Messages) < 1 {
|
||||
@@ -86,24 +87,24 @@ func AssertMessage(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigPr
|
||||
}
|
||||
|
||||
return result.Messages[0]
|
||||
case <-ctx.Done():
|
||||
t.Fatal(ctx.Err())
|
||||
case <-t.Context().Done():
|
||||
t.Fatal(t.Context().Err())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func AssertMessageBody(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigProvider, url string, body *regexp.Regexp) {
|
||||
func AssertMessageBody(t testing.TB, cfg serviceconfig.ConfigProvider, url string, body *regexp.Regexp) {
|
||||
t.Helper()
|
||||
message := AssertMessage(t, ctx, cfg, &queue.ReceiveParams{
|
||||
message := AssertMessage(t, cfg, &queue.ReceiveParams{
|
||||
QueueURL: url,
|
||||
})
|
||||
|
||||
assert.Regexp(t, body, *message.Body)
|
||||
}
|
||||
|
||||
func AssertMessageAttr(t testing.TB, ctx context.Context, cfg serviceconfig.ConfigProvider, url string, name string, value *regexp.Regexp) {
|
||||
func AssertMessageAttr(t testing.TB, cfg serviceconfig.ConfigProvider, url string, name string, value *regexp.Regexp) {
|
||||
t.Helper()
|
||||
message := AssertMessage(t, ctx, cfg, &queue.ReceiveParams{
|
||||
message := AssertMessage(t, cfg, &queue.ReceiveParams{
|
||||
QueueURL: url,
|
||||
Attributes: []string{name},
|
||||
})
|
||||
@@ -111,3 +112,55 @@ func AssertMessageAttr(t testing.TB, ctx context.Context, cfg serviceconfig.Conf
|
||||
assert.NotNil(t, message.MessageAttributes[name])
|
||||
assert.Regexp(t, value, *(message.MessageAttributes[name]).StringValue)
|
||||
}
|
||||
|
||||
func AssertMessageBodies(t testing.TB, cfg serviceconfig.ConfigProvider, url string, bodies []*regexp.Regexp) {
|
||||
t.Helper()
|
||||
timeout := time.After(30 * time.Second)
|
||||
tick := time.NewTicker(2 * time.Second)
|
||||
defer tick.Stop()
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-timeout:
|
||||
t.Fatal("assert timeout")
|
||||
case <-tick.C:
|
||||
slog.Info("receiving from queue")
|
||||
|
||||
result, err := cfg.ReceiveFromQueue(t.Context(), &queue.ReceiveParams{
|
||||
QueueURL: url,
|
||||
VisibilityTimeout: 1,
|
||||
WaitTimeSeconds: 1,
|
||||
})
|
||||
if err != nil {
|
||||
continue
|
||||
} else if len(result.Messages) < 1 {
|
||||
continue
|
||||
}
|
||||
|
||||
found := true
|
||||
for _, m := range result.Messages {
|
||||
foundBody := false
|
||||
for _, b := range bodies {
|
||||
log.Print(*m.Body)
|
||||
if b.MatchString(*m.Body) {
|
||||
foundBody = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !foundBody {
|
||||
found = false
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !found {
|
||||
continue
|
||||
}
|
||||
|
||||
return
|
||||
case <-t.Context().Done():
|
||||
t.Fatal(t.Context().Err())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user