Nov 22, 2021
0
Level 5
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!
Please or to participate in this conversation.