Aktywne Wpisy
pejootl +309
#luxmed #afera #zdrowie #praca
Od jakiegoś czasu praktycznie nie ma możliwości na umówienie się na wizytę w #luxmed. Dzisiaj moja dziewczyna odkryła, że przy kompletnym braku terminów na badanie jak się wyloguje z aplikacji i wejdzie na stronę niezalogowana jest masa dostępnych terminów odpłatnie dosłownie co 15 minut.
Zadzwoniliśmy na infolinię i kobieta tłumaczyła, że #luxmed wynajmuje gabinety lekarzom (lekarzom freelancerom XD), którzy działają poza pakietem.
Ja kupiłem pakiet od agenta,
Od jakiegoś czasu praktycznie nie ma możliwości na umówienie się na wizytę w #luxmed. Dzisiaj moja dziewczyna odkryła, że przy kompletnym braku terminów na badanie jak się wyloguje z aplikacji i wejdzie na stronę niezalogowana jest masa dostępnych terminów odpłatnie dosłownie co 15 minut.
Zadzwoniliśmy na infolinię i kobieta tłumaczyła, że #luxmed wynajmuje gabinety lekarzom (lekarzom freelancerom XD), którzy działają poza pakietem.
Ja kupiłem pakiet od agenta,
Wystawiłem przed swoje mieszkanie na klatce pudełko po nowym TV :D Będę obserował przez wizjer reakcje sąsiadów, kto chce żeby go wołać jakie reakcje dajcie znać, będę wołał wieczór xD Popcorn przygotowany, szykuje się potęęęęężny ból dup xD
#polskiedomy #bogactwo #programista15k #bekazpodludzi #bogactwoczescglownaskuhwysyny
#polskiedomy #bogactwo #programista15k #bekazpodludzi #bogactwoczescglownaskuhwysyny
Uruchamiam projekt
docker-compose up -d
uruchamiana jest migracja i tworzona baza danych "app". Wszystko jest ok jeśli używam np. postmana. Ale wolę napisać testy żeby nie testować ręcznie.
Użyłem behat (test rejestracji użytkownika), odpalam komendą:
docker compose exec php vendor/bin/behat
i dostaję to:
[critical] Uncaught PHP Exception Doctrine\DBAL\Exception\ConnectionException: "An exception occurred in the driver: SQLSTATE[HY000] [1044] Access denied for user 'app'@'%' to database 'app_test'" at /srv/app/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php line 101
Jak widać, kod próbuje użyć bazy danych "apptest" - co jest ok bo nie chcę testować na "produkcyjnej" (app) bazie danych. Pytanie tylko jak to ograć, jak stworzyć bazę pod testy podczas uruchamiania?
Próbowałem
docker-compose exec php bin/console --env=test doctrine:database:create
ale dostaje:
Could not create database
apptestfor connection named default
An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1044 Access denied for user 'app'@'%' to database 'app_test'
Macie jakieś hinty? Co robię źle?
https://pastebin.com/0E4cpk3Q - docker-compose.yml
https://pastebin.com/SvjEgcgz - docker-compose.prod.yml
https://pastebin.com/nF5VBjBH - docker-compose.override.yml
https://pastebin.com/vi1LQQb4 - docker-compose.dev.yml
Dodam, że chcę później te testy odpalać np. w github actions czy innym CI/CD.
A może macie jakieś hinty związane z testowaniem, stawianiem środowiska pod to itd.
https://pastebin.com/5V2grZd5
https://pastebin.com/bdyhsfwa
Kiedyś chyba miałem ten sam problem i go nie rozwiązałem. Po prostu uruchamiałem testy na głównej bazie i za każdym razem przed uruchomieniem testów dump'owałem bazę. Jeśli znalazłbyś przyczynę/rozwiązanie to daj znać :)
docker-compose.yml:
database:
restart: always
image: postgres:${DATABASE_SERVER_VERSION:-14}-alpine
ports:
- "5432"
environment:
POSTGRES_DB: ${DATABASE_NAME}
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
depends_on:
- rabbitmq
networks:
- symfony
volumes:
- ./docker/database/init-test-db.sh:/docker-entrypoint-initdb.d/init-test-db.sh
skrypt:
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
CREATE DATABASE "${POSTGRES_DB}-test";
GRANT ALL PRIVILEGES ON DATABASE "${POSTGRES_DB}-test" TO "${POSTGRES_USER}";
EOSQL
Oczywiście
Moje rozwiązanie to dodatkowa baza danych:
database-test:
image: mysql:5.7
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE:-app_test}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-!ChangeMe!}
MYSQL_USER: ${MYSQL_USER:-app}
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
ports:
- "3307:3306"
".env.test" ma "database-test" oraz port "3307".
Do tego przed każdym testem używającym bazy danych mam coś takiego przy phpunit (mniej więcej):
database-test:
image: mysql:5.7
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE:-app_test}
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-!ChangeMe!}
MYSQL_USER: ${MYSQL_USER:-app}
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
ports:
- "3307:3306"
baza danych istnieje ale gdy odpalam migracje to dostaje:
Access denied for user 'app'@'%' to database 'app_test'
Miałeś z tym problem?
Wiem, że programowanie to rozwiązywanie problemów, trzeba być kreatywnym. Ale nigdzie nie widziałem artykułu/sekcji w dokumentacji, która mówi, że środowisko powinno być przygotowane w sposób X,Y,Z (coś w stylu best
Jak Ci się uda to wszystko zrobić a skryptowi nie, sprawdzasz czy skrypt na pewno używa tych samych danych do logowania.
Ewentualnie kwestia potwierdzenia, że w MySQL masz użytkownika app do bazy app_test z dostępem z odpowiednich hostów (najlepiej wildcard %).
Możesz też