1
0
mirror of https://github.com/Bubka/2FAuth.git synced 2025-07-25 07:45:46 +02:00
Files
.github
app
bootstrap
config
database
docker
docs
public
resources
routes
storage
tests
Api
Classes
Data
EndToEnd
Feature
Console
Extensions
Http
Auth
Middlewares
Requests
LoginRequestTest.php
UserDeleteRequestTest.php
UserPatchPwdRequestTest.php
UserStoreRequestTest.php
UserUpdateRequestTest.php
WebauthnAssertedRequestTest.php
WebauthnRenameRequestTest.php
SystemControllerTest.php
Models
Services
RouteTest.php
Unit
CreatesApplication.php
FeatureTestCase.php
ModelTestCase.php
TestCase.php
.dockerignore
.editorconfig
.env.example
.env.testing
.env.travis
.gitattributes
.gitignore
.styleci.yml
.travis.yml
Dockerfile
LICENSE
Procfile
README.md
_ide_helper.php
_ide_helper_models.php
app.json
artisan
changelog.md
composer.json
composer.lock
crowdin.yml
jsconfig.json
nginx.conf
package-lock.json
package.json
phpstan.neon
phpunit-mysql.xml
phpunit.xml
pint.json
webpack.mix.js
2FAuth/tests/Feature/Http/Requests/UserStoreRequestTest.php
2023-08-01 11:28:27 +02:00

149 lines
5.1 KiB
PHP

<?php
namespace Tests\Feature\Http\Requests;
use App\Http\Requests\UserStoreRequest;
use App\Models\User;
use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Support\Facades\Validator;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\FeatureTestCase;
/**
* UserStoreRequestTest test class
*/
#[CoversClass(UserStoreRequest::class)]
class UserStoreRequestTest extends FeatureTestCase
{
use WithoutMiddleware;
/**
* @test
*/
public function test_user_is_authorized()
{
$request = new UserStoreRequest();
$this->assertTrue($request->authorize());
}
/**
* @test
*/
#[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void
{
User::factory()->create([
'name' => 'Jane',
'email' => 'jane@example.com',
]);
$request = new UserStoreRequest();
$validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails());
}
/**
* Provide Valid data for validation test
*/
public static function provideValidData() : array
{
return [
[[
'name' => 'John',
'email' => 'john@example.com',
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'John',
'email' => 'JOHN@example.com',
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
];
}
/**
* @test
*/
#[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void
{
User::factory()->create([
'name' => 'John',
'email' => 'john@example.com',
]);
$request = new UserStoreRequest();
$validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails());
}
/**
* Provide invalid data for validation test
*/
public static function provideInvalidData() : array
{
return [
[[
'name' => 'John',
'email' => 'john@example.com', // unique
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => '', // required
'email' => 'john@example.com',
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'John',
'email' => '', // required
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz', // max:255
'email' => 'john@example.com',
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'John',
'email' => 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz@example.com', // max:255
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'John',
'email' => 'johnexample.com', // email
'password' => 'MyPassword',
'password_confirmation' => 'MyPassword',
]],
[[
'name' => 'John',
'email' => 'john@example.com',
'password' => '', // required
'password_confirmation' => '', // required
]],
[[
'name' => 'John',
'email' => 'john@example.com',
'password' => 'MyPassword',
'password_confirmation' => 'anotherPassword', // confirmed
]],
[[
'name' => 'John',
'email' => 'john@example.com',
'password' => 'pwd', // min:8
'password_confirmation' => 'pwd',
]],
];
}
}