Add more location tests, more travis CI fix attempts

This commit is contained in:
Dane Everitt 2017-06-16 00:29:19 -05:00
parent 579cc86910
commit a527949939
No known key found for this signature in database
GPG key ID: EEA66103B3D71F53
5 changed files with 77 additions and 14 deletions

View file

@ -1,10 +1,11 @@
APP_ENV=testing APP_ENV=testing
APP_DEBUG=true APP_DEBUG=true
APP_KEY=SomeRandomString32SomeRandomString32 APP_KEY=aaaaabbbbbcccccdddddeeeeefffff12
DB_CONNECTION=tests TEST_DB_CONNECTION=tests
DB_TEST_USERNAME=root TEST_DB_TEST_USERNAME=root
DB_TEST_PASSWORD= TEST_DB_TEST_PASSWORD=
TEST_DB_HOST=127.0.0.1
CACHE_DRIVER=array CACHE_DRIVER=array
SESSION_DRIVER=array SESSION_DRIVER=array

View file

@ -3,8 +3,7 @@ dist: trusty
php: php:
- '7.0' - '7.0'
- '7.1' - '7.1'
- nightly sudo: false
sudo: required
cache: cache:
directories: directories:
- $HOME/.composer/cache - $HOME/.composer/cache
@ -15,9 +14,9 @@ before_install:
before_script: before_script:
- phpenv config-rm xdebug.ini - phpenv config-rm xdebug.ini
- cp .env.travis .env - cp .env.travis .env
- composer install --no-interaction --no-scripts --prefer-dist --no-suggest - composer install --no-interaction --prefer-dist --no-suggest --verbose
- php artisan migrate --force -v - php artisan migrate -v
- php artisan db:seed --force -v - php artisan db:seed -v
script: script:
- vendor/bin/phpunit --coverage-clover=coverage.xml - vendor/bin/phpunit --coverage-clover=coverage.xml
notifications: notifications:

View file

@ -47,11 +47,11 @@ return [
'tests' => [ 'tests' => [
'driver' => 'mysql', 'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'), 'host' => env('TEST_DB_HOST', 'localhost'),
'port' => env('DB_PORT', '3306'), 'port' => env('TEST_DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'travis'), 'database' => env('TEST_DB_DATABASE', 'travis'),
'username' => env('DB_USERNAME', 'root'), 'username' => env('TEST_DB_USERNAME', 'root'),
'password' => env('DB_PASSWORD', ''), 'password' => env('TEST_DB_PASSWORD', ''),
'charset' => 'utf8', 'charset' => 'utf8',
'collation' => 'utf8_unicode_ci', 'collation' => 'utf8_unicode_ci',
'prefix' => '', 'prefix' => '',

View file

@ -38,3 +38,22 @@ $factory->define(Pterodactyl\Models\Location::class, function (Faker\Generator $
'long' => $faker->catchPhrase, 'long' => $faker->catchPhrase,
]; ];
}); });
$factory->define(Pterodactyl\Models\Node::class, function (Faker\Generator $faker) {
return [
'public' => true,
'name' => $faker->firstName,
'fqdn' => $faker->ipv4,
'scheme' => 'http',
'behind_proxy' => false,
'memory' => 1024,
'memory_overallocate' => 0,
'disk' => 10240,
'disk_overallocate' => 0,
'upload_size' => 100,
'daemonSecret' => $faker->uuid,
'daemonListen' => 8080,
'daemonSFTP' => 2022,
'daemonBase' => '/srv/daemon',
];
});

View file

@ -25,6 +25,8 @@
namespace Tests\Feature\Services; namespace Tests\Feature\Services;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Pterodactyl\Exceptions\DisplayException;
use Pterodactyl\Models\Node;
use Tests\TestCase; use Tests\TestCase;
use Pterodactyl\Models\Location; use Pterodactyl\Models\Location;
use Pterodactyl\Services\LocationService; use Pterodactyl\Services\LocationService;
@ -201,4 +203,46 @@ class LocationServiceTest extends TestCase
{ {
$this->service->update(0, []); $this->service->update(0, []);
} }
/**
* Test that a location can be deleted normally when no nodes are attached.
*/
public function testShouldDeleteExistingLocation()
{
$location = factory(Location::class)->create();
$this->assertDatabaseHas('locations', [
'id' => $location->id,
]);
$model = $this->service->delete($location);
$this->assertTrue($model);
$this->assertDatabaseMissing('locations', [
'id' => $location->id,
]);
}
/**
* Test that a location cannot be deleted if a node is attached to it.
*
* @expectedException \Pterodactyl\Exceptions\DisplayException
*/
public function testShouldFailToDeleteExistingLocationWithAttachedNodes()
{
$location = factory(Location::class)->create();
$node = factory(Node::class)->create(['location_id' => $location->id]);
$this->assertDatabaseHas('locations', ['id' => $location->id]);
$this->assertDatabaseHas('nodes', ['id' => $node->id]);
try {
$this->service->delete($location->id);
} catch (\Exception $ex) {
$this->assertInstanceOf(DisplayException::class, $ex);
$this->assertNotEmpty($ex->getMessage());
throw $ex;
}
}
} }