Apply Pint fixes

This commit is contained in:
Bubka 2024-09-26 23:50:01 +02:00
parent 18fe45778a
commit c00b04e192
118 changed files with 398 additions and 458 deletions

View File

@ -6,7 +6,6 @@ use App\Api\v1\Requests\SettingStoreRequest;
use App\Api\v1\Requests\SettingUpdateRequest; use App\Api\v1\Requests\SettingUpdateRequest;
use App\Facades\Settings; use App\Facades\Settings;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Validation\ValidationException;
class SettingController extends Controller class SettingController extends Controller
{ {

View File

@ -111,8 +111,9 @@ class TwoFAccountController extends Controller
if ($twofaccount->group_id != $groupId) { if ($twofaccount->group_id != $groupId) {
if ((int) $groupId === 0) { if ((int) $groupId === 0) {
TwoFAccounts::withdraw($twofaccount->id); TwoFAccounts::withdraw($twofaccount->id);
} else {
Groups::assign($twofaccount->id, $request->user(), $groupId);
} }
else Groups::assign($twofaccount->id, $request->user(), $groupId);
$twofaccount->refresh(); $twofaccount->refresh();
} }
@ -151,7 +152,7 @@ class TwoFAccountController extends Controller
$validated = $request->validated(); $validated = $request->validated();
$twofaccounts = TwoFAccount::whereIn('id', $validated['orderedIds'])->get(); $twofaccounts = TwoFAccount::whereIn('id', $validated['orderedIds'])->get();
$this->authorize('updateEach', [new TwoFAccount(), $twofaccounts]); $this->authorize('updateEach', [new TwoFAccount, $twofaccounts]);
TwoFAccount::setNewOrder($validated['orderedIds']); TwoFAccount::setNewOrder($validated['orderedIds']);
$orderedIds = $request->user()->twofaccounts->sortBy('order_column')->pluck('id'); $orderedIds = $request->user()->twofaccounts->sortBy('order_column')->pluck('id');
@ -192,7 +193,7 @@ class TwoFAccountController extends Controller
} }
$twofaccounts = TwoFAccounts::export($validated['ids']); $twofaccounts = TwoFAccounts::export($validated['ids']);
$this->authorize('viewEach', [new TwoFAccount(), $twofaccounts]); $this->authorize('viewEach', [new TwoFAccount, $twofaccounts]);
return new TwoFAccountExportCollection($twofaccounts); return new TwoFAccountExportCollection($twofaccounts);
} }
@ -231,7 +232,7 @@ class TwoFAccountController extends Controller
// The request inputs should define an account // The request inputs should define an account
else { else {
$validatedData = $request->validate((new TwoFAccountStoreRequest)->rules()); $validatedData = $request->validate((new TwoFAccountStoreRequest)->rules());
$twofaccount = new TwoFAccount(); $twofaccount = new TwoFAccount;
$twofaccount->fillWithOtpParameters($validatedData, true); $twofaccount->fillWithOtpParameters($validatedData, true);
} }
@ -267,7 +268,7 @@ class TwoFAccountController extends Controller
$ids = Helpers::commaSeparatedToArray($validated['ids']); $ids = Helpers::commaSeparatedToArray($validated['ids']);
$twofaccounts = TwoFAccount::whereIn('id', $ids)->get(); $twofaccounts = TwoFAccount::whereIn('id', $ids)->get();
$this->authorize('updateEach', [new TwoFAccount(), $twofaccounts]); $this->authorize('updateEach', [new TwoFAccount, $twofaccounts]);
TwoFAccounts::withdraw($ids); TwoFAccounts::withdraw($ids);
@ -307,7 +308,7 @@ class TwoFAccountController extends Controller
$ids = Helpers::commaSeparatedToArray($validated['ids']); $ids = Helpers::commaSeparatedToArray($validated['ids']);
$twofaccounts = TwoFAccount::whereIn('id', $ids)->get(); $twofaccounts = TwoFAccount::whereIn('id', $ids)->get();
$this->authorize('deleteEach', [new TwoFAccount(), $twofaccounts]); $this->authorize('deleteEach', [new TwoFAccount, $twofaccounts]);
TwoFAccounts::delete($validated['ids']); TwoFAccounts::delete($validated['ids']);

View File

@ -34,15 +34,13 @@ class SettingUpdateRequest extends FormRequest
new IsValidEmailList, new IsValidEmailList,
], ],
]; ];
} } elseif ($routeParam == 'restrictRule') {
else if ($routeParam == 'restrictRule') {
$rule = [ $rule = [
'value' => [ 'value' => [
new IsValidRegex, new IsValidRegex,
], ],
]; ];
} } else {
else {
$rule = [ $rule = [
'value' => [ 'value' => [
'required', 'required',

View File

@ -37,7 +37,7 @@ class UserAuthenticationResource extends JsonResource
*/ */
public function __construct($resource) public function __construct($resource)
{ {
$this->agent = new Agent(); $this->agent = new Agent;
$this->agent->setUserAgent($resource->user_agent); $this->agent->setUserAgent($resource->user_agent);
parent::__construct($resource); parent::__construct($resource);

View File

@ -4,12 +4,8 @@ namespace App\Console\Commands\Maintenance;
use App\Facades\Settings; use App\Facades\Settings;
use App\Models\TwoFAccount; use App\Models\TwoFAccount;
use Exception;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Crypt;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Throwable;
/** /**
* @codeCoverageIgnore * @codeCoverageIgnore
@ -75,16 +71,15 @@ class FixServiceFieldEncryption extends Command
*/ */
protected function encryptServiceField() : void protected function encryptServiceField() : void
{ {
$twofaccounts = TwoFAccount::all(); $twofaccounts = TwoFAccount::all();
$fullyEncryptedTwofaccounts = $twofaccounts->whereNotIn('service', [__('errors.indecipherable')]); $fullyEncryptedTwofaccounts = $twofaccounts->whereNotIn('service', [__('errors.indecipherable')]);
$partiallyEncryptedTwofaccounts = $twofaccounts->where('service', __('errors.indecipherable')); $partiallyEncryptedTwofaccounts = $twofaccounts->where('service', __('errors.indecipherable'));
if ($fullyEncryptedTwofaccounts->count() === $twofaccounts->count()) { if ($fullyEncryptedTwofaccounts->count() === $twofaccounts->count()) {
$this->components->info('The Service field is fully encrypted'); $this->components->info('The Service field is fully encrypted');
return; return;
} } else {
else {
$this->newLine(); $this->newLine();
$this->components->warn('The Service field is not fully encrypted, although it should be.'); $this->components->warn('The Service field is not fully encrypted, although it should be.');
$this->line('ID of corresponding records in the twofaccounts table:'); $this->line('ID of corresponding records in the twofaccounts table:');
@ -97,14 +92,15 @@ class FixServiceFieldEncryption extends Command
// than the one used to encrypt the legacy_uri, account and secret fields, the // than the one used to encrypt the legacy_uri, account and secret fields, the
// model would be inconsistent. // model would be inconsistent.
if (str_starts_with($twofaccount->legacy_uri, 'otpauth://')) { if (str_starts_with($twofaccount->legacy_uri, 'otpauth://')) {
$rawServiceValue = $twofaccount->getRawOriginal('service'); $rawServiceValue = $twofaccount->getRawOriginal('service');
$twofaccount->service = $rawServiceValue; $twofaccount->service = $rawServiceValue;
$twofaccount->save(); $twofaccount->save();
$this->components->task(sprintf('Fixing twofaccount record with ID #%s', $twofaccount->id)); $this->components->task(sprintf('Fixing twofaccount record with ID #%s', $twofaccount->id));
} } else {
else {
$error += 1; $error += 1;
$this->components->task(sprintf('Fixing twofaccount record with ID #%s', $twofaccount->id), function() { return false; }); $this->components->task(sprintf('Fixing twofaccount record with ID #%s', $twofaccount->id), function () {
return false;
});
$this->components->error('Wrong encryption key: The current APP_KEY cannot decipher already encrypted fields, encrypting the Service field with this key would lead to inconsistent data encryption'); $this->components->error('Wrong encryption key: The current APP_KEY cannot decipher already encrypted fields, encrypting the Service field with this key would lead to inconsistent data encryption');
} }
}); });
@ -116,8 +112,7 @@ class FixServiceFieldEncryption extends Command
} }
//$this->line('Task completed'); //$this->line('Task completed');
} } else {
else {
$this->components->warn('No fix applied.'); $this->components->warn('No fix applied.');
$this->line('You can re-run this command at any time to fix inconsistent records.'); $this->line('You can re-run this command at any time to fix inconsistent records.');
} }

View File

@ -81,8 +81,8 @@ trait ResetTrait
protected function seedDB(string $seeder) : void protected function seedDB(string $seeder) : void
{ {
$this->callSilent('db:seed', [ $this->callSilent('db:seed', [
'--class' => $seeder, '--class' => $seeder,
'--no-interaction' => 1 '--no-interaction' => 1,
]); ]);
$this->line('Database seeded'); $this->line('Database seeded');

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class DbEncryptionException extends Exception class DbEncryptionException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class EncryptedMigrationException extends Exception class EncryptedMigrationException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class InvalidMigrationDataException extends Exception class InvalidMigrationDataException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class InvalidOtpParameterException extends Exception class InvalidOtpParameterException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class InvalidQrCodeException extends Exception class InvalidQrCodeException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class InvalidSecretException extends Exception class InvalidSecretException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class UndecipherableException extends Exception class UndecipherableException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class UnsupportedMigrationException extends Exception class UnsupportedMigrationException extends Exception {}
{
}

View File

@ -9,6 +9,4 @@ use Exception;
* *
* @codeCoverageIgnore * @codeCoverageIgnore
*/ */
class UnsupportedOtpTypeException extends Exception class UnsupportedOtpTypeException extends Exception {}
{
}

View File

@ -34,7 +34,7 @@ class MigratorFactory implements MigratorFactoryInterface
} elseif ($this->isPlainText($migrationPayload)) { } elseif ($this->isPlainText($migrationPayload)) {
return App::make(PlainTextMigrator::class); return App::make(PlainTextMigrator::class);
} else { } else {
throw new UnsupportedMigrationException(); throw new UnsupportedMigrationException;
} }
} }
@ -130,7 +130,7 @@ class MigratorFactory implements MigratorFactoryInterface
if (Arr::has($json, 'db')) { if (Arr::has($json, 'db')) {
if (is_string($json['db']) && is_array(Arr::get($json, 'header.slots'))) { if (is_string($json['db']) && is_array(Arr::get($json, 'header.slots'))) {
throw new EncryptedMigrationException(); throw new EncryptedMigrationException;
} else { } else {
return count(Validator::validate( return count(Validator::validate(
$json, $json,
@ -180,7 +180,7 @@ class MigratorFactory implements MigratorFactoryInterface
if (Arr::has($json, 'schemaVersion') && (Arr::has($json, 'services') || Arr::has($json, 'servicesEncrypted'))) { if (Arr::has($json, 'schemaVersion') && (Arr::has($json, 'services') || Arr::has($json, 'servicesEncrypted'))) {
if (Arr::has($json, 'servicesEncrypted')) { if (Arr::has($json, 'servicesEncrypted')) {
throw new EncryptedMigrationException(); throw new EncryptedMigrationException;
} else { } else {
return count(Validator::validate( return count(Validator::validate(
$json, $json,

View File

@ -54,7 +54,7 @@ class WebAuthnRecoveryController extends Controller
$user->save(); $user->save();
Log::notice(sprintf('Legacy login restored for user ID #%s', $user->id)); Log::notice(sprintf('Legacy login restored for user ID #%s', $user->id));
} else { } else {
throw new AuthenticationException(); throw new AuthenticationException;
} }
} }
); );

View File

@ -16,7 +16,7 @@ class SinglePageController extends Controller
*/ */
public function index() public function index()
{ {
event(new ScanForNewReleaseCalled()); event(new ScanForNewReleaseCalled);
$settings = Settings::all()->toJson(); $settings = Settings::all()->toJson();
$proxyAuth = config('auth.defaults.guard') === 'reverse-proxy-guard' ? true : false; $proxyAuth = config('auth.defaults.guard') === 'reverse-proxy-guard' ? true : false;
@ -45,9 +45,9 @@ class SinglePageController extends Controller
], ],
'subdirectory' => $subdir, 'subdirectory' => $subdir,
])->toJson(), ])->toJson(),
'urls' => collect([ 'urls' => collect([
'installDocUrl' => $installDocUrl, 'installDocUrl' => $installDocUrl,
'ssoDocUrl' => $ssoDocUrl 'ssoDocUrl' => $ssoDocUrl,
]), ]),
'defaultPreferences' => $defaultPreferences, 'defaultPreferences' => $defaultPreferences,
'subdirectory' => $subdir, 'subdirectory' => $subdir,

View File

@ -70,7 +70,7 @@ class SystemController extends Controller
public function testEmail(Request $request) public function testEmail(Request $request)
{ {
try { try {
$request->user()->notify(new TestEmailSettingNotification()); $request->user()->notify(new TestEmailSettingNotification);
} catch (\Throwable $th) { } catch (\Throwable $th) {
Log::error($th->getMessage()); Log::error($th->getMessage());
} }

View File

@ -24,8 +24,9 @@ class RejectIfSsoOnlyAndNotForAdmin
if (Settings::get('useSsoOnly')) { if (Settings::get('useSsoOnly')) {
if ($email = $request->input('email', null)) { if ($email = $request->input('email', null)) {
$user = User::whereEmail($email)->first(); $user = User::whereEmail($email)->first();
} else {
$user = Auth::user();
} }
else $user = Auth::user();
if ($user?->isAdministrator()) { if ($user?->isAdministrator()) {
return $next($request); return $next($request);

View File

@ -59,7 +59,8 @@ class FailedLoginListener extends AbstractAccessListener
if ($user->preferences['notifyOnFailedLogin'] == true) { if ($user->preferences['notifyOnFailedLogin'] == true) {
$user->notify(new FailedLoginNotification($log)); $user->notify(new FailedLoginNotification($log));
} }
} else {
Log::info(sprintf('%s received an event with a null $user member. Nothing has been written to the auth log', self::class));
} }
else Log::info(sprintf('%s received an event with a null $user member. Nothing has been written to the auth log', self::class));
} }
} }

View File

@ -47,12 +47,12 @@ class LoginListener extends AbstractAccessListener
$ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip(); $ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip();
$userAgent = $this->request->userAgent(); $userAgent = $this->request->userAgent();
$known = $user->authentications() $known = $user->authentications()
->whereIpAddress($ip) ->whereIpAddress($ip)
->whereUserAgent($userAgent) ->whereUserAgent($userAgent)
->whereLoginSuccessful(true) ->whereLoginSuccessful(true)
->whereGuard($event->guard) ->whereGuard($event->guard)
->first(); ->first();
$newUser = Carbon::parse($user->{$user->getCreatedAtColumn()})->diffInMinutes(Carbon::now(), true) < 1; $newUser = Carbon::parse($user->{$user->getCreatedAtColumn()})->diffInMinutes(Carbon::now(), true) < 1;
$log = $user->authentications()->create([ $log = $user->authentications()->create([
'ip_address' => $ip, 'ip_address' => $ip,

View File

@ -46,11 +46,11 @@ class LogoutListener extends AbstractAccessListener
$ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip(); $ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip();
$userAgent = $this->request->userAgent(); $userAgent = $this->request->userAgent();
$log = $user->authentications() $log = $user->authentications()
->whereIpAddress($ip) ->whereIpAddress($ip)
->whereUserAgent($userAgent) ->whereUserAgent($userAgent)
->whereGuard($event->guard) ->whereGuard($event->guard)
->orderByDesc('login_at') ->orderByDesc('login_at')
->first(); ->first();
if (! $log) { if (! $log) {
$log = new AuthLog([ $log = new AuthLog([

View File

@ -52,10 +52,10 @@ class OtherDeviceLogoutListener extends AbstractAccessListener
$ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip(); $ip = config('2fauth.proxy_headers.forIp') ?? $this->request->ip();
$userAgent = $this->request->userAgent(); $userAgent = $this->request->userAgent();
$authLog = $user->authentications() $authLog = $user->authentications()
->whereIpAddress($ip) ->whereIpAddress($ip)
->whereUserAgent($userAgent) ->whereUserAgent($userAgent)
->first(); ->first();
$guard = $event->guard; $guard = $event->guard;
if (! $authLog) { if (! $authLog) {
$authLog = new AuthLog([ $authLog = new AuthLog([

View File

@ -28,12 +28,12 @@ class VisitedByProxyUserListener extends AbstractAccessListener
$userAgent = $this->request->userAgent(); $userAgent = $this->request->userAgent();
$guard = config('auth.defaults.guard'); $guard = config('auth.defaults.guard');
$known = $user->authentications() $known = $user->authentications()
->whereIpAddress($ip) ->whereIpAddress($ip)
->whereUserAgent($userAgent) ->whereUserAgent($userAgent)
->whereLoginSuccessful(true) ->whereLoginSuccessful(true)
->whereGuard($guard) ->whereGuard($guard)
->first(); ->first();
$newUser = Carbon::parse($user->{$user->getCreatedAtColumn()})->diffInMinutes(Carbon::now(), true) < 1; $newUser = Carbon::parse($user->{$user->getCreatedAtColumn()})->diffInMinutes(Carbon::now(), true) < 1;
$log = $user->authentications()->create([ $log = $user->authentications()->create([
'ip_address' => $ip, 'ip_address' => $ip,

View File

@ -70,12 +70,13 @@ use Laravel\Passport\HasApiTokens;
class User extends Authenticatable implements HasLocalePreference, WebAuthnAuthenticatable class User extends Authenticatable implements HasLocalePreference, WebAuthnAuthenticatable
{ {
use HasApiTokens, Notifiable; use HasApiTokens, Notifiable;
use HasAuthenticationLog; use HasAuthenticationLog;
/** /**
* @use HasFactory<UserFactory> * @use HasFactory<UserFactory>
*/ */
use HasFactory; use HasFactory;
use WebAuthnAuthentication, WebAuthnManageCredentials; use WebAuthnAuthentication, WebAuthnManageCredentials;
/** /**

View File

@ -31,7 +31,7 @@ class FailedLoginNotification extends Notification implements ShouldQueue
public function __construct(AuthLog $authLog) public function __construct(AuthLog $authLog)
{ {
$this->authLog = $authLog; $this->authLog = $authLog;
$this->agent = new Agent(); $this->agent = new Agent;
$this->agent->setUserAgent($authLog->user_agent); $this->agent->setUserAgent($authLog->user_agent);
} }
@ -48,7 +48,7 @@ class FailedLoginNotification extends Notification implements ShouldQueue
*/ */
public function toMail(mixed $notifiable) : MailMessage public function toMail(mixed $notifiable) : MailMessage
{ {
return (new MailMessage()) return (new MailMessage)
->subject(__('notifications.failed_login.subject')) ->subject(__('notifications.failed_login.subject'))
->markdown('emails.failedLogin', [ ->markdown('emails.failedLogin', [
'account' => $notifiable, 'account' => $notifiable,

View File

@ -31,7 +31,7 @@ class SignedInWithNewDeviceNotification extends Notification implements ShouldQu
public function __construct(AuthLog $authLog) public function __construct(AuthLog $authLog)
{ {
$this->authLog = $authLog; $this->authLog = $authLog;
$this->agent = new Agent(); $this->agent = new Agent;
$this->agent->setUserAgent($authLog->user_agent); $this->agent->setUserAgent($authLog->user_agent);
} }
@ -45,7 +45,7 @@ class SignedInWithNewDeviceNotification extends Notification implements ShouldQu
*/ */
public function toMail(mixed $notifiable) : MailMessage public function toMail(mixed $notifiable) : MailMessage
{ {
return (new MailMessage()) return (new MailMessage)
->subject(__('notifications.new_device.subject')) ->subject(__('notifications.new_device.subject'))
->markdown('emails.signedInWithNewDevice', [ ->markdown('emails.signedInWithNewDevice', [
'account' => $notifiable, 'account' => $notifiable,

View File

@ -26,10 +26,7 @@ class TestEmailSettingNotification extends Notification
/** /**
* TestEmailSettingNotification constructor. * TestEmailSettingNotification constructor.
*/ */
public function __construct() public function __construct() {}
{
}
/** /**
* Get the notification's delivery channels. * Get the notification's delivery channels.

View File

@ -20,19 +20,19 @@ class MigrationServiceProvider extends ServiceProvider
$this->app->bind(MigratorFactoryInterface::class, MigratorFactory::class); $this->app->bind(MigratorFactoryInterface::class, MigratorFactory::class);
$this->app->singleton(GoogleAuthMigrator::class, function () { $this->app->singleton(GoogleAuthMigrator::class, function () {
return new GoogleAuthMigrator(); return new GoogleAuthMigrator;
}); });
$this->app->singleton(AegisMigrator::class, function () { $this->app->singleton(AegisMigrator::class, function () {
return new AegisMigrator(); return new AegisMigrator;
}); });
$this->app->singleton(TwoFASMigrator::class, function () { $this->app->singleton(TwoFASMigrator::class, function () {
return new TwoFASMigrator(); return new TwoFASMigrator;
}); });
$this->app->singleton(PlainTextMigrator::class, function () { $this->app->singleton(PlainTextMigrator::class, function () {
return new PlainTextMigrator(); return new PlainTextMigrator;
}); });
} }

View File

@ -23,7 +23,7 @@ class OpenId extends AbstractProvider implements ProviderInterface
public function __construct(Request $request, $clientId, $clientSecret, $redirectUrl, $guzzle = []) public function __construct(Request $request, $clientId, $clientSecret, $redirectUrl, $guzzle = [])
{ {
$guzzle = array_merge([ $guzzle = array_merge([
'proxy' => config('2fauth.config.outgoingProxy') 'proxy' => config('2fauth.config.outgoingProxy'),
], $guzzle); ], $guzzle);
parent::__construct($request, $clientId, $clientSecret, $redirectUrl, $guzzle); parent::__construct($request, $clientId, $clientSecret, $redirectUrl, $guzzle);
@ -72,7 +72,7 @@ class OpenId extends AbstractProvider implements ProviderInterface
*/ */
protected function mapUserToObject(array $user) protected function mapUserToObject(array $user)
{ {
return (new User())->setRaw($user)->map([ return (new User)->setRaw($user)->map([
'email' => $user['email'] ?? null, 'email' => $user['email'] ?? null,
'email_verified' => $user['email_verified'] ?? null, 'email_verified' => $user['email_verified'] ?? null,
'name' => $user['name'] ?? null, 'name' => $user['name'] ?? null,

View File

@ -25,15 +25,15 @@ class TwoFAuthServiceProvider extends ServiceProvider implements DeferrableProvi
}); });
$this->app->singleton(SettingService::class, function () { $this->app->singleton(SettingService::class, function () {
return new SettingService(); return new SettingService;
}); });
$this->app->singleton(LogoService::class, function () { $this->app->singleton(LogoService::class, function () {
return new LogoService(); return new LogoService;
}); });
$this->app->singleton(ReleaseRadarService::class, function () { $this->app->singleton(ReleaseRadarService::class, function () {
return new ReleaseRadarService(); return new ReleaseRadarService;
}); });
$this->app->bind(QrReader::class, function ($app, $parameters) { $this->app->bind(QrReader::class, function ($app, $parameters) {

View File

@ -18,8 +18,7 @@ class IsValidRegex implements ValidationRule
if (preg_last_error() !== PREG_NO_ERROR) { if (preg_last_error() !== PREG_NO_ERROR) {
$fail('validation.IsValidRegex')->translate(); $fail('validation.IsValidRegex')->translate();
} }
} } catch (\Throwable $ex) {
catch (\Throwable $ex) {
$fail('validation.IsValidRegex')->translate(); $fail('validation.IsValidRegex')->translate();
} }
} }

View File

@ -5,11 +5,9 @@
namespace App\Services\Auth; namespace App\Services\Auth;
use App\Events\VisitedByProxyUser;
use Illuminate\Auth\GuardHelpers; use Illuminate\Auth\GuardHelpers;
use Illuminate\Contracts\Auth\Guard; use Illuminate\Contracts\Auth\Guard;
use Illuminate\Contracts\Auth\UserProvider; use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
class ReverseProxyGuard implements Guard class ReverseProxyGuard implements Guard

View File

@ -38,11 +38,10 @@ class GroupService
// - No group is passed => We try to identify a destination group through user preferences // - No group is passed => We try to identify a destination group through user preferences
$group = null; $group = null;
if(! is_null($targetGroup)) { if (! is_null($targetGroup)) {
if ($targetGroup instanceof Group && $targetGroup->exists && $targetGroup->user_id == $user->id) { if ($targetGroup instanceof Group && $targetGroup->exists && $targetGroup->user_id == $user->id) {
$group = $targetGroup; $group = $targetGroup;
} } else {
else {
$group = Group::where('id', (int) $targetGroup) $group = Group::where('id', (int) $targetGroup)
->where('user_id', $user->id) ->where('user_id', $user->id)
->first(); ->first();
@ -58,7 +57,7 @@ class GroupService
$twofaccounts = TwoFAccount::find($ids); $twofaccounts = TwoFAccount::find($ids);
if ($user->cannot('updateEach', [(new TwoFAccount), $twofaccounts])) { if ($user->cannot('updateEach', [(new TwoFAccount), $twofaccounts])) {
throw new AuthorizationException(); throw new AuthorizationException;
} }
$group->twofaccounts()->saveMany($twofaccounts); $group->twofaccounts()->saveMany($twofaccounts);

View File

@ -76,7 +76,7 @@ class AegisMigrator extends Migrator
break; break;
default: default:
throw new \Exception(); throw new \Exception;
} }
$parameters['iconData'] = base64_decode($otp_parameters['icon']); $parameters['iconData'] = base64_decode($otp_parameters['icon']);
} }
@ -95,7 +95,7 @@ class AegisMigrator extends Migrator
Log::debug($exception->getMessage()); Log::debug($exception->getMessage());
// The token failed to generate a valid account so we create a fake account to be returned. // The token failed to generate a valid account so we create a fake account to be returned.
$fakeAccount = new TwoFAccount(); $fakeAccount = new TwoFAccount;
$fakeAccount->id = TwoFAccount::FAKE_ID; $fakeAccount->id = TwoFAccount::FAKE_ID;
$fakeAccount->otp_type = $otp_parameters['type'] ?? TwoFAccount::TOTP; $fakeAccount->otp_type = $otp_parameters['type'] ?? TwoFAccount::TOTP;
// Only basic fields are filled to limit the risk of another exception. // Only basic fields are filled to limit the risk of another exception.

View File

@ -28,7 +28,7 @@ class GoogleAuthMigrator extends Migrator
{ {
try { try {
$migrationData = base64_decode(urldecode(Str::replace('otpauth-migration://offline?data=', '', strval($migrationPayload)))); $migrationData = base64_decode(urldecode(Str::replace('otpauth-migration://offline?data=', '', strval($migrationPayload))));
$protobuf = new Payload(); $protobuf = new Payload;
$protobuf->mergeFromString($migrationData); $protobuf->mergeFromString($migrationData);
$otpParameters = $protobuf->getOtpParameters(); $otpParameters = $protobuf->getOtpParameters();
} catch (Exception $ex) { } catch (Exception $ex) {
@ -59,7 +59,7 @@ class GoogleAuthMigrator extends Migrator
Log::debug($exception->getMessage()); Log::debug($exception->getMessage());
// The token failed to generate a valid account so we create a fake account to be returned. // The token failed to generate a valid account so we create a fake account to be returned.
$fakeAccount = new TwoFAccount(); $fakeAccount = new TwoFAccount;
$fakeAccount->id = TwoFAccount::FAKE_ID; $fakeAccount->id = TwoFAccount::FAKE_ID;
$fakeAccount->otp_type = $fakeAccount::TOTP; $fakeAccount->otp_type = $fakeAccount::TOTP;
// Only basic fields are filled to limit the risk of another exception. // Only basic fields are filled to limit the risk of another exception.

View File

@ -37,7 +37,7 @@ class PlainTextMigrator extends Migrator
Log::debug($exception->getMessage()); Log::debug($exception->getMessage());
// The token failed to generate a valid account so we create a fake account to be returned. // The token failed to generate a valid account so we create a fake account to be returned.
$fakeAccount = new TwoFAccount(); $fakeAccount = new TwoFAccount;
$fakeAccount->id = TwoFAccount::FAKE_ID; $fakeAccount->id = TwoFAccount::FAKE_ID;
$fakeAccount->otp_type = substr($uri, 10, 4); $fakeAccount->otp_type = substr($uri, 10, 4);
// Only basic fields are filled to limit the risk of another exception. // Only basic fields are filled to limit the risk of another exception.

View File

@ -103,7 +103,7 @@ class TwoFASMigrator extends Migrator
Log::debug($exception->getMessage()); Log::debug($exception->getMessage());
// The token failed to generate a valid account so we create a fake account to be returned. // The token failed to generate a valid account so we create a fake account to be returned.
$fakeAccount = new TwoFAccount(); $fakeAccount = new TwoFAccount;
$fakeAccount->id = TwoFAccount::FAKE_ID; $fakeAccount->id = TwoFAccount::FAKE_ID;
$fakeAccount->otp_type = $otp_parameters['otp']['tokenType'] ?? TwoFAccount::TOTP; $fakeAccount->otp_type = $otp_parameters['otp']['tokenType'] ?? TwoFAccount::TOTP;
// Only basic fields are filled to limit the risk of another exception. // Only basic fields are filled to limit the risk of another exception.

View File

@ -93,7 +93,7 @@ class TwoFAuthMigrator extends Migrator
break; break;
default: default:
throw new \Exception(); throw new \Exception;
} }
$parameters['icon_file'] = base64_decode($otp_parameters['icon_file']); $parameters['icon_file'] = base64_decode($otp_parameters['icon_file']);
} }
@ -112,7 +112,7 @@ class TwoFAuthMigrator extends Migrator
Log::debug($exception->getMessage()); Log::debug($exception->getMessage());
// The token failed to generate a valid account so we create a fake account to be returned. // The token failed to generate a valid account so we create a fake account to be returned.
$fakeAccount = new TwoFAccount(); $fakeAccount = new TwoFAccount;
$fakeAccount->id = TwoFAccount::FAKE_ID; $fakeAccount->id = TwoFAccount::FAKE_ID;
$fakeAccount->otp_type = $otp_parameters['otp']['tokenType'] ?? TwoFAccount::TOTP; $fakeAccount->otp_type = $otp_parameters['otp']['tokenType'] ?? TwoFAccount::TOTP;
// Only basic fields are filled to limit the risk of another exception. // Only basic fields are filled to limit the risk of another exception.

View File

@ -40,11 +40,11 @@ class QrCodeService
public static function decode(\Illuminate\Http\UploadedFile $file) public static function decode(\Illuminate\Http\UploadedFile $file)
{ {
$qrcode = app()->make(QrReader::class, [ $qrcode = app()->make(QrReader::class, [
'imgSource' => $file->get(), 'imgSource' => $file->get(),
'sourceType' => QrReader::SOURCE_TYPE_BLOB 'sourceType' => QrReader::SOURCE_TYPE_BLOB,
]); ]);
$text = $qrcode->text(); $text = $qrcode->text();
if (! $text) { if (! $text) {
$text = $qrcode->text([ $text = $qrcode->text([

View File

@ -46,8 +46,9 @@ class TwoFAccountService
if ($affectedCount) { if ($affectedCount) {
Log::info(sprintf('TwoFAccounts with IDs #%s withdrawn', implode(',', $ids))); Log::info(sprintf('TwoFAccounts with IDs #%s withdrawn', implode(',', $ids)));
} else {
Log::info(sprintf('Cannot find TwoFAccounts to withdraw using ids #%s', implode(',', $ids)));
} }
else Log::info(sprintf('Cannot find TwoFAccounts to withdraw using ids #%s', implode(',', $ids)));
} }
/** /**

View File

@ -55,7 +55,7 @@ Route::group(['middleware' => ['rejectIfDemoMode', 'throttle:10,1', 'RejectIfSso
* that can be requested max 10 times per minute by the same IP * that can be requested max 10 times per minute by the same IP
*/ */
Route::group(['middleware' => ['guest', 'throttle:10,1']], function () { Route::group(['middleware' => ['guest', 'throttle:10,1']], function () {
Route::post('user/login', [LoginController::class, 'login'])->name('user.login')->middleware('RejectIfSsoOnlyAndNotForAdmin');; Route::post('user/login', [LoginController::class, 'login'])->name('user.login')->middleware('RejectIfSsoOnlyAndNotForAdmin');
Route::post('webauthn/login', [WebAuthnLoginController::class, 'login'])->name('webauthn.login')->middleware('RejectIfSsoOnlyAndNotForAdmin'); Route::post('webauthn/login', [WebAuthnLoginController::class, 'login'])->name('webauthn.login')->middleware('RejectIfSsoOnlyAndNotForAdmin');
Route::get('/socialite/redirect/{driver}', [SocialiteController::class, 'redirect'])->name('socialite.redirect'); Route::get('/socialite/redirect/{driver}', [SocialiteController::class, 'redirect'])->name('socialite.redirect');
@ -100,10 +100,10 @@ Route::get('refresh-csrf', function () {
}); });
Route::withoutMiddleware([ Route::withoutMiddleware([
SubstituteBindings::class, SubstituteBindings::class,
SetLanguage::class, SetLanguage::class,
CustomCreateFreshApiToken::class CustomCreateFreshApiToken::class,
])->get('/up', function () { ])->get('/up', function () {
//Event::dispatch(new DiagnosingHealth); //Event::dispatch(new DiagnosingHealth);
return view('health'); return view('health');
}); });

View File

@ -127,7 +127,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
'algorithm', 'algorithm',
'period', 'period',
'counter', 'counter',
'otp' => self::VALID_EMBEDDED_OTP_RESOURCE_STRUCTURE_FOR_TOTP 'otp' => self::VALID_EMBEDDED_OTP_RESOURCE_STRUCTURE_FOR_TOTP,
]; ];
private const VALID_COLLECTION_RESOURCE_STRUCTURE_WITH_OTP = [ private const VALID_COLLECTION_RESOURCE_STRUCTURE_WITH_OTP = [
@ -141,7 +141,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
'algorithm', 'algorithm',
'period', 'period',
'counter', 'counter',
'otp' => self::VALID_EMBEDDED_OTP_RESOURCE_STRUCTURE_FOR_TOTP 'otp' => self::VALID_EMBEDDED_OTP_RESOURCE_STRUCTURE_FOR_TOTP,
]; ];
private const VALID_EXPORT_STRUTURE = [ private const VALID_EXPORT_STRUTURE = [
@ -527,7 +527,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => $this->userGroupA->id] ['group_id' => $this->userGroupA->id]
)) ))
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => $this->userGroupA->id, 'group_id' => $this->userGroupA->id,
@ -540,7 +540,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => 9999999] ['group_id' => 9999999]
)) ))
->assertJsonValidationErrorFor('group_id'); ->assertJsonValidationErrorFor('group_id');
} }
@ -555,7 +555,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => null] ['group_id' => null]
)) ))
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => null, 'group_id' => null,
@ -572,7 +572,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => null] ['group_id' => null]
)) ))
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => $this->user->preferences['defaultGroup'], 'group_id' => $this->user->preferences['defaultGroup'],
@ -589,7 +589,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => 0] ['group_id' => 0]
)) ))
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => null, 'group_id' => null,
@ -606,7 +606,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('POST', '/api/v1/twofaccounts', array_merge( ->json('POST', '/api/v1/twofaccounts', array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => $this->userGroupB->id] ['group_id' => $this->userGroupB->id]
)) ))
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => $this->userGroupB->id, 'group_id' => $this->userGroupB->id,
@ -713,11 +713,11 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge( ->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => null] ['group_id' => null]
)) ))
->assertOk() ->assertOk()
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => null 'group_id' => null,
]) ])
->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP); ->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP);
} }
@ -730,11 +730,11 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge( ->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => 0] ['group_id' => 0]
)) ))
->assertOk() ->assertOk()
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => null 'group_id' => null,
]) ])
->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP); ->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP);
} }
@ -747,11 +747,11 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge( ->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => $this->userGroupB->id] ['group_id' => $this->userGroupB->id]
)) ))
->assertOk() ->assertOk()
->assertJsonFragment([ ->assertJsonFragment([
'group_id' => $this->userGroupB->id 'group_id' => $this->userGroupB->id,
]) ])
->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP); ->assertJsonFragment(self::JSON_FRAGMENTS_FOR_CUSTOM_TOTP);
} }
@ -762,7 +762,7 @@ class TwoFAccountControllerTest extends FeatureTestCase
$response = $this->actingAs($this->user, 'api-guard') $response = $this->actingAs($this->user, 'api-guard')
->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge( ->json('PUT', '/api/v1/twofaccounts/' . $this->twofaccountA->id, array_merge(
OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP, OtpTestData::ARRAY_OF_FULL_VALID_PARAMETERS_FOR_CUSTOM_TOTP,
['group_id' => 9999999] ['group_id' => 9999999]
)) ))
->assertJsonValidationErrorFor('group_id'); ->assertJsonValidationErrorFor('group_id');
} }

View File

@ -335,8 +335,8 @@ class UserManagerControllerTest extends FeatureTestCase
public function test_revokePATs_flushes_pats() public function test_revokePATs_flushes_pats()
{ {
Artisan::call('passport:install', [ Artisan::call('passport:install', [
'--verbose' => 2, '--verbose' => 2,
'--no-interaction' => 1 '--no-interaction' => 1,
]); ]);
$tokenRepository = app(TokenRepository::class); $tokenRepository = app(TokenRepository::class);

View File

@ -1,13 +1,12 @@
<?php declare(strict_types=1); <?php
declare(strict_types=1);
namespace Tests\Api\v1\Requests\DataProviders; namespace Tests\Api\v1\Requests\DataProviders;
final class TwoFAccountDataProvider final class TwoFAccountDataProvider
{ {
/** public static function validIdsProvider() : array
*
*/
public static function validIdsProvider(): array
{ {
return [ return [
[[ [[
@ -19,10 +18,7 @@ final class TwoFAccountDataProvider
]; ];
} }
/** public static function invalidIdsProvider() : array
*
*/
public static function invalidIdsProvider(): array
{ {
return [ return [
[[ [[
@ -64,10 +60,7 @@ final class TwoFAccountDataProvider
]; ];
} }
/** public static function validIsAdminProvider() : array
*
*/
public static function validIsAdminProvider(): array
{ {
return [ return [
[[ [[
@ -85,10 +78,7 @@ final class TwoFAccountDataProvider
]; ];
} }
/** public static function invalidIsAdminProvider() : array
*
*/
public static function invalidIsAdminProvider(): array
{ {
return [ return [
[[ [[

View File

@ -26,7 +26,7 @@ class GroupAssignRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new GroupAssignRequest(); $request = new GroupAssignRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class GroupAssignRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new GroupAssignRequest(); $request = new GroupAssignRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -59,7 +59,7 @@ class GroupAssignRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new GroupAssignRequest(); $request = new GroupAssignRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -43,7 +43,7 @@ class GroupStoreRequestTest extends FeatureTestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new GroupStoreRequest(); $request = new GroupStoreRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }

View File

@ -2,7 +2,6 @@
namespace Tests\Api\v1\Requests; namespace Tests\Api\v1\Requests;
use App\Api\v1\Requests\GroupAssignRequest;
use App\Api\v1\Requests\IconFetchRequest; use App\Api\v1\Requests\IconFetchRequest;
use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@ -27,7 +26,7 @@ class IconFetchRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new IconFetchRequest(); $request = new IconFetchRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -36,7 +35,7 @@ class IconFetchRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new IconFetchRequest(); $request = new IconFetchRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -64,7 +63,7 @@ class IconFetchRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new IconFetchRequest(); $request = new IconFetchRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -27,7 +27,7 @@ class QrCodeDecodeRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new QrCodeDecodeRequest(); $request = new QrCodeDecodeRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -36,7 +36,7 @@ class QrCodeDecodeRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new QrCodeDecodeRequest(); $request = new QrCodeDecodeRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -60,7 +60,7 @@ class QrCodeDecodeRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new QrCodeDecodeRequest(); $request = new QrCodeDecodeRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -29,7 +29,7 @@ class SettingStoreRequestTest extends FeatureTestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new SettingStoreRequest(); $request = new SettingStoreRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -38,7 +38,7 @@ class SettingStoreRequestTest extends FeatureTestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new SettingStoreRequest(); $request = new SettingStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -71,7 +71,7 @@ class SettingStoreRequestTest extends FeatureTestCase
{ {
Settings::set(self::UNIQUE_KEY, 'uniqueValue'); Settings::set(self::UNIQUE_KEY, 'uniqueValue');
$request = new SettingStoreRequest(); $request = new SettingStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class SettingUpdateRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new SettingUpdateRequest(); $request = new SettingUpdateRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class SettingUpdateRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new SettingUpdateRequest(); $request = new SettingUpdateRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -63,7 +63,7 @@ class SettingUpdateRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new SettingUpdateRequest(); $request = new SettingUpdateRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -27,7 +27,7 @@ class TwoFAccountBatchRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountBatchRequest(); $request = new TwoFAccountBatchRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -36,7 +36,7 @@ class TwoFAccountBatchRequestTest extends TestCase
#[DataProviderExternal(TwoFAccountDataProvider::class, 'validIdsProvider')] #[DataProviderExternal(TwoFAccountDataProvider::class, 'validIdsProvider')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountBatchRequest(); $request = new TwoFAccountBatchRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -46,7 +46,7 @@ class TwoFAccountBatchRequestTest extends TestCase
#[DataProviderExternal(TwoFAccountDataProvider::class, 'invalidIdsProvider')] #[DataProviderExternal(TwoFAccountDataProvider::class, 'invalidIdsProvider')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountBatchRequest(); $request = new TwoFAccountBatchRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class TwoFAccountDynamicRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountDynamicRequest(); $request = new TwoFAccountDynamicRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -34,8 +34,8 @@ class TwoFAccountDynamicRequestTest extends TestCase
#[Test] #[Test]
public function test_returns_TwoFAccountUriRequest_rules_when_has_uri_input() public function test_returns_TwoFAccountUriRequest_rules_when_has_uri_input()
{ {
$twofaccountUriRequest = new TwoFAccountUriRequest(); $twofaccountUriRequest = new TwoFAccountUriRequest;
$request = new TwoFAccountDynamicRequest(); $request = new TwoFAccountDynamicRequest;
$request->merge(['uri' => 'uristring']); $request->merge(['uri' => 'uristring']);
$this->assertEquals($twofaccountUriRequest->rules(), $request->rules()); $this->assertEquals($twofaccountUriRequest->rules(), $request->rules());
@ -44,8 +44,8 @@ class TwoFAccountDynamicRequestTest extends TestCase
#[Test] #[Test]
public function test_returns_TwoFAccountStoreRequest_rules_otherwise() public function test_returns_TwoFAccountStoreRequest_rules_otherwise()
{ {
$twofaccountStoreRequest = new TwoFAccountStoreRequest(); $twofaccountStoreRequest = new TwoFAccountStoreRequest;
$request = new TwoFAccountDynamicRequest(); $request = new TwoFAccountDynamicRequest;
$this->assertEquals($twofaccountStoreRequest->rules(), $request->rules()); $this->assertEquals($twofaccountStoreRequest->rules(), $request->rules());
} }

View File

@ -26,7 +26,7 @@ class TwoFAccountImportRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountImportRequest(); $request = new TwoFAccountImportRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class TwoFAccountImportRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountImportRequest(); $request = new TwoFAccountImportRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -57,7 +57,7 @@ class TwoFAccountImportRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountImportRequest(); $request = new TwoFAccountImportRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -27,7 +27,7 @@ class TwoFAccountIndexRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountIndexRequest(); $request = new TwoFAccountIndexRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -36,7 +36,7 @@ class TwoFAccountIndexRequestTest extends TestCase
#[DataProviderExternal(TwoFAccountDataProvider::class, 'validIdsProvider')] #[DataProviderExternal(TwoFAccountDataProvider::class, 'validIdsProvider')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountIndexRequest(); $request = new TwoFAccountIndexRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -46,7 +46,7 @@ class TwoFAccountIndexRequestTest extends TestCase
#[DataProviderExternal(TwoFAccountDataProvider::class, 'invalidIdsProvider')] #[DataProviderExternal(TwoFAccountDataProvider::class, 'invalidIdsProvider')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountIndexRequest(); $request = new TwoFAccountIndexRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class TwoFAccountReorderRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountReorderRequest(); $request = new TwoFAccountReorderRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class TwoFAccountReorderRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountReorderRequest(); $request = new TwoFAccountReorderRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -60,7 +60,7 @@ class TwoFAccountReorderRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountReorderRequest(); $request = new TwoFAccountReorderRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -28,7 +28,7 @@ class TwoFAccountStoreRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountStoreRequest(); $request = new TwoFAccountStoreRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -37,7 +37,7 @@ class TwoFAccountStoreRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountStoreRequest(); $request = new TwoFAccountStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -111,7 +111,7 @@ class TwoFAccountStoreRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountStoreRequest(); $request = new TwoFAccountStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -28,7 +28,7 @@ class TwoFAccountUpdateRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountUpdateRequest(); $request = new TwoFAccountUpdateRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -37,7 +37,7 @@ class TwoFAccountUpdateRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountUpdateRequest(); $request = new TwoFAccountUpdateRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -87,7 +87,7 @@ class TwoFAccountUpdateRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountUpdateRequest(); $request = new TwoFAccountUpdateRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class TwoFAccountUriRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new TwoFAccountUriRequest(); $request = new TwoFAccountUriRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class TwoFAccountUriRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new TwoFAccountUriRequest(); $request = new TwoFAccountUriRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -64,7 +64,7 @@ class TwoFAccountUriRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new TwoFAccountUriRequest(); $request = new TwoFAccountUriRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class UserManagerPromoteRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new UserManagerPromoteRequest(); $request = new UserManagerPromoteRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class UserManagerPromoteRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new UserManagerPromoteRequest(); $request = new UserManagerPromoteRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -66,7 +66,7 @@ class UserManagerPromoteRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new UserManagerPromoteRequest(); $request = new UserManagerPromoteRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -9,7 +9,6 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\DataProviderExternal;
use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Attributes\Test;
use Tests\FeatureTestCase; use Tests\FeatureTestCase;
@ -28,7 +27,7 @@ class UserManagerStoreRequestTest extends FeatureTestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new UserManagerStoreRequest(); $request = new UserManagerStoreRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -42,7 +41,7 @@ class UserManagerStoreRequestTest extends FeatureTestCase
'email' => 'jane@example.com', 'email' => 'jane@example.com',
]); ]);
$request = new UserManagerStoreRequest(); $request = new UserManagerStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -80,7 +79,7 @@ class UserManagerStoreRequestTest extends FeatureTestCase
'email' => 'john@example.com', 'email' => 'john@example.com',
]); ]);
$request = new UserManagerStoreRequest(); $request = new UserManagerStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -123,8 +123,8 @@ class FixServiceFieldEncryptionTest extends FeatureTestCase
Settings::set('useEncryption', true); Settings::set('useEncryption', true);
$expectedServiceName = 'myService'; $expectedServiceName = 'myService';
$twofaccounts = TwoFAccount::factory()->for($this->user)->count(3)->create([ $twofaccounts = TwoFAccount::factory()->for($this->user)->count(3)->create([
'service' => $expectedServiceName 'service' => $expectedServiceName,
]); ]);
$testedAccount = $twofaccounts[2]; $testedAccount = $twofaccounts[2];
@ -153,8 +153,8 @@ class FixServiceFieldEncryptionTest extends FeatureTestCase
Settings::set('useEncryption', true); Settings::set('useEncryption', true);
$expectedServiceName = 'myService'; $expectedServiceName = 'myService';
$twofaccounts = TwoFAccount::factory()->for($this->user)->count(3)->create([ $twofaccounts = TwoFAccount::factory()->for($this->user)->count(3)->create([
'service' => $expectedServiceName 'service' => $expectedServiceName,
]); ]);
$testedAccount = $twofaccounts[2]; $testedAccount = $twofaccounts[2];

View File

@ -3,7 +3,6 @@
namespace Tests\Feature\Console; namespace Tests\Feature\Console;
use App\Console\Commands\Install; use App\Console\Commands\Install;
use Illuminate\Support\Facades\Artisan;
use Jackiedo\DotenvEditor\DotenvEditor; use Jackiedo\DotenvEditor\DotenvEditor;
use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Attributes\Test;
@ -101,7 +100,7 @@ class InstallTest extends FeatureTestCase
{ {
$mock = $this->mock(DotenvEditor::class); $mock = $this->mock(DotenvEditor::class);
$mock->shouldReceive('load') $mock->shouldReceive('load')
->andThrow(new \Exception()); ->andThrow(new \Exception);
$this->artisan('2fauth:install') $this->artisan('2fauth:install')
->expectsOutputToContain(config('2fauth.installDocUrl')) ->expectsOutputToContain(config('2fauth.installDocUrl'))

View File

@ -21,8 +21,8 @@ class ResetDemoTest extends FeatureTestCase
public function test_reset_demo_succeeded() public function test_reset_demo_succeeded()
{ {
Artisan::call('passport:install', [ Artisan::call('passport:install', [
'--verbose' => 2, '--verbose' => 2,
'--no-interaction' => 1 '--no-interaction' => 1,
]); ]);
Config::set('2fauth.config.isDemoApp', true); Config::set('2fauth.config.isDemoApp', true);

View File

@ -426,7 +426,7 @@ class LoginTest extends FeatureTestCase
$this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD); $this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD);
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
$this->assertDatabaseHas('auth_logs', [ $this->assertDatabaseHas('auth_logs', [
@ -451,11 +451,11 @@ class LoginTest extends FeatureTestCase
$this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD); $this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD);
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
$this->assertDatabaseCount('auth_logs', 1); $this->assertDatabaseCount('auth_logs', 1);
@ -463,7 +463,7 @@ class LoginTest extends FeatureTestCase
$this->travel(16)->minutes(); $this->travel(16)->minutes();
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
$this->assertDatabaseCount('auth_logs', 2); $this->assertDatabaseCount('auth_logs', 2);
@ -490,7 +490,7 @@ class LoginTest extends FeatureTestCase
$this->travelTo(Carbon::now()->subMinutes(2)); $this->travelTo(Carbon::now()->subMinutes(2));
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
Notification::assertSentTo($user, SignedInWithNewDeviceNotification::class); Notification::assertSentTo($user, SignedInWithNewDeviceNotification::class);
@ -517,7 +517,7 @@ class LoginTest extends FeatureTestCase
$this->travelTo(Carbon::now()->subMinutes(2)); $this->travelTo(Carbon::now()->subMinutes(2));
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
Notification::assertNothingSentTo($user); Notification::assertNothingSentTo($user);
@ -541,7 +541,7 @@ class LoginTest extends FeatureTestCase
$this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD); $this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD);
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
Notification::assertNothingSentTo($user); Notification::assertNothingSentTo($user);

View File

@ -92,12 +92,12 @@ class PasswordControllerTest extends FeatureTestCase
$this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD); $this->app['auth']->shouldUse(self::REVERSE_PROXY_GUARD);
$response = $this->json('PATCH', '/user/password', [ $response = $this->json('PATCH', '/user/password', [
'currentPassword' => self::NEW_PASSWORD, 'currentPassword' => self::NEW_PASSWORD,
'password' => self::NEW_PASSWORD, 'password' => self::NEW_PASSWORD,
'password_confirmation' => self::NEW_PASSWORD, 'password_confirmation' => self::NEW_PASSWORD,
], [ ], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]) ])
->assertStatus(405) ->assertStatus(405)
->assertJsonStructure([ ->assertJsonStructure([
'message', 'message',

View File

@ -116,13 +116,13 @@ class SocialiteControllerTest extends FeatureTestCase
{ {
return [ return [
'TOKEN_URL' => [ 'TOKEN_URL' => [
'token_url' 'token_url',
], ],
'AUTHORIZE_URL' => [ 'AUTHORIZE_URL' => [
'authorize_url' 'authorize_url',
], ],
'USERINFO_URL' => [ 'USERINFO_URL' => [
'userinfo_url' 'userinfo_url',
], ],
]; ];
} }
@ -286,7 +286,7 @@ class SocialiteControllerTest extends FeatureTestCase
$newSocialiteUser->email = 'jane@provider.com'; $newSocialiteUser->email = 'jane@provider.com';
Socialite::shouldReceive('driver->user') Socialite::shouldReceive('driver->user')
->andThrow(new Exception()); ->andThrow(new Exception);
$response = $this->get('/socialite/callback/github', ['driver' => 'github']); $response = $this->get('/socialite/callback/github', ['driver' => 'github']);

View File

@ -107,7 +107,7 @@ class WebAuthnDeviceLostControllerTest extends FeatureTestCase
{ {
$mock = $this->mock(\App\Extensions\WebauthnCredentialBroker::class)->makePartial(); $mock = $this->mock(\App\Extensions\WebauthnCredentialBroker::class)->makePartial();
$mock->shouldReceive('getUser') $mock->shouldReceive('getUser')
->andReturn(new \Illuminate\Foundation\Auth\User()); ->andReturn(new \Illuminate\Foundation\Auth\User);
Notification::fake(); Notification::fake();

View File

@ -204,7 +204,7 @@ class WebAuthnLoginControllerTest extends FeatureTestCase
{ {
Notification::fake(); Notification::fake();
$this->user['preferences->notifyOnNewAuthDevice'] =01; $this->user['preferences->notifyOnNewAuthDevice'] = 0;
$this->user->save(); $this->user->save();
$this->createWebauthnCredential(self::CREDENTIAL_ID_ALT, $this->user->id, self::USER_ID_ALT); $this->createWebauthnCredential(self::CREDENTIAL_ID_ALT, $this->user->id, self::USER_ID_ALT);

View File

@ -39,7 +39,7 @@ class WebAuthnRegisterControllerTest extends FeatureTestCase
$request = $this->mock(AttestationRequest::class); $request = $this->mock(AttestationRequest::class);
$request->expects('fastRegistration')->andReturnSelf(); $request->expects('fastRegistration')->andReturnSelf();
$request->expects('toCreate')->andReturn(new JsonTransport()); $request->expects('toCreate')->andReturn(new JsonTransport);
$this->actingAs($this->user, 'web-guard') $this->actingAs($this->user, 'web-guard')
->json('POST', '/webauthn/register/options') ->json('POST', '/webauthn/register/options')
@ -54,7 +54,7 @@ class WebAuthnRegisterControllerTest extends FeatureTestCase
$request = $this->mock(AttestationRequest::class); $request = $this->mock(AttestationRequest::class);
$request->expects('secureRegistration')->andReturnSelf(); $request->expects('secureRegistration')->andReturnSelf();
$request->expects('toCreate')->andReturn(new JsonTransport()); $request->expects('toCreate')->andReturn(new JsonTransport);
$this->actingAs($this->user, 'web-guard') $this->actingAs($this->user, 'web-guard')
->json('POST', '/webauthn/register/options') ->json('POST', '/webauthn/register/options')

View File

@ -28,8 +28,7 @@ class AdminOnlyMiddlewareTest extends FeatureTestCase
$request = Request::create('/admin', 'GET'); $request = Request::create('/admin', 'GET');
$middleware = new AdminOnly; $middleware = new AdminOnly;
$response = $middleware->handle($request, function () { $response = $middleware->handle($request, function () {});
});
} }
#[Test] #[Test]
@ -45,8 +44,7 @@ class AdminOnlyMiddlewareTest extends FeatureTestCase
$request = Request::create('/admin', 'GET'); $request = Request::create('/admin', 'GET');
$middleware = new AdminOnly; $middleware = new AdminOnly;
$response = $middleware->handle($request, function () { $response = $middleware->handle($request, function () {});
});
$this->assertNull($response); $this->assertNull($response);
} }

View File

@ -71,7 +71,7 @@ class AuthenticateMiddlewareTest extends FeatureTestCase
$user->save(); $user->save();
$this->json('GET', '/api/v1/groups', [], [ $this->json('GET', '/api/v1/groups', [], [
'HTTP_REMOTE_USER' => self::USER_NAME, 'HTTP_REMOTE_USER' => self::USER_NAME,
]); ]);
$this->assertEquals($lang, App::getLocale()); $this->assertEquals($lang, App::getLocale());

View File

@ -36,7 +36,7 @@ class RejectIfSsoOnlyAndNotForAdminMiddlewareTest extends FeatureTestCase
$this->user = User::factory()->create(); $this->user = User::factory()->create();
$this->admin = User::factory()->administrator()->create([ $this->admin = User::factory()->administrator()->create([
'password' => self::PASSWORD 'password' => self::PASSWORD,
]); ]);
Settings::set('useSsoOnly', true); Settings::set('useSsoOnly', true);

View File

@ -121,7 +121,7 @@ class SetLanguageMiddlewareTest extends TestCase
#[Test] #[Test]
public function test_user_preference_overrides_header() public function test_user_preference_overrides_header()
{ {
$this->user = new User; $this->user = new User;
$this->user['preferences->lang'] = self::IS_FR; $this->user['preferences->lang'] = self::IS_FR;
$this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => self::IS_DE]); $this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => self::IS_DE]);
@ -132,7 +132,7 @@ class SetLanguageMiddlewareTest extends TestCase
#[Test] #[Test]
public function test_user_preference_applies_header() public function test_user_preference_applies_header()
{ {
$this->user = new User; $this->user = new User;
$this->user['preferences->lang'] = 'browser'; $this->user['preferences->lang'] = 'browser';
$this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => self::IS_DE]); $this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => self::IS_DE]);
@ -145,7 +145,7 @@ class SetLanguageMiddlewareTest extends TestCase
{ {
Config::set('app.fallback_locale', self::IS_DE); Config::set('app.fallback_locale', self::IS_DE);
$this->user = new User; $this->user = new User;
$this->user['preferences->lang'] = self::IS_FR; $this->user['preferences->lang'] = self::IS_FR;
$this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => null]); $this->actingAs($this->user)->json('GET', '/', [], ['Accept-Language' => null]);

View File

@ -22,7 +22,7 @@ class LoginRequestTest extends FeatureTestCase
#[Test] #[Test]
public function test_user_is_authorized() public function test_user_is_authorized()
{ {
$request = new LoginRequest(); $request = new LoginRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class LoginRequestTest extends FeatureTestCase
'email' => 'JOHN.DOE@example.com', 'email' => 'JOHN.DOE@example.com',
]); ]);
$request = new LoginRequest(); $request = new LoginRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -66,7 +66,7 @@ class LoginRequestTest extends FeatureTestCase
'email' => 'JOHN.DOE@example.com', 'email' => 'JOHN.DOE@example.com',
]); ]);
$request = new LoginRequest(); $request = new LoginRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class UserDeleteRequestTest extends FeatureTestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new UserDeleteRequest(); $request = new UserDeleteRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class UserDeleteRequestTest extends FeatureTestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new UserDeleteRequest(); $request = new UserDeleteRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -57,7 +57,7 @@ class UserDeleteRequestTest extends FeatureTestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new UserDeleteRequest(); $request = new UserDeleteRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class UserPatchPwdRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new UserPatchPwdRequest(); $request = new UserPatchPwdRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class UserPatchPwdRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new UserPatchPwdRequest(); $request = new UserPatchPwdRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -59,7 +59,7 @@ class UserPatchPwdRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new UserPatchPwdRequest(); $request = new UserPatchPwdRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -22,7 +22,7 @@ class UserStoreRequestTest extends FeatureTestCase
#[Test] #[Test]
public function test_user_is_authorized() public function test_user_is_authorized()
{ {
$request = new UserStoreRequest(); $request = new UserStoreRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -36,7 +36,7 @@ class UserStoreRequestTest extends FeatureTestCase
'email' => 'jane@example.com', 'email' => 'jane@example.com',
]); ]);
$request = new UserStoreRequest(); $request = new UserStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -72,7 +72,7 @@ class UserStoreRequestTest extends FeatureTestCase
'email' => 'john@example.com', 'email' => 'john@example.com',
]); ]);
$request = new UserStoreRequest(); $request = new UserStoreRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -28,7 +28,7 @@ class UserUpdateRequestTest extends FeatureTestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new UserUpdateRequest(); $request = new UserUpdateRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }

View File

@ -22,7 +22,7 @@ class WebauthnAssertedRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new WebauthnAssertedRequest(); $request = new WebauthnAssertedRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -53,7 +53,7 @@ class WebauthnAssertedRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new WebauthnAssertedRequest(); $request = new WebauthnAssertedRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -26,7 +26,7 @@ class WebauthnRenameRequestTest extends TestCase
->once() ->once()
->andReturn(true); ->andReturn(true);
$request = new WebauthnRenameRequest(); $request = new WebauthnRenameRequest;
$this->assertTrue($request->authorize()); $this->assertTrue($request->authorize());
} }
@ -35,7 +35,7 @@ class WebauthnRenameRequestTest extends TestCase
#[DataProvider('provideValidData')] #[DataProvider('provideValidData')]
public function test_valid_data(array $data) : void public function test_valid_data(array $data) : void
{ {
$request = new WebauthnRenameRequest(); $request = new WebauthnRenameRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertFalse($validator->fails()); $this->assertFalse($validator->fails());
@ -57,7 +57,7 @@ class WebauthnRenameRequestTest extends TestCase
#[DataProvider('provideInvalidData')] #[DataProvider('provideInvalidData')]
public function test_invalid_data(array $data) : void public function test_invalid_data(array $data) : void
{ {
$request = new WebauthnRenameRequest(); $request = new WebauthnRenameRequest;
$validator = Validator::make($data, $request->rules()); $validator = Validator::make($data, $request->rules());
$this->assertTrue($validator->fails()); $this->assertTrue($validator->fails());

View File

@ -143,7 +143,7 @@ class SystemControllerTest extends FeatureTestCase
{ {
Notification::fake(); Notification::fake();
$this->mock(Dispatcher::class)->shouldReceive('send')->andThrow(new Exception()); $this->mock(Dispatcher::class)->shouldReceive('send')->andThrow(new Exception);
$response = $this->actingAs($this->admin, 'web-guard') $response = $this->actingAs($this->admin, 'web-guard')
->json('POST', '/system/test-email', []); ->json('POST', '/system/test-email', []);

View File

@ -17,7 +17,7 @@ class AuthLogModelTest extends FeatureTestCase
#[Test] #[Test]
public function test_equals_returns_true() public function test_equals_returns_true()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$lastAuthLog = AuthLog::factory()->for($user, 'authenticatable')->create(); $lastAuthLog = AuthLog::factory()->for($user, 'authenticatable')->create();
$this->assertTrue($lastAuthLog->equals($lastAuthLog)); $this->assertTrue($lastAuthLog->equals($lastAuthLog));

View File

@ -108,8 +108,8 @@ class UserModelTest extends FeatureTestCase
public function test_delete_removes_user_data() public function test_delete_removes_user_data()
{ {
Artisan::call('passport:install', [ Artisan::call('passport:install', [
'--verbose' => 2, '--verbose' => 2,
'--no-interaction' => 1 '--no-interaction' => 1,
]); ]);
$user = User::factory()->create(); $user = User::factory()->create();
@ -234,10 +234,10 @@ class UserModelTest extends FeatureTestCase
#[Test] #[Test]
public function test_authentications_returns_user_auth_logs_only() public function test_authentications_returns_user_auth_logs_only()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$anotherUser = User::factory()->create(); $anotherUser = User::factory()->create();
$userAuthLog = AuthLog::factory()->daysAgo(10)->for($user, 'authenticatable')->create(); $userAuthLog = AuthLog::factory()->daysAgo(10)->for($user, 'authenticatable')->create();
AuthLog::factory()->daysAgo(5)->for($anotherUser, 'authenticatable')->create(); AuthLog::factory()->daysAgo(5)->for($anotherUser, 'authenticatable')->create();
$authentications = $user->authentications()->get(); $authentications = $user->authentications()->get();
@ -293,7 +293,7 @@ class UserModelTest extends FeatureTestCase
#[Test] #[Test]
public function test_latestAuthentication_returns_user_latest_auth_logs_only() public function test_latestAuthentication_returns_user_latest_auth_logs_only()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$anotherUser = User::factory()->create(); $anotherUser = User::factory()->create();
$userAuthLog = AuthLog::factory()->duringLastThreeMonth()->for($user, 'authenticatable')->create(); $userAuthLog = AuthLog::factory()->duringLastThreeMonth()->for($user, 'authenticatable')->create();
@ -309,7 +309,7 @@ class UserModelTest extends FeatureTestCase
public function test_lastLoginAt_returns_user_last_auth_date() public function test_lastLoginAt_returns_user_last_auth_date()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$now = now(); $now = now();
$tenDaysAgoAuthLog = AuthLog::factory()->daysAgo(10)->for($user, 'authenticatable')->create(); $tenDaysAgoAuthLog = AuthLog::factory()->daysAgo(10)->for($user, 'authenticatable')->create();
$fiveDaysAgoAuthLog = AuthLog::factory()->daysAgo(5)->for($user, 'authenticatable')->create(); $fiveDaysAgoAuthLog = AuthLog::factory()->daysAgo(5)->for($user, 'authenticatable')->create();
@ -335,7 +335,7 @@ class UserModelTest extends FeatureTestCase
public function test_lastSuccessfulLoginAt_returns_user_last_successful_login_date() public function test_lastSuccessfulLoginAt_returns_user_last_successful_login_date()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$now = now(); $now = now();
AuthLog::factory()->at($now)->for($user, 'authenticatable')->create(); AuthLog::factory()->at($now)->for($user, 'authenticatable')->create();
$lastSuccessfulLoginAt = $user->lastSuccessfulLoginAt(); $lastSuccessfulLoginAt = $user->lastSuccessfulLoginAt();
@ -347,7 +347,7 @@ class UserModelTest extends FeatureTestCase
public function test_lastSuccessfulLoginAt_returns_null_if_user_has_no_successful_login() public function test_lastSuccessfulLoginAt_returns_null_if_user_has_no_successful_login()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$now = now(); $now = now();
AuthLog::factory()->at($now)->failedLogin()->for($user, 'authenticatable')->create(); AuthLog::factory()->at($now)->failedLogin()->for($user, 'authenticatable')->create();
$lastSuccessfulLoginAt = $user->lastSuccessfulLoginAt(); $lastSuccessfulLoginAt = $user->lastSuccessfulLoginAt();
@ -401,12 +401,12 @@ class UserModelTest extends FeatureTestCase
#[Test] #[Test]
public function test_previousLoginAt_returns_user_last_auth_date() public function test_previousLoginAt_returns_user_last_auth_date()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$now = now(); $now = now();
$yesterday = now()->subDay(); $yesterday = now()->subDay();
$yesterdayAuthLog = AuthLog::factory()->at($yesterday)->for($user, 'authenticatable')->create(); $yesterdayAuthLog = AuthLog::factory()->at($yesterday)->for($user, 'authenticatable')->create();
$lastAuthLog = AuthLog::factory()->at($now)->for($user, 'authenticatable')->create(); $lastAuthLog = AuthLog::factory()->at($now)->for($user, 'authenticatable')->create();
$previousLoginAt = $user->previousLoginAt(); $previousLoginAt = $user->previousLoginAt();
@ -426,7 +426,7 @@ class UserModelTest extends FeatureTestCase
#[Test] #[Test]
public function test_previousLoginIp_returns_user_last_auth_ip() public function test_previousLoginIp_returns_user_last_auth_ip()
{ {
$user = User::factory()->create(); $user = User::factory()->create();
$yesterday = now()->subDay(); $yesterday = now()->subDay();
AuthLog::factory()->for($user, 'authenticatable')->create(); AuthLog::factory()->for($user, 'authenticatable')->create();
@ -446,6 +446,4 @@ class UserModelTest extends FeatureTestCase
$this->assertNull($previousLoginIp); $this->assertNull($previousLoginIp);
} }
} }

View File

@ -31,7 +31,6 @@ class FailedLoginNotificationTest extends FeatureTestCase
*/ */
protected $failedLogin; protected $failedLogin;
public function setUp() : void public function setUp() : void
{ {
parent::setUp(); parent::setUp();
@ -40,7 +39,7 @@ class FailedLoginNotificationTest extends FeatureTestCase
AuthLog::factory()->for($this->user, 'authenticatable')->failedLogin()->create(); AuthLog::factory()->for($this->user, 'authenticatable')->failedLogin()->create();
$this->authLog = AuthLog::first(); $this->authLog = AuthLog::first();
$this->failedLogin = new FailedLoginNotification($this->authLog); $this->failedLogin = new FailedLoginNotification($this->authLog);
} }
@ -78,5 +77,4 @@ class FailedLoginNotificationTest extends FeatureTestCase
$mail $mail
); );
} }
} }

View File

@ -31,7 +31,6 @@ class SignedInWithNewDeviceNotificationTest extends FeatureTestCase
*/ */
protected $signedInWithNewDevice; protected $signedInWithNewDevice;
public function setUp() : void public function setUp() : void
{ {
parent::setUp(); parent::setUp();
@ -40,7 +39,7 @@ class SignedInWithNewDeviceNotificationTest extends FeatureTestCase
AuthLog::factory()->for($this->user, 'authenticatable')->failedLogin()->create(); AuthLog::factory()->for($this->user, 'authenticatable')->failedLogin()->create();
$this->authLog = AuthLog::first(); $this->authLog = AuthLog::first();
$this->signedInWithNewDevice = new SignedInWithNewDeviceNotification($this->authLog); $this->signedInWithNewDevice = new SignedInWithNewDeviceNotification($this->authLog);
} }
@ -77,5 +76,4 @@ class SignedInWithNewDeviceNotificationTest extends FeatureTestCase
$mail $mail
); );
} }
} }

View File

@ -25,12 +25,11 @@ class TestEmailSettingNotificationTest extends FeatureTestCase
*/ */
protected $testEmailSettingNotification; protected $testEmailSettingNotification;
public function setUp() : void public function setUp() : void
{ {
parent::setUp(); parent::setUp();
$this->user = User::factory()->create(); $this->user = User::factory()->create();
$this->testEmailSettingNotification = new TestEmailSettingNotification('test_token'); $this->testEmailSettingNotification = new TestEmailSettingNotification('test_token');
} }

View File

@ -30,7 +30,7 @@ class WebauthnRecoveryNotificationTest extends FeatureTestCase
{ {
parent::setUp(); parent::setUp();
$this->user = User::factory()->create(); $this->user = User::factory()->create();
$this->webauthnRecoveryNotification = new WebauthnRecoveryNotification('test_token'); $this->webauthnRecoveryNotification = new WebauthnRecoveryNotification('test_token');
} }
@ -77,5 +77,4 @@ class WebauthnRecoveryNotificationTest extends FeatureTestCase
$mail $mail
); );
} }
} }

View File

@ -4,8 +4,8 @@ namespace Tests\Feature;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;
use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\Attributes\Test; use PHPUnit\Framework\Attributes\Test;
@ -15,6 +15,7 @@ use Tests\FeatureTestCase;
class RouteTest extends FeatureTestCase class RouteTest extends FeatureTestCase
{ {
const API_ROUTE_PREFIX = 'api/v1'; const API_ROUTE_PREFIX = 'api/v1';
const API_MIDDLEWARE = 'api.v1'; const API_MIDDLEWARE = 'api.v1';
#[Test] #[Test]
@ -61,9 +62,7 @@ class RouteTest extends FeatureTestCase
public static function wherePatternProvider() public static function wherePatternProvider()
{ {
return [ return [
'SETTING_NAME' => ['settingName'] 'SETTING_NAME' => ['settingName'],
]; ];
} }
} }

View File

@ -165,8 +165,8 @@ class GroupServiceTest extends FeatureTestCase
#[Test] #[Test]
public function test_setUser_sets_groups_user() public function test_setUser_sets_groups_user()
{ {
$this->groupOne = Group::factory()->create(); $this->groupOne = Group::factory()->create();
$this->groupTwo = Group::factory()->create(); $this->groupTwo = Group::factory()->create();
$this->assertEquals(null, $this->groupOne->user_id); $this->assertEquals(null, $this->groupOne->user_id);
$this->assertEquals(null, $this->groupTwo->user_id); $this->assertEquals(null, $this->groupTwo->user_id);

View File

@ -39,7 +39,7 @@ class LogoServiceTest extends TestCase
Storage::fake('icons'); Storage::fake('icons');
Storage::fake('logos'); Storage::fake('logos');
$logoService = new LogoService(); $logoService = new LogoService;
$icon = $logoService->getIcon('twitter'); $icon = $logoService->getIcon('twitter');
$this->assertNotNull($icon); $this->assertNotNull($icon);
@ -56,7 +56,7 @@ class LogoServiceTest extends TestCase
Storage::fake('icons'); Storage::fake('icons');
Storage::fake('logos'); Storage::fake('logos');
$logoService = new LogoService(); $logoService = new LogoService;
$icon = $logoService->getIcon('twitter'); $icon = $logoService->getIcon('twitter');
@ -75,7 +75,7 @@ class LogoServiceTest extends TestCase
Storage::fake('icons'); Storage::fake('icons');
Storage::fake('logos'); Storage::fake('logos');
$logoService = new LogoService(); $logoService = new LogoService;
$icon = $logoService->getIcon('twitter'); $icon = $logoService->getIcon('twitter');
@ -85,7 +85,7 @@ class LogoServiceTest extends TestCase
#[Test] #[Test]
public function test_getIcon_returns_null_when_no_logo_exists() public function test_getIcon_returns_null_when_no_logo_exists()
{ {
$logoService = new LogoService(); $logoService = new LogoService;
$icon = $logoService->getIcon('no_logo_should_exists_with_this_name'); $icon = $logoService->getIcon('no_logo_should_exists_with_this_name');
@ -105,7 +105,7 @@ class LogoServiceTest extends TestCase
Storage::fake('icons'); Storage::fake('icons');
Storage::fake('logos'); Storage::fake('logos');
$logoService = new LogoService(); $logoService = new LogoService;
$icon = $logoService->getIcon('twitter'); $icon = $logoService->getIcon('twitter');
$this->assertNull($icon); $this->assertNull($icon);

View File

@ -66,27 +66,24 @@ class QrCodeServiceTest extends FeatureTestCase
// QrReader is a final class, so we need to mock it here with a new object instance // QrReader is a final class, so we need to mock it here with a new object instance
// to then bind it to the container // to then bind it to the container
$fileContent = LocalFile::fake()->validQrcode()->get(); $fileContent = LocalFile::fake()->validQrcode()->get();
$qrReader = \Mockery::mock(new QrReader($fileContent, QrReader::SOURCE_TYPE_BLOB))->makePartial(); $qrReader = \Mockery::mock(new QrReader($fileContent, QrReader::SOURCE_TYPE_BLOB))->makePartial();
$qrReader->shouldReceive('text')->andReturn(''); $qrReader->shouldReceive('text')->andReturn('');
$qrReader->shouldReceive('getError')->andReturn($exception); $qrReader->shouldReceive('getError')->andReturn($exception);
$this->app->bind(QrReader::class, function() use($qrReader) { $this->app->bind(QrReader::class, function () use ($qrReader) {
return $qrReader; return $qrReader;
}); });
QrCode::decode(LocalFile::fake()->validQrcode()); QrCode::decode(LocalFile::fake()->validQrcode());
} }
/**
*
*/
public static function QrReaderExceptionProvider() public static function QrReaderExceptionProvider()
{ {
return [ return [
'NotFoundException' => [new NotFoundException()], 'NotFoundException' => [new NotFoundException],
'FormatException' => [new FormatException()], 'FormatException' => [new FormatException],
'ChecksumException' => [new ChecksumException()], 'ChecksumException' => [new ChecksumException],
'default' => [new Exception()], 'default' => [new Exception],
]; ];
} }
} }

View File

@ -337,7 +337,7 @@ class SettingServiceTest extends FeatureTestCase
Cache::shouldReceive('remember') Cache::shouldReceive('remember')
->andReturn(collect([])); ->andReturn(collect([]));
$settingService = new SettingService(); $settingService = new SettingService;
Cache::shouldHaveReceived('remember'); Cache::shouldHaveReceived('remember');
} }
@ -348,7 +348,7 @@ class SettingServiceTest extends FeatureTestCase
Cache::shouldReceive('remember', 'put') Cache::shouldReceive('remember', 'put')
->andReturn(collect([]), true); ->andReturn(collect([]), true);
$settingService = new SettingService(); $settingService = new SettingService;
$settingService->set(self::SETTING_NAME, self::SETTING_VALUE_STRING); $settingService->set(self::SETTING_NAME, self::SETTING_VALUE_STRING);
Cache::shouldHaveReceived('put'); Cache::shouldHaveReceived('put');
@ -360,7 +360,7 @@ class SettingServiceTest extends FeatureTestCase
Cache::shouldReceive('remember', 'put') Cache::shouldReceive('remember', 'put')
->andReturn(collect([]), true); ->andReturn(collect([]), true);
$settingService = new SettingService(); $settingService = new SettingService;
$settingService->delete(self::SETTING_NAME); $settingService->delete(self::SETTING_NAME);
Cache::shouldHaveReceived('put'); Cache::shouldHaveReceived('put');

View File

@ -325,8 +325,8 @@ class TwoFAccountServiceTest extends FeatureTestCase
#[Test] #[Test]
public function test_setUser_sets_twofaccounts_user() public function test_setUser_sets_twofaccounts_user()
{ {
$twofaccountA = TwoFAccount::factory()->create(); $twofaccountA = TwoFAccount::factory()->create();
$twofaccountB = TwoFAccount::factory()->create(); $twofaccountB = TwoFAccount::factory()->create();
$this->assertEquals(null, $twofaccountA->user_id); $this->assertEquals(null, $twofaccountA->user_id);
$this->assertEquals(null, $twofaccountB->user_id); $this->assertEquals(null, $twofaccountB->user_id);

View File

@ -45,6 +45,4 @@ class ViewTest extends FeatureTestCase
Event::assertDispatched(ScanForNewReleaseCalled::class); Event::assertDispatched(ScanForNewReleaseCalled::class);
} }
} }

View File

@ -4,7 +4,6 @@ namespace Tests;
use Illuminate\Foundation\Testing\LazilyRefreshDatabase; use Illuminate\Foundation\Testing\LazilyRefreshDatabase;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase; use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use Illuminate\Support\Facades\Artisan;
abstract class FeatureTestCase extends BaseTestCase abstract class FeatureTestCase extends BaseTestCase
{ {

View File

@ -34,7 +34,7 @@ class GroupControllerTest extends TestCase
{ {
parent::setUp(); parent::setUp();
$this->user = new User(); $this->user = new User;
// We do not use $this->actingAs($this->user) to prevent intelephense // We do not use $this->actingAs($this->user) to prevent intelephense
// static analysis error. Dumb, but I don't like errors... // static analysis error. Dumb, but I don't like errors...
@ -48,7 +48,7 @@ class GroupControllerTest extends TestCase
$user = Mockery::mock(User::class); $user = Mockery::mock(User::class);
$request = Mockery::mock(Request::class); $request = Mockery::mock(Request::class);
$groups = Group::factory()->count(3)->make(); $groups = Group::factory()->count(3)->make();
$controller = new GroupController(); $controller = new GroupController;
$user->shouldReceive('groups->withCount->get') $user->shouldReceive('groups->withCount->get')
->once() ->once()
@ -70,7 +70,7 @@ class GroupControllerTest extends TestCase
public function test_store_uses_validated_data_and_returns_api_resource() public function test_store_uses_validated_data_and_returns_api_resource()
{ {
$request = Mockery::mock(GroupStoreRequest::class); $request = Mockery::mock(GroupStoreRequest::class);
$controller = new GroupController(); $controller = new GroupController;
$group = Group::factory()->for($this->user)->make(); $group = Group::factory()->for($this->user)->make();
$validated = ['name' => $group->name]; $validated = ['name' => $group->name];

View File

@ -17,7 +17,7 @@ class VisitedByProxyUserTest extends TestCase
#[Test] #[Test]
public function test_event_constructor() public function test_event_constructor()
{ {
$user = new User(); $user = new User;
$event = new VisitedByProxyUser($user); $event = new VisitedByProxyUser($user);
$this->assertSame($user, $event->user); $this->assertSame($user, $event->user);

View File

@ -36,7 +36,7 @@ class HandlerTest extends TestCase
$method = $class->getMethod('render'); $method = $class->getMethod('render');
$method->setAccessible(true); $method->setAccessible(true);
$response = $method->invokeArgs($instance, [new Request(), $this->createMock($exception)]); $response = $method->invokeArgs($instance, [new Request, $this->createMock($exception)]);
$this->assertInstanceOf(JsonResponse::class, $response); $this->assertInstanceOf(JsonResponse::class, $response);
@ -93,7 +93,7 @@ class HandlerTest extends TestCase
$method = $class->getMethod('render'); $method = $class->getMethod('render');
$method->setAccessible(true); $method->setAccessible(true);
$response = $method->invokeArgs($instance, [new Request(), $this->createMock($exception)]); $response = $method->invokeArgs($instance, [new Request, $this->createMock($exception)]);
$this->assertInstanceOf(JsonResponse::class, $response); $this->assertInstanceOf(JsonResponse::class, $response);
@ -131,7 +131,7 @@ class HandlerTest extends TestCase
$mockException = $this->createMock(\Illuminate\Auth\AuthenticationException::class); $mockException = $this->createMock(\Illuminate\Auth\AuthenticationException::class);
$mockException->method('guards')->willReturn(['web-guard']); $mockException->method('guards')->willReturn(['web-guard']);
$response = $method->invokeArgs($instance, [new Request(), $mockException]); $response = $method->invokeArgs($instance, [new Request, $mockException]);
$this->assertInstanceOf(JsonResponse::class, $response); $this->assertInstanceOf(JsonResponse::class, $response);
@ -154,7 +154,7 @@ class HandlerTest extends TestCase
$mockException = $this->createMock(\Illuminate\Auth\AuthenticationException::class); $mockException = $this->createMock(\Illuminate\Auth\AuthenticationException::class);
$mockException->method('guards')->willReturn(['reverse-proxy-guard']); $mockException->method('guards')->willReturn(['reverse-proxy-guard']);
$response = $method->invokeArgs($instance, [new Request(), $mockException]); $response = $method->invokeArgs($instance, [new Request, $mockException]);
$this->assertInstanceOf(JsonResponse::class, $response); $this->assertInstanceOf(JsonResponse::class, $response);
@ -176,7 +176,7 @@ class HandlerTest extends TestCase
$mockException = $this->createMock(\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException::class); $mockException = $this->createMock(\Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException::class);
$response = $method->invokeArgs($instance, [new Request(), $mockException]); $response = $method->invokeArgs($instance, [new Request, $mockException]);
$this->assertInstanceOf(JsonResponse::class, $response); $this->assertInstanceOf(JsonResponse::class, $response);

Some files were not shown because too many files have changed in this diff Show More