mirror of
https://github.com/PrivateCaptcha/PrivateCaptcha.git
synced 2026-02-08 23:09:11 -06:00
Use portal mailer in tests instead of stub mailer
This commit is contained in:
@@ -10,23 +10,37 @@ import (
|
||||
type StubMailer struct {
|
||||
LastCode int
|
||||
LastEmail string
|
||||
Mailer common.Mailer
|
||||
}
|
||||
|
||||
var _ common.Mailer = (*StubMailer)(nil)
|
||||
|
||||
func (sm *StubMailer) SendTwoFactor(ctx context.Context, email string, code int, ua string, location string) error {
|
||||
slog.InfoContext(ctx, "Sent two factor code via email", "code", code, "email", email)
|
||||
sm.LastCode = code
|
||||
sm.LastEmail = email
|
||||
|
||||
if sm.Mailer != nil {
|
||||
return sm.Mailer.SendTwoFactor(ctx, email, code, ua, location)
|
||||
}
|
||||
|
||||
slog.InfoContext(ctx, "Sent two factor code via email", "code", code, "email", email)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sm *StubMailer) SendWelcome(ctx context.Context, email, name string) error {
|
||||
if sm.Mailer != nil {
|
||||
return sm.Mailer.SendWelcome(ctx, email, name)
|
||||
}
|
||||
|
||||
slog.InfoContext(ctx, "Sent welcome email", "email", email, "name", name)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sm *StubMailer) SendOrgInvite(ctx context.Context, email, name string, orgName, orgOwnerEmail, orgOwnerName, orgURL string, requiresRegister bool) error {
|
||||
if sm.Mailer != nil {
|
||||
return sm.Mailer.SendOrgInvite(ctx, email, name, orgName, orgOwnerEmail, orgOwnerName, orgURL, requiresRegister)
|
||||
}
|
||||
|
||||
slog.InfoContext(ctx, "Sent org invite email", "email", email, "name", name, "requiresRegister", requiresRegister)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ import (
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/db"
|
||||
dbgen "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/generated"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
@@ -531,7 +530,7 @@ func TestGetAuditLogs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -878,7 +877,7 @@ func TestAuditLogEndpointsInvalidParams(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -933,7 +932,7 @@ func TestExportAuditLogsCSV(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
@@ -91,7 +90,7 @@ func TestPostClientSideError(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/session"
|
||||
)
|
||||
@@ -140,18 +139,14 @@ func TestPostLogin(t *testing.T) {
|
||||
req.Header.Set(common.HeaderContentType, common.ContentTypeURLEncoded)
|
||||
rr = httptest.NewRecorder()
|
||||
server.postLogin(rr, req)
|
||||
resp := rr.Result()
|
||||
|
||||
if rr.Code != http.StatusOK {
|
||||
t.Errorf("Unexpected post login code: %v", rr.Code)
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
t.Errorf("Unexpected post login code: %v", resp.StatusCode)
|
||||
}
|
||||
|
||||
// Check if the two-factor code is set in the StubMailer
|
||||
stubMailer, ok := server.Mailer.(*email.StubMailer)
|
||||
if !ok {
|
||||
t.Fatal("failed to cast Mailer to StubMailer")
|
||||
}
|
||||
if stubMailer.LastCode == 0 {
|
||||
t.Error("two-factor code not set in StubMailer")
|
||||
if _, err := portal_tests.TwoFactorCodeFromResponse(ctx, resp, server.Sessions); err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,7 +314,7 @@ func TestLogout(t *testing.T) {
|
||||
t.Fatalf("failed to create new account: %v", err)
|
||||
}
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@ import (
|
||||
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/session"
|
||||
)
|
||||
@@ -36,7 +35,7 @@ func TestDismissNotification(t *testing.T) {
|
||||
t.Fatalf("Failed to create notification: %v", err)
|
||||
}
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to authenticate: %v", err)
|
||||
}
|
||||
@@ -92,7 +91,7 @@ func TestDismissNotificationInvalidID(t *testing.T) {
|
||||
t.Fatalf("Failed to create account: %v", err)
|
||||
}
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to authenticate: %v", err)
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
dbgen "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/generated"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
@@ -36,7 +35,7 @@ func TestGetAnotherUsersOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -84,7 +83,7 @@ func TestInviteUser(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user1.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user1.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -154,7 +153,7 @@ func TestDeleteUserFromOrgPermissions(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, userMember1.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, userMember1.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -202,7 +201,7 @@ func TestGetNewOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -249,7 +248,7 @@ func TestGetOrgDashboard(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -305,7 +304,7 @@ func TestGetOrgProperties(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -353,7 +352,7 @@ func TestGetOrgMembers(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -401,7 +400,7 @@ func TestGetOrgSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -453,7 +452,7 @@ func TestGetOrgAuditLogs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -501,7 +500,7 @@ func TestPutOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -561,7 +560,7 @@ func TestPostNewOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -616,7 +615,7 @@ func TestJoinOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -678,7 +677,7 @@ func TestLeaveOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -728,7 +727,7 @@ func TestDeleteOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -787,7 +786,7 @@ func TestTransferOrg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -853,7 +852,7 @@ func TestTransferOrgInvalidParams(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -910,7 +909,7 @@ func TestTransferOrgNotOwner(t *testing.T) {
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
// Authenticate as the member (not the owner)
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, member.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, member.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -958,7 +957,7 @@ func TestTransferOrgToNonMember(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1011,7 +1010,7 @@ func TestTransferOrgToInvitedMember(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1053,7 +1052,7 @@ func TestOrgEndpointsInvalidPathArg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1106,7 +1105,7 @@ func TestOrgEndpointsWrongOwnership(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1170,7 +1169,7 @@ func TestOrgEndpointsMissingSubscription(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1214,7 +1213,7 @@ func TestOrgEndpointsInvalidFormArgs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1271,7 +1270,7 @@ func TestOrgMemberEndpointsInvalidForm(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1333,7 +1332,7 @@ func TestOrgMemberEndpointsInvalidPathArg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1387,7 +1386,7 @@ func TestInviteNonExistingUserByEmail(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user1.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user1.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1590,7 +1589,7 @@ func TestOrgMembersShowsEmailInvites(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1677,7 +1676,7 @@ func TestOrgMemberBecomesMemberAfterJoining(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1766,7 +1765,7 @@ func TestDeleteOrgMembers(t *testing.T) {
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
// Authenticate as owner
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, owner.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -15,9 +15,8 @@ import (
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/db"
|
||||
dbgen "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/generated"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/puzzle"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/puzzle"
|
||||
)
|
||||
|
||||
func TestGetNewOrgProperty(t *testing.T) {
|
||||
@@ -34,7 +33,7 @@ func TestGetNewOrgProperty(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -108,7 +107,7 @@ func TestPutPropertyInsufficientPermissions(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -152,7 +151,7 @@ func TestPostNewOrgProperty(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -225,7 +224,7 @@ func TestMoveProperty(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -319,7 +318,7 @@ func TestGetPropertyStats(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -434,7 +433,7 @@ func TestGetOrgProperty(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -491,7 +490,7 @@ func TestGetOrgPropertySettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -540,7 +539,7 @@ func TestGetPropertyDashboard(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -585,7 +584,7 @@ func TestGetPropertyReportsTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -630,7 +629,7 @@ func TestGetPropertySettingsTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -679,7 +678,7 @@ func TestGetPropertyIntegrationsTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -724,7 +723,7 @@ func TestGetPropertyAuditLogsTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -769,7 +768,7 @@ func TestDeleteProperty(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -912,7 +911,7 @@ func TestEchoPuzzle(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -942,7 +941,7 @@ func TestPropertyEndpointsInvalidPathArg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1002,7 +1001,7 @@ func TestPropertyEndpointsWrongOwnership(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1056,7 +1055,7 @@ func TestPropertyEndpointsMissingSubscription(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1108,7 +1107,7 @@ func TestPropertyEndpointsInvalidFormArgs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1194,7 +1193,7 @@ func TestMovePropertyInvalidPathArgs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1264,7 +1263,7 @@ func TestMovePropertyInvalidForm(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -1280,8 +1279,8 @@ func TestMovePropertyInvalidForm(t *testing.T) {
|
||||
wantCode int
|
||||
}{
|
||||
{
|
||||
name: "MovePropertyMissingOrgParam",
|
||||
path: fmt.Sprintf("/org/%s/property/%s/move", orgID, propertyID),
|
||||
name: "MovePropertyMissingOrgParam",
|
||||
path: fmt.Sprintf("/org/%s/property/%s/move", orgID, propertyID),
|
||||
formBody: url.Values{
|
||||
// Missing org param
|
||||
},
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
emailpkg "github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
func registerSuite(srv *http.ServeMux, name, email, token string) *http.Response {
|
||||
@@ -51,8 +51,13 @@ func TestPostRegister(t *testing.T) {
|
||||
}
|
||||
cookie := resp.Cookies()[idx]
|
||||
|
||||
stubMailer := server.Mailer.(*emailpkg.StubMailer)
|
||||
resp = twoFactorSuite(srv, email, server.XSRF.Token(email), stubMailer.LastCode, cookie)
|
||||
ctx := t.Context()
|
||||
code, err := portal_tests.TwoFactorCodeFromSession(ctx, cookie.Value, server.Sessions.Store)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
resp = twoFactorSuite(srv, email, server.XSRF.Token(email), code, cookie)
|
||||
|
||||
if resp.StatusCode != http.StatusSeeOther {
|
||||
t.Errorf("unexpected post twofactor code: %v", resp.StatusCode)
|
||||
@@ -62,7 +67,6 @@ func TestPostRegister(t *testing.T) {
|
||||
t.Errorf("unexpected redirect: %v", location)
|
||||
}
|
||||
|
||||
ctx := t.Context()
|
||||
user, err := store.Impl().FindUserByEmail(ctx, email)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
@@ -119,6 +119,11 @@ func TestMain(m *testing.M) {
|
||||
|
||||
sessionStore := db.NewSessionStore(store, session.KeyPersistent)
|
||||
|
||||
ctx := context.TODO()
|
||||
cdnURLConfig := config.AsURL(ctx, cfg.Get(common.CDNBaseURLKey))
|
||||
portalURLConfig := config.AsURL(ctx, cfg.Get(common.PortalBaseURLKey))
|
||||
mailer := NewPortalMailer("https:"+cdnURLConfig.URL(), "https:"+portalURLConfig.URL(), &email.StubSender{}, cfg)
|
||||
|
||||
server = &Server{
|
||||
Stage: common.StageTest,
|
||||
Store: store,
|
||||
@@ -130,7 +135,7 @@ func TestMain(m *testing.M) {
|
||||
Store: sessionStore,
|
||||
MaxLifetime: sessionStore.TTL(),
|
||||
},
|
||||
Mailer: &email.StubMailer{},
|
||||
Mailer: mailer,
|
||||
RateLimiter: &ratelimit.StubRateLimiter{Header: cfg.Get(common.RateLimitHeaderKey).Value()},
|
||||
PuzzleEngine: puzzleEngine,
|
||||
Metrics: monitoring.NewStub(),
|
||||
@@ -144,7 +149,6 @@ func TestMain(m *testing.M) {
|
||||
EmailVerifier: &PortalEmailVerifier{},
|
||||
}
|
||||
|
||||
ctx := context.TODO()
|
||||
templatesBuilder := NewTemplatesBuilder()
|
||||
if err := templatesBuilder.AddFS(ctx, web.Templates(), "core"); err != nil {
|
||||
panic(err)
|
||||
|
||||
@@ -15,7 +15,6 @@ import (
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/db"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
@@ -51,7 +50,7 @@ func TestCreateAPIKey(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -96,7 +95,7 @@ func TestDeleteAPIKey(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -142,7 +141,7 @@ func TestRotateAPIKey(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -197,7 +196,7 @@ func TestGetSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -235,7 +234,7 @@ func TestGetGeneralSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -282,7 +281,7 @@ func TestGetAPIKeysSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -329,7 +328,7 @@ func TestGetUsageSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -372,7 +371,7 @@ func TestGetSettingsTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -411,7 +410,7 @@ func TestEditEmail(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -458,7 +457,7 @@ func TestPutGeneralSettings(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -497,7 +496,7 @@ func TestDeleteAccount(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -539,7 +538,7 @@ func TestGetAccountStats(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -624,7 +623,7 @@ func TestAPIKeyEndpointsInvalidPathArg(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -681,7 +680,7 @@ func TestAPIKeyEndpointsWrongOwnership(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user2.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -729,7 +728,7 @@ func TestSettingsEndpointsInvalidFormArgs(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -797,7 +796,7 @@ func TestSettingsTabInvalidTab(t *testing.T) {
|
||||
srv := http.NewServeMux()
|
||||
server.Setup(portalDomain(), common.NoopMiddleware).Register(srv)
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
emailpkg "github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/puzzle"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/session"
|
||||
"github.com/PuerkitoBio/goquery"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
@@ -116,7 +116,30 @@ func Text(node *html.Node) string {
|
||||
return strings.TrimSpace(sel.Text())
|
||||
}
|
||||
|
||||
func AuthenticateSuite(ctx context.Context, email string, srv *http.ServeMux, xsrf *common.XSRFMiddleware, cookieName string, stubMailer *emailpkg.StubMailer) (*http.Cookie, error) {
|
||||
func TwoFactorCodeFromResponse(ctx context.Context, resp *http.Response, sessions *session.Manager) (int, error) {
|
||||
idx := slices.IndexFunc(resp.Cookies(), func(c *http.Cookie) bool { return c.Name == sessions.CookieName })
|
||||
if idx == -1 {
|
||||
return 0, errors.New("failed to find a cookie " + sessions.CookieName)
|
||||
}
|
||||
cookie := resp.Cookies()[idx]
|
||||
|
||||
return TwoFactorCodeFromSession(ctx, cookie.Value, sessions.Store)
|
||||
}
|
||||
|
||||
func TwoFactorCodeFromSession(ctx context.Context, cookie string, store session.Store) (int, error) {
|
||||
sess, err := store.Read(ctx, cookie, false /*skip cache*/)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
if code, ok := sess.Get(ctx, session.KeyTwoFactorCode).(int); ok {
|
||||
return code, nil
|
||||
}
|
||||
|
||||
return 0, errors.New("2FA code not found in session")
|
||||
}
|
||||
|
||||
func AuthenticateSuite(ctx context.Context, email string, srv *http.ServeMux, xsrf *common.XSRFMiddleware, sessions *session.Manager) (*http.Cookie, error) {
|
||||
form := url.Values{}
|
||||
form.Add(common.ParamCSRFToken, xsrf.Token(""))
|
||||
form.Add(common.ParamEmail, email)
|
||||
@@ -129,16 +152,27 @@ func AuthenticateSuite(ctx context.Context, email string, srv *http.ServeMux, xs
|
||||
srv.ServeHTTP(w, req)
|
||||
|
||||
resp := w.Result()
|
||||
idx := slices.IndexFunc(resp.Cookies(), func(c *http.Cookie) bool { return c.Name == cookieName })
|
||||
idx := slices.IndexFunc(resp.Cookies(), func(c *http.Cookie) bool { return c.Name == sessions.CookieName })
|
||||
if idx == -1 {
|
||||
return nil, errors.New("cannot find session cookie in response")
|
||||
}
|
||||
cookie := resp.Cookies()[idx]
|
||||
|
||||
sess, err := sessions.Store.Read(ctx, cookie.Value, false /*skip cache*/)
|
||||
if err != nil {
|
||||
slog.ErrorContext(ctx, "Failed to read server session from session cookie", common.ErrAttr(err))
|
||||
return cookie, err
|
||||
}
|
||||
|
||||
code, ok := sess.Get(ctx, session.KeyTwoFactorCode).(int)
|
||||
if !ok {
|
||||
return nil, errors.New("2FA code not found in session")
|
||||
}
|
||||
|
||||
form = url.Values{}
|
||||
form.Add(common.ParamCSRFToken, xsrf.Token(email))
|
||||
form.Add(common.ParamEmail, email)
|
||||
form.Add(common.ParamVerificationCode, strconv.Itoa(stubMailer.LastCode))
|
||||
form.Add(common.ParamVerificationCode, strconv.Itoa(code))
|
||||
|
||||
// now send the 2fa request
|
||||
req = httptest.NewRequest("POST", "/"+common.TwoFactorEndpoint, bytes.NewBufferString(form.Encode()))
|
||||
|
||||
@@ -13,7 +13,6 @@ import (
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/common"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/db"
|
||||
db_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/db/tests"
|
||||
"github.com/PrivateCaptcha/PrivateCaptcha/pkg/email"
|
||||
portal_tests "github.com/PrivateCaptcha/PrivateCaptcha/pkg/portal/tests"
|
||||
)
|
||||
|
||||
@@ -32,7 +31,7 @@ func TestPostTwoFactor(t *testing.T) {
|
||||
t.Fatalf("failed to create new account: %v", err)
|
||||
}
|
||||
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@@ -123,8 +122,12 @@ func TestPostTwoFactorOtherServer(t *testing.T) {
|
||||
t.Fatal("Didn't delete cached session")
|
||||
}
|
||||
|
||||
stubMailer := server.Mailer.(*email.StubMailer)
|
||||
resp = twoFactorSuite(srv, user.Email, server.XSRF.Token(user.Email), stubMailer.LastCode, cookie)
|
||||
code, err := portal_tests.TwoFactorCodeFromSession(ctx, cookie.Value, server.Sessions.Store)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
resp = twoFactorSuite(srv, user.Email, server.XSRF.Token(user.Email), code, cookie)
|
||||
|
||||
if resp.StatusCode != http.StatusSeeOther {
|
||||
t.Errorf("unexpected post twofactor code: %v", resp.StatusCode)
|
||||
@@ -174,8 +177,10 @@ func TestResend2FA(t *testing.T) {
|
||||
}
|
||||
cookie := resp.Cookies()[idx]
|
||||
|
||||
stubMailer := server.Mailer.(*email.StubMailer)
|
||||
originalCode := stubMailer.LastCode
|
||||
originalCode, err := portal_tests.TwoFactorCodeFromSession(ctx, cookie.Value, server.Sessions.Store)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Try to use a wrong code first (but don't complete login)
|
||||
// This simulates a user who received the code but wants to resend
|
||||
@@ -192,9 +197,9 @@ func TestResend2FA(t *testing.T) {
|
||||
}
|
||||
|
||||
// The code should have been reissued and should be different
|
||||
newCode := stubMailer.LastCode
|
||||
if newCode == 0 {
|
||||
t.Error("New 2FA code was not generated")
|
||||
newCode, err := portal_tests.TwoFactorCodeFromSession(ctx, cookie.Value, server.Sessions.Store)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Verify that the new code is different from the original
|
||||
@@ -260,7 +265,7 @@ func TestResend2FAWithCompletedSession(t *testing.T) {
|
||||
}
|
||||
|
||||
// Complete the full authentication
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions.CookieName, server.Mailer.(*email.StubMailer))
|
||||
cookie, err := portal_tests.AuthenticateSuite(ctx, user.Email, srv, server.XSRF, server.Sessions)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user