mirror of
https://github.com/logto-io/logto.git
synced 2024-12-16 20:26:19 -05:00
test: add sad paths for register with identifiers flow (#4299)
This commit is contained in:
parent
7cf73f96c0
commit
0fcea5ae5e
2 changed files with 124 additions and 0 deletions
|
@ -0,0 +1,124 @@
|
|||
import { ConnectorType, InteractionEvent, SignInMode } from '@logto/schemas';
|
||||
|
||||
import {
|
||||
patchInteractionIdentifiers,
|
||||
putInteraction,
|
||||
sendVerificationCode,
|
||||
} from '#src/api/interaction.js';
|
||||
import { updateSignInExperience } from '#src/api/sign-in-experience.js';
|
||||
import { initClient } from '#src/helpers/client.js';
|
||||
import {
|
||||
clearConnectorsByTypes,
|
||||
setEmailConnector,
|
||||
setSmsConnector,
|
||||
} from '#src/helpers/connector.js';
|
||||
import { expectRejects, readVerificationCode } from '#src/helpers/index.js';
|
||||
import { enableAllPasswordSignInMethods } from '#src/helpers/sign-in-experience.js';
|
||||
import { generateNewUserProfile } from '#src/helpers/user.js';
|
||||
import { generatePassword, generateUsername } from '#src/utils.js';
|
||||
|
||||
describe('Register with identifiers sad path', () => {
|
||||
it('Should fail to register if sign-in mode is sign-in only', async () => {
|
||||
await updateSignInExperience({ signInMode: SignInMode.SignIn });
|
||||
const client = await initClient();
|
||||
|
||||
await expectRejects(
|
||||
client.send(putInteraction, {
|
||||
event: InteractionEvent.Register,
|
||||
}),
|
||||
{
|
||||
code: 'auth.forbidden',
|
||||
statusCode: 403,
|
||||
}
|
||||
);
|
||||
|
||||
// Reset
|
||||
await updateSignInExperience({ signInMode: SignInMode.SignInAndRegister });
|
||||
});
|
||||
|
||||
describe('Should fail to register with identifiers if sign-up settings are not enabled', () => {
|
||||
beforeAll(async () => {
|
||||
// This function call will disable all sign-up settings by default
|
||||
await enableAllPasswordSignInMethods();
|
||||
});
|
||||
|
||||
it('Should fail to register with username and password', async () => {
|
||||
const client = await initClient();
|
||||
|
||||
await expectRejects(
|
||||
client.send(putInteraction, {
|
||||
event: InteractionEvent.Register,
|
||||
profile: {
|
||||
username: generateUsername(),
|
||||
password: generatePassword(),
|
||||
},
|
||||
}),
|
||||
{
|
||||
code: 'user.sign_in_method_not_enabled',
|
||||
statusCode: 422,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
it('Should fail to register with email', async () => {
|
||||
await setEmailConnector();
|
||||
const { primaryEmail } = generateNewUserProfile({ primaryEmail: true });
|
||||
const client = await initClient();
|
||||
|
||||
await client.successSend(putInteraction, {
|
||||
event: InteractionEvent.Register,
|
||||
});
|
||||
|
||||
await client.successSend(sendVerificationCode, {
|
||||
email: primaryEmail,
|
||||
});
|
||||
|
||||
const { code: verificationCode } = await readVerificationCode();
|
||||
|
||||
await expectRejects(
|
||||
client.send(patchInteractionIdentifiers, {
|
||||
email: primaryEmail,
|
||||
verificationCode,
|
||||
}),
|
||||
{
|
||||
code: 'user.sign_in_method_not_enabled',
|
||||
statusCode: 422,
|
||||
}
|
||||
);
|
||||
|
||||
// Clear
|
||||
await clearConnectorsByTypes([ConnectorType.Email]);
|
||||
});
|
||||
|
||||
it('Should fail to register with phone', async () => {
|
||||
await setSmsConnector();
|
||||
|
||||
const { primaryPhone } = generateNewUserProfile({ primaryPhone: true });
|
||||
const client = await initClient();
|
||||
|
||||
await client.successSend(putInteraction, {
|
||||
event: InteractionEvent.Register,
|
||||
});
|
||||
|
||||
await client.successSend(sendVerificationCode, {
|
||||
phone: primaryPhone,
|
||||
});
|
||||
|
||||
const { code: verificationCode } = await readVerificationCode();
|
||||
|
||||
await expectRejects(
|
||||
client.send(patchInteractionIdentifiers, {
|
||||
phone: primaryPhone,
|
||||
verificationCode,
|
||||
}),
|
||||
{
|
||||
code: 'user.sign_in_method_not_enabled',
|
||||
statusCode: 422,
|
||||
}
|
||||
);
|
||||
|
||||
// Clear
|
||||
await clearConnectorsByTypes([ConnectorType.Sms]);
|
||||
});
|
||||
});
|
||||
});
|
Loading…
Reference in a new issue