Я пишу функции, используя Behat в моих проектах Laravel.
Мои сценарии — просто проверить, успешно ли пользователь вошел в систему через систему CAS или нет.
Scenario: Authentication
Given I am on the homepage
And I press "Login" button
Then I should see "Login Successfully"
Тем не менее, это не работает, как я ожидал.
Любая идея?
Большое спасибо
Это решение, которое один из моих коллег нашел и успешно реализовал.
приложение / Http / CASAuth.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
class MiamiCASAuth
{
protected $auth;
protected $cas;
public function __construct(Guard $auth)
{
if(strcmp(env(“APP_ENV”),“acceptance”) !== 0) {
$this->auth = $auth;
$this->cas = app(‘cas’);
}
}
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(strcmp(env("APP_ENV"),"acceptance") !== 0) {
if ($this->cas->isAuthenticated()) {
// Store the user credentials in a Laravel managed session
session()->put('cas_user', $this->cas->user());
} else {
if ($request->ajax()) {
return response('Unauthorized.', 401);
}
$this->cas->authenticate();
}
}
return $next($request);
}
}
Других решений пока нет …