initial commit
This commit is contained in:
commit
5f37e4087d
94
FortuneBetAPI.ps1
Normal file
94
FortuneBetAPI.ps1
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
|
||||
# FortuneBetAPI.ps1
|
||||
|
||||
# Global state
|
||||
$Global:FortuneBetToken = $null
|
||||
$Global:FortuneBetRefreshToken = $null
|
||||
$Global:ApiBase = "http://127.0.0.1:8080/api/v1"
|
||||
$Global:TenantSlug = "fortunebets" # adjust if different
|
||||
|
||||
function Invoke-FortuneBetRequest {
|
||||
param(
|
||||
[string]$Method,
|
||||
[string]$Path,
|
||||
[object]$Body = $null,
|
||||
[switch]$Tenant
|
||||
)
|
||||
|
||||
$url = if ($Tenant) {
|
||||
"$Global:ApiBase/tenant/$Global:TenantSlug/$Path"
|
||||
} else {
|
||||
"$Global:ApiBase/$Path"
|
||||
}
|
||||
|
||||
$headers = @{
|
||||
"Content-Type" = "application/json"
|
||||
}
|
||||
|
||||
if ($Global:FortuneBetToken) {
|
||||
$headers["Authorization"] = "Bearer $($Global:FortuneBetToken)"
|
||||
}
|
||||
|
||||
$bodyJson = if ($Body) { ($Body | ConvertTo-Json -Depth 5 -Compress) } else { $null }
|
||||
|
||||
try {
|
||||
$response = Invoke-RestMethod -Method $Method -Uri $url -Headers $headers -Body $bodyJson
|
||||
return $response
|
||||
}
|
||||
catch {
|
||||
Write-Error "Request failed: $($_.Exception.Message)"
|
||||
if ($_.ErrorDetails) { Write-Host $_.ErrorDetails }
|
||||
}
|
||||
}
|
||||
|
||||
function Login-FortuneBetCustomer {
|
||||
param(
|
||||
[string]$Email,
|
||||
[string]$Password
|
||||
)
|
||||
|
||||
$payload = @{
|
||||
email = $Email
|
||||
password = $Password
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneBetRequest -Method "POST" -Path "auth/customer-login" -Tenant -Body $payload
|
||||
if ($resp -and $resp.access_token) {
|
||||
$Global:FortuneBetToken = $resp.access_token
|
||||
$Global:FortuneBetRefreshToken = $resp.refresh_token
|
||||
Write-Host "✅ Logged in. Token stored."
|
||||
} else {
|
||||
Write-Error "❌ Login failed. Response: $($resp | ConvertTo-Json -Depth 5)"
|
||||
}
|
||||
}
|
||||
|
||||
function Refresh-FortuneBetToken {
|
||||
if (-not $Global:FortuneBetRefreshToken) {
|
||||
Write-Error "No refresh token stored."
|
||||
return
|
||||
}
|
||||
|
||||
$payload = @{
|
||||
refresh_token = $Global:FortuneBetRefreshToken
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneBetRequest -Method "POST" -Path "auth/refresh" -Body $payload
|
||||
if ($resp -and $resp.access_token) {
|
||||
$Global:FortuneBetToken = $resp.access_token
|
||||
Write-Host "🔄 Token refreshed."
|
||||
} else {
|
||||
Write-Error "❌ Refresh failed."
|
||||
}
|
||||
}
|
||||
|
||||
# Example convenience wrapper
|
||||
function Get-FortuneBetProfile {
|
||||
$resp = Invoke-FortuneBetRequest -Method "GET" -Path "user/customer-profile" -Tenant
|
||||
return $resp
|
||||
}
|
||||
|
||||
# Example usage:
|
||||
# . .\FortuneBetAPI.ps1 # dot-source to load functions
|
||||
# Login-FortuneBetCustomer -Email "test@example.com" -Password "1234"
|
||||
# Get-FortuneBetProfile
|
||||
# Refresh-FortuneBetToken
|
||||
156
README.md
Normal file
156
README.md
Normal file
|
|
@ -0,0 +1,156 @@
|
|||
# Fortune Tester
|
||||
|
||||
<video src="./demo.mp4" controls></video>
|
||||
|
||||
This is a tiny powershell script that i use to test the backend quickly.
|
||||
It probably would be better have unit and integration tests on the backend directly
|
||||
but alas, there is never any time to do something like this.
|
||||
|
||||
You will need for fzf (use scoop / choco) and PSFzf
|
||||
|
||||
## ⚙️ Requirements
|
||||
|
||||
You’ll need:
|
||||
|
||||
* **PowerShell** (obviously)
|
||||
* **fzf** (for interactive selection)
|
||||
|
||||
* Install via `scoop install fzf` or `choco install fzf`
|
||||
* **PSFzf** (PowerShell integration for fzf)
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
Load the CLI helpers:
|
||||
|
||||
```powershell
|
||||
. ./fortune.ps1
|
||||
```
|
||||
|
||||
Then launch the interactive test menu:
|
||||
|
||||
```powershell
|
||||
. ./fortune_tests.ps1
|
||||
```
|
||||
|
||||
This will open an `fzf` selector listing all available test functions.
|
||||
|
||||
---
|
||||
|
||||
## 🧠 How It Works
|
||||
|
||||
* Every function inside `fortune_tests.ps1` is automatically registered
|
||||
* The `Main` function scans and feeds them into `fzf`
|
||||
* You select a function → provide params → it runs
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Authentication Helpers
|
||||
|
||||
These functions log you in and store tokens globally for reuse:
|
||||
|
||||
* `LoginClient`
|
||||
* `LoginAdmin`
|
||||
* `LoginSuper`
|
||||
|
||||
They automatically populate:
|
||||
|
||||
* `$Global:FortuneBetToken`
|
||||
* `$Global:FortuneBetRefreshToken`
|
||||
|
||||
So you don’t have to manually copy tokens
|
||||
|
||||
---
|
||||
|
||||
## 📡 Core Command
|
||||
|
||||
Everything ultimately goes through:
|
||||
|
||||
```powershell
|
||||
fortune call <METHOD> <PATH> [-Tenant] [-Body @{...}]
|
||||
```
|
||||
|
||||
### Example
|
||||
|
||||
```powershell
|
||||
fortune call GET "leagues" -Tenant
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Adding New Tests
|
||||
|
||||
Add a new function inside `fortune_tests.ps1`:
|
||||
|
||||
```powershell
|
||||
function MyNewTest {
|
||||
fortune call GET "some-endpoint" -Tenant
|
||||
}
|
||||
```
|
||||
|
||||
That’s it. It will automatically appear in the selector.
|
||||
|
||||
---
|
||||
|
||||
## 🧩 Available Test Categories
|
||||
|
||||
### Payments
|
||||
|
||||
* CryptoPay (deposit, withdrawal)
|
||||
* Chapa (deposit, banks, withdrawal)
|
||||
* ArifPay (checkout)
|
||||
|
||||
### Direct Deposits
|
||||
|
||||
* Create / Approve / Reject
|
||||
* Bank cycling
|
||||
* Account management
|
||||
|
||||
### Betting
|
||||
|
||||
* Event → Odds → Selection pipeline (`EventOddPipe`)
|
||||
* Bet placement (`CreateBet`)
|
||||
|
||||
### Virtual Games
|
||||
|
||||
* Providers
|
||||
* Game listing
|
||||
* Demo launch
|
||||
|
||||
### Admin / Super Admin
|
||||
|
||||
* Bank management
|
||||
* Direct deposit bank setup
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Token Refresh
|
||||
|
||||
```powershell
|
||||
fortune refresh
|
||||
```
|
||||
|
||||
Uses the stored refresh token to get a new access token.
|
||||
|
||||
---
|
||||
|
||||
## 🧱 Environment Variables
|
||||
|
||||
Defined in `fortune.ps1`:
|
||||
|
||||
```powershell
|
||||
$Global:ApiBase = "http://127.0.0.1:8080/api/v1"
|
||||
$Global:TenantSlug = "fortunebets"
|
||||
```
|
||||
|
||||
Change these if you’re pointing to a different environment.
|
||||
|
||||
---
|
||||
|
||||
## 💡 Why This Exists
|
||||
|
||||
Because postman takes alot of RAM
|
||||
|
||||
---
|
||||
|
||||
27
arifpay_requests.ps1
Normal file
27
arifpay_requests.ps1
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
|
||||
function TestArifPayDeposit {
|
||||
$request = @{
|
||||
amount=200
|
||||
customerEmail="samueltarikufantaye@gmail.com"
|
||||
customerPhone="0946685511"
|
||||
}
|
||||
fortune call POST "arifpay/checkout" -Body $request
|
||||
}
|
||||
|
||||
# function TestARIFCheckout {
|
||||
# $request = @{
|
||||
# cancelUrl="https://example1.com"
|
||||
# phone="251922655097"
|
||||
# email="Ex@gmail.net"
|
||||
# nonce="251assaddsasad93554asdasd8208sawas"
|
||||
# errorUrl="http://error.com"
|
||||
# notifyUrl="https://664db983ede9a2b5565497ee.mockapi.io/user"
|
||||
# successUrl="http://example.com"
|
||||
# paymentMethods=
|
||||
# expireDate=
|
||||
# items=
|
||||
# beneficiaries=
|
||||
# lang=
|
||||
#
|
||||
# }
|
||||
# }
|
||||
4
calls.ps1
Normal file
4
calls.ps1
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
curl -X GET "http://127.0.0.1:8080/api/v1/tenant/fortunebets/user/customer-profile" \
|
||||
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJmb3J0dW5lLWJldCIsImF1ZCI6WyJhcGkuZm9ydHVuZWJldHMubmV0Il0sImV4cCI6MTc1NjQyMzQ4MywibmJmIjoxNzU2NDIyODgzLCJpYXQiOjE3NTY0MjI4ODMsIlVzZXJJZCI6MSwiUm9sZSI6ImN1c3RvbWVyIiwiQ29tcGFueUlEIjp7IlZhbHVlIjoxLCJWYWxpZCI6dHJ1ZX19.Fn8m0M8FR8Gt5I6LMPvImwI1fuUOgnj3Jexz7kBt6Vg" \
|
||||
-H "Content-Type: application/json" \
|
||||
-v
|
||||
23
chapa_requests.ps1
Normal file
23
chapa_requests.ps1
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
|
||||
function TestChapaDeposit {
|
||||
$request = @{
|
||||
amount=200
|
||||
}
|
||||
fortune call POST "chapa/payments/deposit" -Body $request
|
||||
}
|
||||
|
||||
function TestChapaBanks {
|
||||
fortune call GET "chapa/banks"
|
||||
}
|
||||
|
||||
function TestChapaWithdraw {
|
||||
$request = @{
|
||||
account_name="Samuel Tariku"
|
||||
account_number="0946685511"
|
||||
amount="200"
|
||||
reference="1"
|
||||
bank_code=128 #CBEBirr
|
||||
}
|
||||
fortune call POST "chapa/payments/withdraw" -Body $request
|
||||
}
|
||||
174
fortune.ps1
Normal file
174
fortune.ps1
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
|
||||
# fortune.ps1
|
||||
# Simple CLI wrapper for FortuneBet backend
|
||||
|
||||
$Global:FortuneBetToken = $null
|
||||
$Global:FortuneBetRefreshToken = $null
|
||||
$Global:ApiBase = "http://127.0.0.1:8080/api/v1"
|
||||
$Global:TenantSlug = "fortunebets"
|
||||
|
||||
function Invoke-FortuneAPI {
|
||||
param(
|
||||
[string]$Method,
|
||||
[string]$Path,
|
||||
[object]$Body = $null,
|
||||
[switch]$Tenant
|
||||
)
|
||||
|
||||
$url = if ($Tenant) {
|
||||
"$Global:ApiBase/tenant/$Global:TenantSlug/$Path"
|
||||
} else {
|
||||
"$Global:ApiBase/$Path"
|
||||
}
|
||||
|
||||
$headers = @{ "Content-Type" = "application/json" }
|
||||
if ($Global:FortuneBetToken) {
|
||||
$headers["Authorization"] = "Bearer $($Global:FortuneBetToken)"
|
||||
}
|
||||
|
||||
$bodyJson = if ($Body) {
|
||||
($Body | ConvertTo-Json -Depth 5 -Compress)
|
||||
} else {
|
||||
$null
|
||||
}
|
||||
Write-Host "➡️ $Method $url"
|
||||
Write-Host "Headers:" ($headers | ConvertTo-Json -Compress)
|
||||
try {
|
||||
if ($Method -eq "GET" -or $Method -eq "HEAD") {
|
||||
Invoke-RestMethod -Method $Method -Uri $url -Headers $headers -Verbose
|
||||
} elseif ($BodyJson) {
|
||||
Invoke-RestMethod -Method $Method -Uri $url -Headers $headers -Body $bodyJson -Verbose
|
||||
} else {
|
||||
Invoke-RestMethod -Method $Method -Uri $url -Headers $headers -Verbose
|
||||
}
|
||||
} catch {
|
||||
Write-Error "Request failed: $($_.Exception.Message)"
|
||||
if ($_.ErrorDetails) {
|
||||
Write-Host $_.ErrorDetails
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function fortune {
|
||||
param(
|
||||
[Parameter(Position = 0)]
|
||||
[string]$Command,
|
||||
|
||||
[Parameter(Position = 1)]
|
||||
[string]$Method,
|
||||
|
||||
[Parameter(Position = 2)]
|
||||
[string]$Path,
|
||||
|
||||
[Parameter(Position = 3)]
|
||||
[object]$Body,
|
||||
|
||||
[switch]$Tenant,
|
||||
|
||||
[string]$Email,
|
||||
[string]$Password
|
||||
)
|
||||
|
||||
switch ($Command) {
|
||||
"login" {
|
||||
if (-not $Email -or -not $Password) {
|
||||
Write-Error "Usage: fortune login -Email <email> -Password <password>"
|
||||
return
|
||||
}
|
||||
|
||||
$payload = @{
|
||||
email = $Email
|
||||
password = $Password
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneAPI -Method "POST" -Path "auth/customer-login" -Tenant -Body $payload
|
||||
echo $resp.data
|
||||
if ($resp -and $resp.data.access_token) {
|
||||
$Global:FortuneBetToken = $resp.data.access_token
|
||||
$Global:FortuneBetRefreshToken = $resp.data.refresh_token
|
||||
Write-Host "✅ Logged in."
|
||||
} else {
|
||||
Write-Error "❌ Login failed."
|
||||
}
|
||||
}
|
||||
"login-super" {
|
||||
if (-not $Email -or -not $Password) {
|
||||
Write-Error "Usage: fortune login-super -Email <email> -Password <password>"
|
||||
return
|
||||
}
|
||||
|
||||
$payload = @{
|
||||
email = $Email
|
||||
password = $Password
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneAPI -Method "POST" -Path "auth/super-login" -Body $payload
|
||||
echo $resp.data
|
||||
if ($resp -and $resp.data.access_token) {
|
||||
$Global:FortuneBetToken = $resp.data.access_token
|
||||
$Global:FortuneBetRefreshToken = $resp.data.refresh_token
|
||||
Write-Host "✅ Logged in."
|
||||
} else {
|
||||
Write-Error "❌ Login failed."
|
||||
}
|
||||
}
|
||||
"login-admin" {
|
||||
if (-not $Email -or -not $Password) {
|
||||
Write-Error "Usage: fortune login-admin -Email <email> -Password <password>"
|
||||
return
|
||||
}
|
||||
|
||||
$payload = @{
|
||||
email = $Email
|
||||
password = $Password
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneAPI -Method "POST" -Path "auth/admin-login" -Tenant -Body $payload
|
||||
echo $resp.data
|
||||
if ($resp -and $resp.data.access_token) {
|
||||
$Global:FortuneBetToken = $resp.data.access_token
|
||||
$Global:FortuneBetRefreshToken = $resp.data.refresh_token
|
||||
Write-Host "✅ Logged in."
|
||||
} else {
|
||||
Write-Error "❌ Login failed."
|
||||
}
|
||||
}
|
||||
"refresh" {
|
||||
if (-not $Global:FortuneBetRefreshToken) {
|
||||
Write-Error "No refresh token stored."
|
||||
return
|
||||
}
|
||||
|
||||
$payload = @{
|
||||
refresh_token = $Global:FortuneBetRefreshToken
|
||||
access_token = $Global:FortuneBetToken
|
||||
}
|
||||
$resp = Invoke-FortuneAPI -Method "POST" -Path "auth/refresh" -Body $payload
|
||||
if ($resp -and $resp.data.access_token) {
|
||||
$Global:FortuneBetToken = $resp.data.access_token
|
||||
Write-Host "🔄 Token refreshed."
|
||||
} else {
|
||||
Write-Error "❌ Refresh failed."
|
||||
}
|
||||
}
|
||||
"call" {
|
||||
if (-not $Method -or -not $Path) {
|
||||
Write-Error "Usage: fortune call <METHOD> <PATH> [-Tenant] [-Body @{...}]"
|
||||
return
|
||||
}
|
||||
|
||||
$resp = Invoke-FortuneAPI -Method $Method -Path $Path -Tenant:$Tenant -Body $Body
|
||||
if ($resp) {
|
||||
$resp | ConvertTo-Json -Depth 10
|
||||
}
|
||||
}
|
||||
default {
|
||||
Write-Host "Fortune CLI"
|
||||
Write-Host ""
|
||||
Write-Host "Commands:"
|
||||
Write-Host " fortune login -Email <email> -Password <password>"
|
||||
Write-Host " fortune refresh"
|
||||
Write-Host " fortune call <METHOD> <PATH> [-Tenant] [-Body @{...}]"
|
||||
}
|
||||
}
|
||||
}
|
||||
382
fortune_tests.ps1
Normal file
382
fortune_tests.ps1
Normal file
|
|
@ -0,0 +1,382 @@
|
|||
# CryptoPay Tests
|
||||
function TestCryptoPayDeposit {
|
||||
$request = @{
|
||||
amount=200
|
||||
currency="ETB"
|
||||
crypto_currency="USDT"
|
||||
}
|
||||
fortune call POST "cryptopay/deposit" -Body $request -Tenant
|
||||
}
|
||||
function TestCryptoPayWithdraw {
|
||||
param(
|
||||
[string]$address
|
||||
)
|
||||
$request = @{
|
||||
address=$address
|
||||
amount=200
|
||||
currency="ETB"
|
||||
crypto_currency="USDT"
|
||||
}
|
||||
fortune call POST "cryptopay/withdrawal" -Body $request -Tenant
|
||||
}
|
||||
# Chapa Tests
|
||||
function TestChapaDeposit {
|
||||
$request = @{
|
||||
amount=200
|
||||
}
|
||||
fortune call POST "chapa/payments/deposit" -Body $request
|
||||
}
|
||||
|
||||
function TestChapaBanks {
|
||||
fortune call GET "chapa/banks"
|
||||
}
|
||||
|
||||
function TestChapaWithdraw {
|
||||
$request = @{
|
||||
account_name="Samuel Tariku"
|
||||
account_number="0946685511"
|
||||
amount="200"
|
||||
reference="1"
|
||||
bank_code=128 #CBEBirr
|
||||
}
|
||||
fortune call POST "chapa/payments/withdraw" -Body $request
|
||||
}
|
||||
|
||||
# Arifpay Tests
|
||||
function TestArifPayDeposit {
|
||||
$request = @{
|
||||
amount=200
|
||||
customerEmail="samueltarikufantaye@gmail.com"
|
||||
customerPhone="0946685511"
|
||||
}
|
||||
fortune call POST "arifpay/checkout" -Body $request
|
||||
}
|
||||
|
||||
# function TestARIFCheckout {
|
||||
# $request = @{
|
||||
# cancelUrl="https://example1.com"
|
||||
# phone="251922655097"
|
||||
# email="Ex@gmail.net"
|
||||
# nonce="251assaddsasad93554asdasd8208sawas"
|
||||
# errorUrl="http://error.com"
|
||||
# notifyUrl="https://664db983ede9a2b5565497ee.mockapi.io/user"
|
||||
# successUrl="http://example.com"
|
||||
# paymentMethods=
|
||||
# expireDate=
|
||||
# items=
|
||||
# beneficiaries=
|
||||
# lang=
|
||||
#
|
||||
# }
|
||||
# }
|
||||
|
||||
#
|
||||
# Testing Direct Deposit
|
||||
#
|
||||
function CreateDirectDeposit {
|
||||
$deposit = @{
|
||||
bank_name="cbe"
|
||||
sender_account_number="123456789"
|
||||
sender_account_holder="Samuel Tariku"
|
||||
receiver_account_number="123456789"
|
||||
receiver_account_holder="Fortune Admin"
|
||||
amount=1000.0
|
||||
reference_number="123456"
|
||||
}
|
||||
fortune call POST "direct-deposits" -Tenant -Body $deposit
|
||||
}
|
||||
function GetAllDirectDeposits {
|
||||
fortune call GET "direct-deposits?status=PENDING" | less
|
||||
}
|
||||
|
||||
function ApproveDirectDeposit {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call POST "direct-deposits/$id/approve" | less
|
||||
}
|
||||
|
||||
|
||||
function RejectDirectDeposit {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
|
||||
$reject = @{
|
||||
reason="Incorrect account number"
|
||||
}
|
||||
fortune call POST "direct-deposits/$id/reject" -Body $reject | less
|
||||
}
|
||||
|
||||
#
|
||||
# Testing Super Admin Bank
|
||||
#
|
||||
|
||||
function CreateBank {
|
||||
$bank = @{
|
||||
swift="CBETTA"
|
||||
name="Commerical Bank Of Ethiopia"
|
||||
acct_length=10
|
||||
country_code="et"
|
||||
}
|
||||
fortune call POST "bank" -Body $bank
|
||||
}
|
||||
|
||||
function GetAllBanks {
|
||||
fortune call GET "bank" | less
|
||||
}
|
||||
function GetBankByID {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call GET "banks/$id" | less
|
||||
}
|
||||
function DeleteBank {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call DELETE "banks/$id" | less
|
||||
}
|
||||
#
|
||||
#Testing Direct Deposit Bank
|
||||
#
|
||||
|
||||
function CreateDDBank {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
$bank = @{
|
||||
company_id=1
|
||||
bank_id=$id
|
||||
interval=1
|
||||
is_cycle=$true
|
||||
}
|
||||
fortune call POST "direct-deposit-bank" -Body $bank
|
||||
}
|
||||
|
||||
function GetAllDDBanks {
|
||||
fortune call GET "direct-deposit-bank" | less
|
||||
}
|
||||
function GetDDBankByID {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call GET "direct-deposit-bank/$id" | less
|
||||
}
|
||||
function ManuallyCycleBank {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call POST "direct-deposit-bank/$id/cycle" | less
|
||||
}
|
||||
function DeleteDDBank {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call DELETE "direct-deposit-bank/$id" | less
|
||||
}
|
||||
|
||||
# Testing Direct Deposit Account
|
||||
#
|
||||
function CreateDDAccount {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
$account = @{
|
||||
dd_bank_id=$id
|
||||
account_number="1234567"
|
||||
account_holder="Fortune Admin"
|
||||
}
|
||||
fortune call POST "direct-deposit-account" -Body $account
|
||||
}
|
||||
function GetDDAccountForBank {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call GET "direct-deposit-bank/$id/accounts" | less
|
||||
}
|
||||
|
||||
|
||||
function GetVirtualGameProviders {
|
||||
fortune call GET "virtual-game/orchestrator/providers"
|
||||
}
|
||||
function GetVirtualGameList {
|
||||
fortune call GET "virtual-game/orchestrator/games?providerID=veliplay"
|
||||
}
|
||||
|
||||
function StartVeliGameDemo {
|
||||
param(
|
||||
[Int64]$gameID,
|
||||
[string]$providerID
|
||||
)
|
||||
|
||||
$gameData = @{
|
||||
providerId=$providerID
|
||||
gameId=$gameID
|
||||
language="en"
|
||||
deviceType= "DESKTOP"
|
||||
brandId="fortune_bets"
|
||||
}
|
||||
|
||||
fortune call POST "veli/start-demo-game" -Body $gameData
|
||||
}
|
||||
|
||||
|
||||
function GetLeagues {
|
||||
fortune call GET "leagues" -Tenant
|
||||
}
|
||||
|
||||
function GetEvents {
|
||||
fortune call GET "upcoming-events" -Tenant
|
||||
}
|
||||
function GetOdds {
|
||||
param(
|
||||
[Int64]$eventID
|
||||
)
|
||||
fortune call GET "odds/upcoming/${eventID}" -Tenant
|
||||
}
|
||||
|
||||
function GetOdds {
|
||||
param(
|
||||
[Int64]$eventID
|
||||
)
|
||||
fortune call GET "odds/upcoming/${eventID}" -Tenant
|
||||
}
|
||||
|
||||
function Select-Event {
|
||||
param ($Events)
|
||||
|
||||
$selection = $Events |
|
||||
ForEach-Object {
|
||||
"$($_.id),$($_.match_name),$($_.league_name),$($_.start_time)"
|
||||
} |
|
||||
fzf --delimiter=',' --with-nth=2,3,4
|
||||
|
||||
if ($selection) {
|
||||
$selectedId = ($selection -split ",")[0]
|
||||
return $Events | Where-Object { $_.id -eq [int]$selectedId }
|
||||
}
|
||||
}
|
||||
# @{id=29169722; event_id=1732385; market_type=winning_margin; market_name=Winning Margin; market_category=others; market_id=56; number_of_outcomes=10; raw_odds=System.Object[]; fetched_at=12/9/2025 04:15:38; expires_at=12/9/2025 05:15:38; is_active=True}
|
||||
function Select-Odd {
|
||||
param ($Odds)
|
||||
$selection = $Odds | ForEach-Object {
|
||||
"$($_.id),$($_.market_name)"
|
||||
} | fzf --delimiter=',' --with-nth=2
|
||||
|
||||
if ($selection) {
|
||||
$selectedId = ($selection -split ",")[0]
|
||||
return $Odds | Where-Object { $_.id -eq [int]$selectedId }
|
||||
}
|
||||
}
|
||||
|
||||
#@{id=4967715; name=1; odds=1.500} @{id=4967716; name=Draw; odds=4.000} @{id=4967717; name=2; odds=5.500}
|
||||
#@{id=4967741; odds=1.925; header=1; handicap=-1.0} @{id=4967746; odds=1.875; header=2; handicap=+1.0}
|
||||
function Select-RawOdd {
|
||||
param ($Odds)
|
||||
$selection = $Odds | ForEach-Object {
|
||||
"$($_.id),$($_.name),$($_.header),$($_.handicap),"
|
||||
} | fzf --delimiter=',' --with-nth=2,3,4
|
||||
|
||||
if ($selection) {
|
||||
$selectedId = ($selection -split ",")[0]
|
||||
return $Odds | Where-Object { $_.id -eq [int]$selectedId }
|
||||
}
|
||||
}
|
||||
|
||||
function EventOddPipe {
|
||||
$events = GetEvents | ConvertFrom-Json
|
||||
$selectedEvent = Select-Event $events.data
|
||||
Write-Host $selectedEvent.id
|
||||
$odds = GetOdds $selectedEvent.id | ConvertFrom-Json
|
||||
$selectedOdd = Select-Odd $odds.data
|
||||
#Write-Host $selectedOdd.raw_odds
|
||||
$selectedRawOdd = Select-RawOdd $selectedOdd.raw_odds
|
||||
Write-Host $selectedRawOdd
|
||||
|
||||
return @{
|
||||
selectedEvent=$selectedEvent
|
||||
selectedOdd=$selectedOdd
|
||||
selectedRawOdd=$selectedRawOdd
|
||||
}
|
||||
}
|
||||
# Create Bet
|
||||
function CreateBet {
|
||||
|
||||
$eventOdd = EventOddPipe
|
||||
|
||||
Write-Host $eventOdd
|
||||
|
||||
$req = @{
|
||||
outcomes = @(
|
||||
@{
|
||||
event_id=[int64]$eventOdd.selectedEvent.id
|
||||
odd_id=[int64]$eventOdd.selectedRawOdd.id
|
||||
market_id=[int64]$eventOdd.selectedOdd.market_id
|
||||
}
|
||||
)
|
||||
amount=30.0
|
||||
}
|
||||
fortune call POST "sport/bet" -Tenant -Body $req
|
||||
}
|
||||
# Login Tests
|
||||
function LoginClient{
|
||||
fortune login -Email john.doe@example.com -Password password@123
|
||||
}
|
||||
function LoginAdmin{
|
||||
fortune login-admin -Email test.admin@gmail.com -Password NLd3m6taW71H
|
||||
}
|
||||
function LoginSuper{
|
||||
fortune login-super -Email cybersamt@gmail.com -Password H6xW6pe1w8ys
|
||||
}
|
||||
|
||||
# Register Tasks
|
||||
function Register {
|
||||
param(
|
||||
[string]$otp
|
||||
)
|
||||
$req = @{
|
||||
first_name="Samuel"
|
||||
last_name="Tariku"
|
||||
phone_number="+251900000002"
|
||||
password="password@123"
|
||||
otp=$otp
|
||||
referral_code=""
|
||||
}
|
||||
fortune call POST "user/register" -Tenant $req
|
||||
}
|
||||
|
||||
function SendRegisterOTP {
|
||||
$req = @{
|
||||
phone_number="+251900000002"
|
||||
}
|
||||
fortune call POST "user/sendRegisterCode" -Tenant $req
|
||||
}
|
||||
|
||||
function Main {
|
||||
$scriptPath = $PSCommandPath
|
||||
|
||||
$functions = Get-ChildItem Function: |
|
||||
Where-Object {
|
||||
$_.ScriptBlock.File -eq $scriptPath -and
|
||||
$_.Name -ne "Main"
|
||||
} |
|
||||
Select-Object -ExpandProperty Name |
|
||||
Sort-Object
|
||||
|
||||
$fn = $functions | fzf --prompt="Select action > "
|
||||
if (-not $fn) {
|
||||
return
|
||||
}
|
||||
|
||||
$command = Get-Command $fn
|
||||
$params = @{}
|
||||
|
||||
foreach ($p in $command.Parameters.Values) {
|
||||
$params[$p.Name] = Read-Host "Enter $($p.Name)"
|
||||
}
|
||||
|
||||
& $fn @params
|
||||
}
|
||||
|
||||
Main
|
||||
19
report_request_calls.ps1
Normal file
19
report_request_calls.ps1
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
function GetAllReportRequests {
|
||||
fortune call GET "reports/requests" | less
|
||||
}
|
||||
function DownloadReport {
|
||||
param(
|
||||
[Int64]$id
|
||||
)
|
||||
fortune call GET "reports/download/$id" | less
|
||||
}
|
||||
function GenerateEventIntervalReport {
|
||||
$report = @{
|
||||
type="event_interval"
|
||||
metadata=@{
|
||||
interval="day"
|
||||
}
|
||||
}
|
||||
fortune call POST "reports/requests" -Body $report
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user