emmanuel-ba / aramis
Installs: 13
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:project
Requires
- php: >=5.5.9
- doctrine/doctrine-bundle: ^1.6
- doctrine/doctrine-cache-bundle: ^1.2
- doctrine/orm: ^2.5
- friendsofsymfony/rest-bundle: @dev
- incenteev/composer-parameter-handler: ^2.0
- jms/serializer-bundle: @dev
- sensio/distribution-bundle: ^5.0
- sensio/framework-extra-bundle: ^3.0.2
- symfony/monolog-bundle: ^2.8
- symfony/polyfill-apcu: ^1.0
- symfony/symfony: 3.1.*
Requires (Dev)
This package is not auto-updated.
Last update: 2025-05-14 22:31:16 UTC
README
What's inside ?
A REST API developed using Symfony 3.1 , FosRestBundle and JMSSerializerBundle. The purpose is to handle a basic list of cars.
Installation
Make sure MySQL and PHP >=5.5.9 are installed.
-
Choose your favorite way to get composer.
-
Install project :
php composer.phar create-project emmanuel-ba/aramis aramis -sdev
database credentials should be asked during installation
- Create database:
cd aramis
php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force
you can alternatively use the mysql dump file provided (aramis.sql).
- Load fixtures :
php bin/console doctrine:fixtures:load
- Launch tests with phpunit:
phpunit
- Start PHP's built-in web server using Symfony Command :
php bin/console server:run
Api should be available at http:localhost:8000
Test API
Quick tests using Postman
You need to have postman installed. Have a look at the Chrome extension
- Load the provided environment and collection in postman :
- environment : Aramis.postman_collection.json
- collection : TEST.postman_environment.json
Run the tests on the collection
There should be 22 tests passed
Manual tests using curl
- GET cars (response code 200 expected)
curl -X GET -H "Cache-Control: no-cache" "http://localhost:8000/cars"
- GET car (response code 200 expected)
curl -X GET -H "Cache-Control: no-cache" "http://localhost:8000/car/1"
- POST car (response code 201 expected)
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "maker" : "Seat", "model" : "Leon", "price" : 15000, "option" : [{"name" : "Spoiler"}, {"name" : "GPS"}], "equipment" : [{"name" : "ABS"}, {"name" : "Turbo"}] } }' "http://localhost:8000/car"
- INVALID POST car (response code 400 expected)
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "model" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "price" : 15000, "option" : [{"name" : "Spoiler"}, {"name" : "GPS"}], "equipment" : [{"name" : "ABS"}, {"name" : "Turbo"}] } }' "http://localhost:8000/car"
- PUT car (response code 204 expected)
curl -X PUT -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "maker" : "Audi", "model" : "Q7", "price" : 75000, "option" : [{"name" : "Camera recul"}, {"name" : "Pack cuir"}], "equipment" : [{"name" : "Boite auto"}, {"name" : "Climatisation"}] } }' "http://localhost:8000/car/3"
- INVALID put car (response code 400 expected)
curl -X PUT -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "maker" : "Audi", "model" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "price" : 75000, "option" : [{"name" : "Camera recul"}, {"name" : "Pack cuir"}], "equipment" : [{"name" : "Boite auto"}, {"name" : "Climatisation"}] } }' "http://localhost:8000/car/3"
- PATCH car (response code 204 expected)
curl -X PATCH -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "model" : "Q5" } }' "http://localhost:8000/car/3"
INVALID PATCH : (response code 400 expected)
curl -X PATCH -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{"car" : { "model" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx" } }' "http://localhost:8000/car/3"
DELETE a car : (response code 204 expected)
curl -X DELETE -H "Cache-Control: no-cache" "http://localhost:8000/car/3"