update configuration and documentation
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
DB_URL=jdbc:postgresql://<host>:<port>/<db>
|
||||
DB_USER=<db_user>
|
||||
DB_PASSWORD=<db_password>
|
||||
|
||||
WISHLISTS_USERNAME=<login_1>
|
||||
WISHLISTS_PASSWORD=<password_1>
|
||||
GIFTS_USERNAME=<login_2>
|
||||
GIFTS_PASSWORD=<password_2>
|
||||
RESERVATION_USERNAME=<login_3>
|
||||
RESERVATION_PASSWORD=<password_3>
|
||||
RESERVATION_OWNER=<login_owner>
|
||||
@@ -5,3 +5,4 @@ build/
|
||||
.DS_Store
|
||||
allure-results/
|
||||
logcat.txt
|
||||
.env
|
||||
|
||||
@@ -19,14 +19,6 @@
|
||||
- `src/test/java` — только тестовые классы.
|
||||
- `wiremock` — маппинги и APK.
|
||||
|
||||
## Тестовые аккаунты
|
||||
- `user1us / user1us`
|
||||
- `user2us / user2us`
|
||||
- `user3us / user3us`
|
||||
- `user4us / user4us`
|
||||
|
||||
`user4us` используется как владелец подарка в тесте резервирования.
|
||||
|
||||
## Запуск
|
||||
1. Поднять окружение:
|
||||
```bash
|
||||
@@ -38,23 +30,73 @@ docker compose up -d
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
3. Указать доступ к БД:
|
||||
3. Подготовить переменные окружения (использовать один из вариантов):
|
||||
|
||||
Вариант A: через `.env`
|
||||
- скопировать `.env.example` в `.env`;
|
||||
- заполнить `.env` актуальными значениями вашей среды;
|
||||
- загрузить `.env` в текущую shell-сессию.
|
||||
|
||||
PowerShell:
|
||||
```powershell
|
||||
$env:DB_URL="jdbc:postgresql://sql.otus.kartushin.su:5432/wishlist"
|
||||
$env:DB_USER="student"
|
||||
$env:DB_PASSWORD="student"
|
||||
```
|
||||
bash:
|
||||
```bash
|
||||
export DB_URL="jdbc:postgresql://sql.otus.kartushin.su:5432/wishlist"
|
||||
export DB_USER="student"
|
||||
export DB_PASSWORD="student"
|
||||
Get-Content .env | Where-Object { $_ -match '^[^#].+=.+' } | ForEach-Object {
|
||||
$name, $value = $_ -split '=', 2
|
||||
[System.Environment]::SetEnvironmentVariable($name, $value, 'Process')
|
||||
}
|
||||
```
|
||||
|
||||
bash:
|
||||
```bash
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
```
|
||||
|
||||
Вариант B: напрямую в shell-сессии
|
||||
|
||||
PowerShell:
|
||||
```powershell
|
||||
$env:DB_URL="jdbc:postgresql://<host>:<port>/<db>"
|
||||
$env:DB_USER="<db_user>"
|
||||
$env:DB_PASSWORD="<db_password>"
|
||||
$env:WISHLISTS_USERNAME="<login_1>"
|
||||
$env:WISHLISTS_PASSWORD="<password_1>"
|
||||
$env:GIFTS_USERNAME="<login_2>"
|
||||
$env:GIFTS_PASSWORD="<password_2>"
|
||||
$env:RESERVATION_USERNAME="<login_3>"
|
||||
$env:RESERVATION_PASSWORD="<password_3>"
|
||||
$env:RESERVATION_OWNER="<login_owner>"
|
||||
```
|
||||
|
||||
bash:
|
||||
```bash
|
||||
export DB_URL="jdbc:postgresql://<host>:<port>/<db>"
|
||||
export DB_USER="<db_user>"
|
||||
export DB_PASSWORD="<db_password>"
|
||||
export WISHLISTS_USERNAME="<login_1>"
|
||||
export WISHLISTS_PASSWORD="<password_1>"
|
||||
export GIFTS_USERNAME="<login_2>"
|
||||
export GIFTS_PASSWORD="<password_2>"
|
||||
export RESERVATION_USERNAME="<login_3>"
|
||||
export RESERVATION_PASSWORD="<password_3>"
|
||||
export RESERVATION_OWNER="<login_owner>"
|
||||
```
|
||||
Оба варианта эквивалентны: тесты используют переменные окружения процесса.
|
||||
|
||||
Тесты запускаются параллельно по классам (2 потока) и распределяются по эмуляторам через очередь.
|
||||
4. Запустить тесты:
|
||||
```bash
|
||||
mvn test
|
||||
```
|
||||
|
||||
Тесты запускаются параллельно по классам (2 потока) и распределяются по эмуляторам через очередь.
|
||||
Примечание: если нужен запуск только на одном эмуляторе, можно поднять только `wiremock` и `android-emulator-1`, а перед `mvn test` задать:
|
||||
|
||||
PowerShell:
|
||||
```powershell
|
||||
$env:MOBILE_EMULATORS="android-emulator-1|http://127.0.0.1:4723|Android Emulator"
|
||||
```
|
||||
bash:
|
||||
```bash
|
||||
export MOBILE_EMULATORS="android-emulator-1|http://127.0.0.1:4723|Android Emulator"
|
||||
```
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package ru.otus.mobile.config;
|
||||
|
||||
public enum TestAccount {
|
||||
WISHLISTS("user1us", "user1us", """
|
||||
WISHLISTS("WISHLISTS", "user1us", "user1us", """
|
||||
WITH target_user AS (
|
||||
SELECT id FROM users WHERE username = ?
|
||||
),
|
||||
@@ -14,7 +14,7 @@ public enum TestAccount {
|
||||
)
|
||||
SELECT 1;
|
||||
"""),
|
||||
GIFTS("user2us", "user2us", """
|
||||
GIFTS("GIFTS", "user2us", "user2us", """
|
||||
WITH target_user AS (
|
||||
SELECT id FROM users WHERE username = ?
|
||||
),
|
||||
@@ -27,7 +27,7 @@ public enum TestAccount {
|
||||
)
|
||||
SELECT 1;
|
||||
"""),
|
||||
RESERVATION("user3us", "user3us", """
|
||||
RESERVATION("RESERVATION", "user3us", "user3us", """
|
||||
WITH owner_user AS (
|
||||
SELECT id FROM users WHERE username = ?
|
||||
),
|
||||
@@ -59,25 +59,35 @@ public enum TestAccount {
|
||||
FROM owner_wishlist;
|
||||
""");
|
||||
|
||||
private final String username;
|
||||
private final String password;
|
||||
private final String envPrefix;
|
||||
private final String defaultUsername;
|
||||
private final String defaultPassword;
|
||||
private final String resetSql;
|
||||
|
||||
TestAccount(String username, String password, String resetSql) {
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
TestAccount(String envPrefix, String defaultUsername, String defaultPassword, String resetSql) {
|
||||
this.envPrefix = envPrefix;
|
||||
this.defaultUsername = defaultUsername;
|
||||
this.defaultPassword = defaultPassword;
|
||||
this.resetSql = resetSql;
|
||||
}
|
||||
|
||||
public String username() {
|
||||
return username;
|
||||
return resolve(envPrefix + "_USERNAME", defaultUsername);
|
||||
}
|
||||
|
||||
public String password() {
|
||||
return password;
|
||||
return resolve(envPrefix + "_PASSWORD", defaultPassword);
|
||||
}
|
||||
|
||||
public String resetSql() {
|
||||
return resetSql;
|
||||
}
|
||||
|
||||
private String resolve(String envKey, String defaultValue) {
|
||||
String value = System.getenv(envKey);
|
||||
if (value == null || value.isBlank()) {
|
||||
return defaultValue;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user