Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

PetroGromovo's avatar

Why making phpunit register tests for lumen app I got error?

Making phpunit tests for lumen app I have register method, which on success call login method and returns token :

public function register(Request $request)
{
    $site_name         = config('app.site_name', '');
    $support_signature = config('app.support_signature', '');
    $login_url         = 'api/v1/login';


    $validator = Validator::make($request->all(), User::getValidationRulesArray(null, ['status', 'has_debts']),
        User::getValidationMessagesArray());
    if ($validator->fails()) {
        return $this->sendErrorResponse('User registration validation errors', $validator->errors(),
            HTTP_RESPONSE_UNPROCESSABLE_ENTITY);
    }

    $password = $this->requestData['password'];
    DB::beginTransaction();
    try {
        $this->requestData['password'] = Hash::make($password);
        $this->requestData['status']   = 'A'; // Active
        $user                          = User::create($this->requestData);
        \Log::info(varDump($user, ' -12 $user::'));

        $additiveVars = [
            'user'              => $user,
            'site_home_url'     => url('/'),
            'site_name'         => $site_name,
            'login_url'         => url($login_url),
            'password'          => $password,
            'support_signature' => $support_signature,

        ];
        $title        = 'You were registered at ' . $site_name . ' site ';
        Mail::to($this->requestData['email'])->send(new Register($title, $user, $additiveVars));
        DB::commit();

        $login_on_register = config('services.LOGIN_ON_REGISTER');
        \Log::info(  varDump($login_on_register, ' -1 $login_on_register::') );

        if ($login_on_register) {
            return $this->login($request);
        }

        return (new UserResource($user));

    } catch (\Exception $e) {
        return $this->sendErrorResponse('User registration', $e->getMessage(), HTTP_RESPONSE_INTERNAL_SERVER_ERROR);
    }

} // public function register(Request $request)

public function login(Request $request)
{
    \Log::info(varDump(0, ' 0 MakingLogin $this->requestData::'));

    $email    = $request->email;
    $password = $request->password;

    if (empty($email) or empty($password)) {
        return response()->json(['status' => 'error', 'message' => 'You must fill all fields']);
    }

    try {
        $tokenRequest = $request->create(config('services.passport.login_endpoint'), 'POST');
        $loginData= [
            "grant_type"    => "password",
            "username"      => $email,
            "password"      => $password,
            "client_id"     => config('services.passport.client_id'),
            "client_secret" => config('services.passport.client_secret'),
        ];
        \Log::info(  varDump($loginData, ' -1 $loginData::') );
        $tokenRequest->request->add($loginData);

        $response = app()->handle($tokenRequest);

        \Log::info(varDump($response, ' -1 $response::'));

        return $response;
    } catch (\Exception $e) {
        return response()->json(['status' => 'error', 'message' => $e->getMessage()]);
    }
}

and it works ok, when making request from POSTMAN I can debug login data :

[2021-11-22 15:50:57] local.INFO: Array(5) : -1 $loginData:: : Array
(
    [grant_type] => password
    [username] => [email protected]
    [password] => 111111
    [client_id] => 2
    [client_secret] => Z52mtTYILObVmGannlD4ZtMeaoLvUBvsy96t2wpK
)

But when running register method from php unit test I got 400 return code :

public function testRegisterUser()
{
    $newUserData = [
        'name'      => 'test_user',
        'first_name'      => 'test_user first_name',
        'last_name'      => 'test_user last_name',
        'email'     => '[email protected]',
        'password'  => '111111',
        'status'    => 'A',
        'has_debts' => false
    ];

    $response = $this->json('POST','/api/v1/register', $newUserData);
    \Log::info(varDump($response, ' -1 testRegisterUser $this->response::'));
    $this->assertResponseOk();
}

and in log file I see similar set of register user data

[2021-11-22 15:55:29] testing.INFO: Array(5) : -1 $loginData:: : Array
(
    [grant_type] => password
    [username] => [email protected]
    [password] => 111111
    [client_id] => 2
    [client_secret] => Z52mtTYILObVmGannlD4ZtMeaoLvUBvsy96t2wpK
)

[2021-11-22 15:55:29] testing.ERROR: The authorization grant type is not supported by the authorization server. {"exception":"[object] (Laravel\Passport\Exceptions\OAuthServerException(code: 2): The authorization grant type is not supported by the authorization server. at /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/passport/src/Http/Controllers/HandlesOAuthErrors.php:26)
[stacktrace]
#0 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/dusterio/lumen-passport/src/Http/Controllers/AccessTokenController.php(35): Laravel\Passport\Http\Controllers\AccessTokenController->withErrorHandling()
#1 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(36): Dusterio\LumenPassport\Http\Controllers\AccessTokenController->issueToken()
#2 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#3 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#4 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#5 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php(653): Illuminate\Container\BoundMethod::call()
#6 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(389): Illuminate\Container\Container->call()
#7 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(332): Laravel\Lumen\Application->callControllerCallable()
#8 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(282): Laravel\Lumen\Application->callControllerAction()
#9 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(267): Laravel\Lumen\Application->callActionOnArrayBasedRoute()
#10 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(169): Laravel\Lumen\Application->handleFoundRoute()
#11 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(429): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}()
#12 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(175): Laravel\Lumen\Application->sendThroughPipeline()
#13 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(95): Laravel\Lumen\Application->dispatch()
#14 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/app/Http/Controllers/AuthController.php(120): Laravel\Lumen\Application->handle()
#15 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/app/Http/Controllers/AuthController.php(75): App\Http\Controllers\AuthController->login()
#16 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(36): App\Http\Controllers\AuthController->register()
#17 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Util.php(40): Illuminate\Container\BoundMethod::Illuminate\Container\{closure}()
#18 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(93): Illuminate\Container\Util::unwrapIfClosure()
#19 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/BoundMethod.php(37): Illuminate\Container\BoundMethod::callBoundMethod()
#20 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/illuminate/container/Container.php(653): Illuminate\Container\BoundMethod::call()
#21 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(389): Illuminate\Container\Container->call()
#22 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(355): Laravel\Lumen\Application->callControllerCallable()
#23 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(329): Laravel\Lumen\Application->callLumenController()
#24 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(282): Laravel\Lumen\Application->callControllerAction()
#25 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(267): Laravel\Lumen\Application->callActionOnArrayBasedRoute()
#26 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(169): Laravel\Lumen\Application->handleFoundRoute()
#27 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(429): Laravel\Lumen\Application->Laravel\Lumen\Concerns\{closure}()
#28 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(175): Laravel\Lumen\Application->sendThroughPipeline()
#29 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Concerns/RoutesRequests.php(95): Laravel\Lumen\Application->dispatch()
#30 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Testing/Concerns/MakesHttpRequests.php(361): Laravel\Lumen\Application->handle()
#31 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/laravel/lumen-framework/src/Testing/Concerns/MakesHttpRequests.php(49): Laravel\Lumen\Testing\TestCase->call()
#32 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/tests/PagesTest.php(28): Laravel\Lumen\Testing\TestCase->json()
#33 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/Framework/TestCase.php(1527): PagesTest->testRegisterUser()
#34 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/Framework/TestCase.php(1133): PHPUnit\Framework\TestCase->runTest()
#35 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/Framework/TestResult.php(722): PHPUnit\Framework\TestCase->runBare()
#36 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/Framework/TestCase.php(885): PHPUnit\Framework\TestResult->run()
#37 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/Framework/TestSuite.php(678): PHPUnit\Framework\TestCase->run()
#38 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(670): PHPUnit\Framework\TestSuite->run()
#39 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/TextUI/Command.php(143): PHPUnit\TextUI\TestRunner->run()
#40 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/src/TextUI/Command.php(96): PHPUnit\TextUI\Command->run()
#41 /mnt/_work_sdb8/wwwroot/LumenProjects/PublishPagesAPI/vendor/phpunit/phpunit/phpunit(92): PHPUnit\TextUI\Command::main()
#42 {main}
...

What did I miss ?

Thanks in advance!

0 likes
0 replies

Please or to participate in this conversation.