fe8ffbeb9f
Build & Push / Pipeline Tests (push) Failing after 59s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 48s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped
73 lines
3.0 KiB
TypeScript
73 lines
3.0 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { companySignupSchema } from './auth.company.schemas'
|
|
import { employeeForgotPasswordSchema, employeeLanguageSchema, employeeLoginSchema, employeeResetPasswordSchema } from './auth.employee.schemas'
|
|
import { renterFcmTokenSchema, renterUpdateSchema } from './auth.renter.schemas'
|
|
|
|
const validCompanySignup = {
|
|
firstName: 'Aya',
|
|
lastName: 'Haddad',
|
|
email: 'owner@example.test',
|
|
password: 'securePass123',
|
|
companyName: 'Atlas Cars',
|
|
legalName: 'Atlas Cars SARL',
|
|
legalForm: 'SARL',
|
|
registrationNumber: 'RC-1',
|
|
iceNumber: 'ICE-1',
|
|
taxId: 'TAX-1',
|
|
operatingLicenseNumber: 'LIC-1',
|
|
operatingLicenseIssuedAt: '2025-01-01',
|
|
operatingLicenseIssuedBy: 'Transport Authority',
|
|
streetAddress: '1 Main Street',
|
|
city: 'Casablanca',
|
|
country: 'Morocco',
|
|
zipCode: '20000',
|
|
companyPhone: '+212600000000',
|
|
companyEmail: 'company@example.test',
|
|
yearsActive: '3',
|
|
responsibleName: 'Aya Haddad',
|
|
responsibleRole: 'Owner',
|
|
responsibleIdentityNumber: 'ID-1',
|
|
responsiblePhone: '+212600000001',
|
|
responsibleEmail: 'responsible@example.test',
|
|
plan: 'GROWTH',
|
|
billingPeriod: 'MONTHLY',
|
|
currency: 'MAD',
|
|
}
|
|
|
|
describe('role-specific auth schema contracts', () => {
|
|
it('defaults company signup language and keeps billing currency constrained', () => {
|
|
expect(companySignupSchema.parse(validCompanySignup)).toMatchObject({ preferredLanguage: 'en' })
|
|
expect(() => companySignupSchema.parse({ ...validCompanySignup, currency: 'EUR' })).toThrow()
|
|
})
|
|
|
|
it('normalizes employee email fields and validates reset password strength', () => {
|
|
expect(employeeLoginSchema.parse({ email: 'OWNER@EXAMPLE.TEST', password: 'secret' })).toEqual({
|
|
email: 'owner@example.test',
|
|
password: 'secret',
|
|
})
|
|
expect(employeeForgotPasswordSchema.parse({ email: 'HELP@EXAMPLE.TEST' })).toEqual({ email: 'help@example.test' })
|
|
expect(employeeResetPasswordSchema.parse({ token: 'token_1', password: 'new-pass-123' })).toEqual({ token: 'token_1', password: 'new-pass-123' })
|
|
expect(() => employeeResetPasswordSchema.parse({ token: '', password: 'short' })).toThrow()
|
|
})
|
|
|
|
it('limits employee language changes to supported locales', () => {
|
|
expect(employeeLanguageSchema.parse({ language: 'fr' })).toEqual({ language: 'fr' })
|
|
expect(() => employeeLanguageSchema.parse({ language: 'es' })).toThrow()
|
|
})
|
|
|
|
it('normalizes renter profile updates while keeping MAD as the only supported currency', () => {
|
|
expect(renterUpdateSchema.parse({ firstName: ' Salma ', lastName: ' Idrissi ', preferredLocale: 'ar', preferredCurrency: 'MAD' })).toEqual({
|
|
firstName: 'Salma',
|
|
lastName: 'Idrissi',
|
|
preferredLocale: 'ar',
|
|
preferredCurrency: 'MAD',
|
|
})
|
|
expect(() => renterUpdateSchema.parse({ preferredCurrency: 'EUR' })).toThrow()
|
|
})
|
|
|
|
it('requires a renter FCM token payload key', () => {
|
|
expect(renterFcmTokenSchema.parse({ fcmToken: 'token_abc' })).toEqual({ fcmToken: 'token_abc' })
|
|
expect(() => renterFcmTokenSchema.parse({ token: 'token_abc' })).toThrow()
|
|
})
|
|
})
|