mirror of
https://github.com/bitwarden/server
synced 2025-12-10 21:33:41 +00:00
feat(marketing-initiated-premium): (Auth) [PM-27541] Add optional marketing param to email verification link (#6604)
Adds an optional `&fromMarketing=premium` query parameter to the verification email link. Feature flag: `"pm-26140-marketing-initiated-premium-flow"`
This commit is contained in:
@@ -241,7 +241,7 @@ public class AccountsControllerTests : IDisposable
|
||||
|
||||
var token = "fakeToken";
|
||||
|
||||
_sendVerificationEmailForRegistrationCommand.Run(email, name, receiveMarketingEmails).Returns(token);
|
||||
_sendVerificationEmailForRegistrationCommand.Run(email, name, receiveMarketingEmails, null).Returns(token);
|
||||
|
||||
// Act
|
||||
var result = await _sut.PostRegisterSendVerificationEmail(model);
|
||||
@@ -264,7 +264,7 @@ public class AccountsControllerTests : IDisposable
|
||||
ReceiveMarketingEmails = receiveMarketingEmails
|
||||
};
|
||||
|
||||
_sendVerificationEmailForRegistrationCommand.Run(email, name, receiveMarketingEmails).ReturnsNull();
|
||||
_sendVerificationEmailForRegistrationCommand.Run(email, name, receiveMarketingEmails, null).ReturnsNull();
|
||||
|
||||
// Act
|
||||
var result = await _sut.PostRegisterSendVerificationEmail(model);
|
||||
@@ -274,6 +274,55 @@ public class AccountsControllerTests : IDisposable
|
||||
Assert.Equal(204, noContentResult.StatusCode);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task PostRegisterSendEmailVerification_WhenFeatureFlagEnabled_PassesFromMarketingToCommandAsync(
|
||||
string email, string name, bool receiveMarketingEmails)
|
||||
{
|
||||
// Arrange
|
||||
var fromMarketing = MarketingInitiativeConstants.Premium;
|
||||
var model = new RegisterSendVerificationEmailRequestModel
|
||||
{
|
||||
Email = email,
|
||||
Name = name,
|
||||
ReceiveMarketingEmails = receiveMarketingEmails,
|
||||
FromMarketing = fromMarketing,
|
||||
};
|
||||
|
||||
_featureService.IsEnabled(FeatureFlagKeys.MarketingInitiatedPremiumFlow).Returns(true);
|
||||
|
||||
// Act
|
||||
await _sut.PostRegisterSendVerificationEmail(model);
|
||||
|
||||
// Assert
|
||||
await _sendVerificationEmailForRegistrationCommand.Received(1)
|
||||
.Run(email, name, receiveMarketingEmails, fromMarketing);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[BitAutoData]
|
||||
public async Task PostRegisterSendEmailVerification_WhenFeatureFlagDisabled_PassesNullFromMarketingToCommandAsync(
|
||||
string email, string name, bool receiveMarketingEmails)
|
||||
{
|
||||
// Arrange
|
||||
var model = new RegisterSendVerificationEmailRequestModel
|
||||
{
|
||||
Email = email,
|
||||
Name = name,
|
||||
ReceiveMarketingEmails = receiveMarketingEmails,
|
||||
FromMarketing = MarketingInitiativeConstants.Premium, // model includes FromMarketing: "premium"
|
||||
};
|
||||
|
||||
_featureService.IsEnabled(FeatureFlagKeys.MarketingInitiatedPremiumFlow).Returns(false);
|
||||
|
||||
// Act
|
||||
await _sut.PostRegisterSendVerificationEmail(model);
|
||||
|
||||
// Assert
|
||||
await _sendVerificationEmailForRegistrationCommand.Received(1)
|
||||
.Run(email, name, receiveMarketingEmails, null); // fromMarketing gets ignored and null gets passed
|
||||
}
|
||||
|
||||
[Theory, BitAutoData]
|
||||
public async Task PostRegisterFinish_WhenGivenOrgInvite_ShouldRegisterUser(
|
||||
string email, string masterPasswordHash, string orgInviteToken, Guid organizationUserId, string userSymmetricKey,
|
||||
|
||||
Reference in New Issue
Block a user