First unit test is working. Also all database migrations get executed automatically when running the unit tests.develop
parent
53d3066230
commit
b8a8fbdc4b
@ -1,19 +1,26 @@
|
|||||||
# This file defines all environment variables that the application needs.
|
# This file defines all environment variables that the application needs.
|
||||||
|
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE.
|
||||||
# Use ".env.local" for local overrides during development.
|
# Use ".env.local" for local overrides during development.
|
||||||
# Use real environment variables when deploying to production.
|
# Use real environment variables when deploying to production.
|
||||||
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
||||||
|
|
||||||
###> symfony/framework-bundle ###
|
###> symfony/framework-bundle ###
|
||||||
APP_ENV=dev
|
APP_ENV=dev
|
||||||
APP_SECRET=558a40bd107371e7f7f25b4adf2d0da9
|
APP_SECRET=879a6adeceeccbdc835a19f7e3aad7e8
|
||||||
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
|
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
|
||||||
#TRUSTED_HOSTS=localhost,example.com
|
#TRUSTED_HOSTS='^localhost|example\.com$'
|
||||||
###< symfony/framework-bundle ###
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
###> doctrine/doctrine-bundle ###
|
###> doctrine/doctrine-bundle ###
|
||||||
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||||
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
|
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
|
||||||
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
||||||
#DATABASE_URL=pgsql://db_user:db_password@127.0.0.1:5432/db_name
|
|
||||||
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db
|
DATABASE_URL=sqlite:///%kernel.project_dir%/var/data.db
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
|
###> symfony/swiftmailer-bundle ###
|
||||||
|
# For Gmail as a transport, use: "gmail://username:password@localhost"
|
||||||
|
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
|
||||||
|
# Delivery is disabled by default via "null://localhost"
|
||||||
|
MAILER_URL=null://localhost
|
||||||
|
###< symfony/swiftmailer-bundle ###
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
# This file is a "template" of which env vars need to be defined for your application
|
||||||
|
# Copy this file to .env file for development, create environment variables when deploying to production
|
||||||
|
# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration
|
||||||
|
|
||||||
|
###> symfony/framework-bundle ###
|
||||||
|
APP_ENV=dev
|
||||||
|
APP_SECRET=9d74944d92d8155f1c870695def94464
|
||||||
|
#TRUSTED_PROXIES=127.0.0.1,127.0.0.2
|
||||||
|
#TRUSTED_HOSTS=localhost,example.com
|
||||||
|
###< symfony/framework-bundle ###
|
||||||
|
|
||||||
|
###> doctrine/doctrine-bundle ###
|
||||||
|
# Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
|
||||||
|
# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db"
|
||||||
|
# Configure your db driver and server_version in config/packages/doctrine.yaml
|
||||||
|
DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/db_name
|
||||||
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
|
###> symfony/swiftmailer-bundle ###
|
||||||
|
# For Gmail as a transport, use: "gmail://username:password@localhost"
|
||||||
|
# For a generic SMTP server, use: "smtp://localhost:25?encryption=&auth_mode="
|
||||||
|
# Delivery is disabled by default via "null://localhost"
|
||||||
|
MAILER_URL=null://localhost
|
||||||
|
###< symfony/swiftmailer-bundle ###
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,4 @@
|
|||||||
|
# See https://symfony.com/doc/current/email/dev_environment.html
|
||||||
|
swiftmailer:
|
||||||
|
# send all emails to a specific address
|
||||||
|
#delivery_addresses: ['me@example.com']
|
@ -0,0 +1,3 @@
|
|||||||
|
swiftmailer:
|
||||||
|
url: '%env(MAILER_URL)%'
|
||||||
|
spool: { type: 'memory' }
|
@ -0,0 +1,2 @@
|
|||||||
|
swiftmailer:
|
||||||
|
disable_delivery: true
|
@ -0,0 +1,3 @@
|
|||||||
|
framework:
|
||||||
|
validation:
|
||||||
|
email_validation_mode: html5
|
@ -0,0 +1,51 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Symfony\Component\Dotenv\Dotenv;
|
||||||
|
|
||||||
|
require dirname(__DIR__).'/vendor/autoload.php';
|
||||||
|
|
||||||
|
if (!array_key_exists('APP_ENV', $_SERVER)) {
|
||||||
|
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('prod' !== $_SERVER['APP_ENV']) {
|
||||||
|
if (!class_exists(Dotenv::class)) {
|
||||||
|
throw new RuntimeException('The "APP_ENV" environment variable is not set to "prod". Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$path = dirname(__DIR__).'/.env';
|
||||||
|
$dotenv = new Dotenv();
|
||||||
|
|
||||||
|
if (method_exists($dotenv, 'loadEnv')) {
|
||||||
|
$dotenv->loadEnv($path);
|
||||||
|
} else {
|
||||||
|
// fallback code in case your Dotenv component is not 4.2 or higher (when loadEnv() was added)
|
||||||
|
|
||||||
|
if (file_exists($path) || !file_exists($p = "$path.dist")) {
|
||||||
|
$dotenv->load($path);
|
||||||
|
} else {
|
||||||
|
$dotenv->load($p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (null === $env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) {
|
||||||
|
$dotenv->populate(array('APP_ENV' => $env = 'dev'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('test' !== $env && file_exists($p = "$path.local")) {
|
||||||
|
$dotenv->load($p);
|
||||||
|
$env = $_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? $env;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists($p = "$path.$env")) {
|
||||||
|
$dotenv->load($p);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists($p = "$path.$env.local")) {
|
||||||
|
$dotenv->load($p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $_SERVER['APP_ENV'] ?: $_ENV['APP_ENV'] ?: 'dev';
|
||||||
|
$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
|
||||||
|
$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0';
|
@ -0,0 +1,35 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20181118195745 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function up(Schema $schema) : void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.');
|
||||||
|
|
||||||
|
$this->addSql('CREATE TABLE hero (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER NOT NULL, name VARCHAR(32) NOT NULL)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_51CE6E865E237E06 ON hero (name)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_51CE6E86A76ED395 ON hero (user_id)');
|
||||||
|
$this->addSql('CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, username VARCHAR(32) NOT NULL, password VARCHAR(255) NOT NULL, api_token VARCHAR(255) DEFAULT NULL, roles CLOB NOT NULL --(DC2Type:json)
|
||||||
|
)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649F85E0677 ON user (username)');
|
||||||
|
$this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D6497BA2F5EB ON user (api_token)');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema) : void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'sqlite', 'Migration can only be executed safely on \'sqlite\'.');
|
||||||
|
|
||||||
|
$this->addSql('DROP TABLE hero');
|
||||||
|
$this->addSql('DROP TABLE user');
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\Hero;
|
use App\Entity\Hero;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Entity\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Tests\Controller;
|
||||||
|
|
||||||
|
use App\DataFixtures\UserFixtures;
|
||||||
|
|
||||||
|
class UserControllerTest extends RestTestBase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This test verifies that requesting
|
||||||
|
*/
|
||||||
|
public function testRetrieveUser()
|
||||||
|
{
|
||||||
|
$this->createRequestBuilder()
|
||||||
|
->setMethod('GET')
|
||||||
|
->setUri('/api/users')
|
||||||
|
->setAcceptType('application/json')
|
||||||
|
->addServerParameter('HTTP_X-AUTH-TOKEN', UserFixtures::ADMIN_USER_TOKEN)
|
||||||
|
->request();
|
||||||
|
|
||||||
|
$response = $this->client->getResponse();
|
||||||
|
|
||||||
|
$this->assertTrue(
|
||||||
|
$response->headers->contains('Content-Type', 'application/json'),
|
||||||
|
'the "Content-Type" header is "' . $response->headers->get('Content-Type') . '"' // optional message shown on failure
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals(200, $response->getStatusCode(), 'Status code was ' . $response->getStatusCode() . ' but expected 200: ' . $response->getContent());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue