2017-03-26 1 views
0

Ich schreibe Features mit Behat in meinen Laravel-Projekten. Meine Szenarien dienen nur dazu, zu überprüfen, ob der Benutzer erfolgreich über das CAS-System angemeldet ist oder fehlschlägt.Behat - Laravel - CAS Login Benutzer Feature Test

Scenario: Authentication 
    Given I am on the homepage 
    And I press "Login" button 
    Then I should see "Login Successfully" 

Allerdings funktioniert es nicht so, wie ich es erwartet hatte. Irgendeine Idee?

Dank viel

+1

Können Sie den Fehler hinzufügen, den Sie bekommen? und vielleicht das HTML-Snippet des Elements, das in dem fehlgeschlagenen Schritt verwendet wurde. – lauda

+0

@lauda bekam ich diese Fehlermeldung: „Fehler : Interne Skript Ausfall
“ – trinhdh

+0

prüfen dieses Handbuch und sehen, ob funktioniert und wenn Sie eine Benutzer-Passwort benötigen, haben Sie vielleicht ein Umgebung Bug/Problem, wie für den Fehler, wenn alles funktionieren sollte ok würde es helfen, den Fehler in Behat erhalten. – lauda

Antwort

0

Dies ist die Lösung, die einer meiner Kollegen gefunden und implementiert erfolgreich

app/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); 
 
    } 
 
}

Funktionen/bootstrap/FeatureContext.php

/** 
 
    * @Given /^I am logged in as "([^"]*)"$/ 
 
    */ 
 
    public function iAmLoggedInAs($id) 
 
    { 
 
     if (Session::isStarted()) { 
 
      Session::regenerate(true); 
 
     } else { 
 
      Session::start(); 
 
     } 
 

 
     // Set server session 
 
     
 
     Session::put('cas_user', $id); 
 
     
 
     // Set client cookie 
 
     $minkSession = $this->getSession(); 
 
     $minkSession->setCookie(Session::getName(), Crypt::encrypt(Session::getId())); 
 
    }

Scenario: login 
 
Given I am logged in as "trinhdh" 
 
And I am on the homepage 
 
Then the response should contain "Logged in as: Trinh Daniel"

Das sollte funktioniert.

Verwandte Themen