Files
Ikar/scripts/phone-auth-smoke-test.ps1
T
2026-05-17 22:23:43 +03:00

124 lines
3.1 KiB
PowerShell

param(
[string]$BaseUrl = 'http://localhost:5099'
)
$ErrorActionPreference = 'Stop'
$stamp = Get-Date -Format 'yyyyMMddHHmmss'
$phoneA = "+7999$stamp"
$phoneB = "+7888$stamp"
function Invoke-JsonPost {
param(
[string]$Uri,
[hashtable]$Body,
[hashtable]$Headers = @{}
)
return Invoke-RestMethod `
-Uri $Uri `
-Method Post `
-Headers $Headers `
-ContentType 'application/json' `
-Body ($Body | ConvertTo-Json)
}
$challengeA = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/request-code" `
-Body @{ phoneNumber = $phoneA }
$sessionA = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/verify-code" `
-Body @{
challengeId = $challengeA.challengeId
phoneNumber = $phoneA
code = $challengeA.testCode
displayName = 'Phone Smoke A'
}
$challengeB = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/request-code" `
-Body @{ phoneNumber = $phoneB }
$sessionB = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/verify-code" `
-Body @{
challengeId = $challengeB.challengeId
phoneNumber = $phoneB
code = $challengeB.testCode
displayName = 'Phone Smoke B'
}
$headersA = @{
Authorization = "Bearer $($sessionA.accessToken)"
}
$meA = Invoke-RestMethod `
-Uri "$BaseUrl/api/users/me" `
-Method Get `
-Headers $headersA
$resolve = Invoke-JsonPost `
-Uri "$BaseUrl/api/users/contacts/resolve" `
-Headers $headersA `
-Body @{
phoneNumbers = @(
$phoneB,
'+7 (777) 000-00-00'
)
}
if ($null -eq $resolve) {
$resolve = @()
}
else {
$resolve = @($resolve)
}
$repeatChallengeA = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/request-code" `
-Body @{ phoneNumber = $phoneA }
$repeatSessionA = Invoke-JsonPost `
-Uri "$BaseUrl/api/auth/verify-code" `
-Body @{
challengeId = $repeatChallengeA.challengeId
phoneNumber = $phoneA
code = $repeatChallengeA.testCode
displayName = $null
}
$chat = Invoke-JsonPost `
-Uri "$BaseUrl/api/chats/direct" `
-Headers $headersA `
-Body @{
userId = $sessionB.user.id
}
$chats = Invoke-RestMethod `
-Uri "$BaseUrl/api/chats" `
-Method Get `
-Headers $headersA
if ($null -eq $chats) {
$chats = @()
}
else {
$chats = @($chats)
}
[pscustomobject]@{
PhoneARegistered = -not $challengeA.isRegistered
PhoneBRegistered = -not $challengeB.isRegistered
PhoneAMeDisplayName = $meA.displayName
PhoneAMePhone = $meA.phoneNumber
ResolvedCount = $resolve.Count
ResolvedPhone = if ($resolve.Count -gt 0) { $resolve[0].phoneNumber } else { $null }
ResolvedDisplayName = if ($resolve.Count -gt 0) { $resolve[0].user.displayName } else { $null }
ReLoginRegistered = $repeatChallengeA.isRegistered
ReLoginSameUser = $repeatSessionA.user.id -eq $sessionA.user.id
DirectChatType = $chat.type
DirectChatCreated = $chat.type -eq 1 -or $chat.type -eq 'Direct'
ChatsCount = $chats.Count
}