diff --git a/app/Http/Controllers/RemoteOidcController.php b/app/Http/Controllers/RemoteOidcController.php index e05b620b2..aac3a22b6 100644 --- a/app/Http/Controllers/RemoteOidcController.php +++ b/app/Http/Controllers/RemoteOidcController.php @@ -121,9 +121,11 @@ class RemoteOidcController extends Controller return Auth::guard(); } - private function ensure_valid_username($starting_username) { + private function ensure_valid_username($starting_username) + { $starting_username = explode('@', $starting_username)[0]; $temp_username = preg_replace('/[^a-z0-9_]+/i', '', $starting_username); + return substr($temp_username, 0, 30); } } diff --git a/tests/Feature/RemoteOidcTest.php b/tests/Feature/RemoteOidcTest.php index 83ab65855..537e68bd2 100644 --- a/tests/Feature/RemoteOidcTest.php +++ b/tests/Feature/RemoteOidcTest.php @@ -5,12 +5,14 @@ namespace Tests\Feature; use App\Models\User; use App\Models\UserOidcMapping; use App\Services\UserOidcService; +use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; use League\OAuth2\Client\Provider\GenericResourceOwner; use League\OAuth2\Client\Token\AccessToken; use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration; use Mockery\MockInterface; +use PHPUnit\Framework\Attributes\Test; use Tests\TestCase; class RemoteOidcTest extends TestCase @@ -128,15 +130,15 @@ class RemoteOidcTest extends TestCase config(['remote-auth.oidc.field_username' => 'preferred_username']); $dataset = [ - 'john.doe@domain.com' => 'johndoe', - 'test+user@part1@domain.com' => 'testuser', - 'user!#$%^&*()_test' => 'user_test', - 'jean-luc.picard' => 'jeanlucpicard', + 'john.doe@domain.com' => 'johndoe', + 'test+user@part1@domain.com' => 'testuser', + 'user!#$%^&*()_test' => 'user_test', + 'jean-luc.picard' => 'jeanlucpicard', 'supercalifragilisticexpialidøcious@test.com' => 'supercalifragilisticexpialidci', - 'hélène_renåud' => 'hlne_renud', - '123456789' => '123456789', - ' user _ name ' => 'user_name', - 'foo+bar@sub.domain.co.uk' => 'foobar', + 'hélène_renåud' => 'hlne_renud', + '123456789' => '123456789', + ' user _ name ' => 'user_name', + 'foo+bar@sub.domain.co.uk' => 'foobar', ]; foreach ($dataset as $input => $expected) { @@ -146,10 +148,10 @@ class RemoteOidcTest extends TestCase $originalUserCount = User::count(); $oauthData = [ - 'sub' => str_random(10), - 'name' => fake()->name, + 'sub' => Str::random(10), + 'name' => fake()->name, 'preferred_username' => $input, - 'email' => fake()->unique()->freeEmail, + 'email' => fake()->unique()->freeEmail, ]; $this->partialMock(UserOidcService::class, function (MockInterface $mock) use ($oauthData) { @@ -167,7 +169,7 @@ class RemoteOidcTest extends TestCase $this->assertNotNull($mappedUser, "Mapping not found for : {$input}"); $this->assertEquals($expected, $mappedUser->user->username, "Username not valid : {$input}"); - $this->assertDatabaseCount('users', $originalUserCount+1); + $this->assertDatabaseCount('users', $originalUserCount + 1); } } }