-
-
Notifications
You must be signed in to change notification settings - Fork 931
/
email_templates_test.go
90 lines (76 loc) · 3.86 KB
/
email_templates_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
// Copyright © 2023 Ory Corp
// SPDX-License-Identifier: Apache-2.0
package courier_test
import (
"context"
"encoding/json"
"fmt"
"testing"
"github.com/stretchr/testify/require"
"github.com/ory/kratos/courier"
"github.com/ory/kratos/courier/template/email"
"github.com/ory/kratos/internal"
)
func TestGetTemplateType(t *testing.T) {
for expectedType, tmpl := range map[courier.TemplateType]courier.EmailTemplate{
courier.TypeRecoveryInvalid: &email.RecoveryInvalid{},
courier.TypeRecoveryValid: &email.RecoveryValid{},
courier.TypeRecoveryCodeInvalid: &email.RecoveryCodeInvalid{},
courier.TypeRecoveryCodeValid: &email.RecoveryCodeValid{},
courier.TypeVerificationInvalid: &email.VerificationInvalid{},
courier.TypeVerificationValid: &email.VerificationValid{},
courier.TypeVerificationCodeInvalid: &email.VerificationCodeInvalid{},
courier.TypeVerificationCodeValid: &email.VerificationCodeValid{},
courier.TypeTestStub: &email.TestStub{},
} {
t.Run(fmt.Sprintf("case=%s", expectedType), func(t *testing.T) {
actualType, err := courier.GetEmailTemplateType(tmpl)
require.NoError(t, err)
require.Equal(t, expectedType, actualType)
})
}
}
func TestNewEmailTemplateFromMessage(t *testing.T) {
_, reg := internal.NewFastRegistryWithMocks(t)
ctx := context.Background()
for tmplType, expectedTmpl := range map[courier.TemplateType]courier.EmailTemplate{
courier.TypeRecoveryInvalid: email.NewRecoveryInvalid(reg, &email.RecoveryInvalidModel{To: "foo"}),
courier.TypeRecoveryValid: email.NewRecoveryValid(reg, &email.RecoveryValidModel{To: "bar", RecoveryURL: "http://foo.bar"}),
courier.TypeRecoveryCodeValid: email.NewRecoveryCodeValid(reg, &email.RecoveryCodeValidModel{To: "bar", RecoveryCode: "12345678"}),
courier.TypeRecoveryCodeInvalid: email.NewRecoveryCodeInvalid(reg, &email.RecoveryCodeInvalidModel{To: "bar"}),
courier.TypeVerificationInvalid: email.NewVerificationInvalid(reg, &email.VerificationInvalidModel{To: "baz"}),
courier.TypeVerificationValid: email.NewVerificationValid(reg, &email.VerificationValidModel{To: "faz", VerificationURL: "http://bar.foo"}),
courier.TypeVerificationCodeInvalid: email.NewVerificationCodeInvalid(reg, &email.VerificationCodeInvalidModel{To: "baz"}),
courier.TypeVerificationCodeValid: email.NewVerificationCodeValid(reg, &email.VerificationCodeValidModel{To: "faz", VerificationURL: "http://bar.foo", VerificationCode: "123456678"}),
courier.TypeTestStub: email.NewTestStub(reg, &email.TestStubModel{To: "far", Subject: "test subject", Body: "test body"}),
} {
t.Run(fmt.Sprintf("case=%s", tmplType), func(t *testing.T) {
tmplData, err := json.Marshal(expectedTmpl)
require.NoError(t, err)
m := courier.Message{TemplateType: tmplType, TemplateData: tmplData}
actualTmpl, err := courier.NewEmailTemplateFromMessage(reg, m)
require.NoError(t, err)
require.IsType(t, expectedTmpl, actualTmpl)
expectedRecipient, err := expectedTmpl.EmailRecipient()
require.NoError(t, err)
actualRecipient, err := actualTmpl.EmailRecipient()
require.NoError(t, err)
require.Equal(t, expectedRecipient, actualRecipient)
expectedSubject, err := expectedTmpl.EmailSubject(ctx)
require.NoError(t, err)
actualSubject, err := actualTmpl.EmailSubject(ctx)
require.NoError(t, err)
require.Equal(t, expectedSubject, actualSubject)
expectedBody, err := expectedTmpl.EmailBody(ctx)
require.NoError(t, err)
actualBody, err := actualTmpl.EmailBody(ctx)
require.NoError(t, err)
require.Equal(t, expectedBody, actualBody)
expectedBodyPlaintext, err := expectedTmpl.EmailBodyPlaintext(ctx)
require.NoError(t, err)
actualBodyPlaintext, err := actualTmpl.EmailBodyPlaintext(ctx)
require.NoError(t, err)
require.Equal(t, expectedBodyPlaintext, actualBodyPlaintext)
})
}
}