Codeception – Create Helper for Reusing Token


create the file on tests/_support/Helper/ folder, to reuse the token you need to create hook _before

 

tests/ApiCest.php
-----------------
<?php 

class ApiCest 
{
    private $token;
    
    
    function createMeetingTest(ApiTester $I) {
        $data = array(
            "meeting_title" => "Meeting title",
            "meeting_date" => "2019-11-21 10:00:00"
        );
        
        $this->token = $I->getToken();
        
        $I->wantToTest('Create a meeting');
    	$I->amBearerAuthenticated($this->token);
		$I->sendPOST('/meetings', $data);
		$I->seeResponseCodeIs(200);
		$I->seeResponseIsJson();        
    }

    
}

tests/_support/Helper/Api.php
-----------------------------
<?php
namespace Helper;

class Api extends \Codeception\Module
{
	public $credentials = array(
		'username' => 'remo.harsono',
		'password' => '12345678'
	);
    
	private $jwt;


	public function getToken() {
		return $this->jwt;
	}

    public function _before(\Codeception\TestInterface $test) {
		$I = $this->getModule('REST');
		$I->haveHttpHeader('Content-Type', 'application/json');
		
		$I->sendPOST("/auth/login", $this->arrCredentials);

		$I->seeResponseCodeIs(200);
		$I->seeResponseIsJson();

		$response = $I->grabResponse();
		$json = json_decode((string)$jesponse);
		
		if ($json->result == 'OK') {
			$this->jwt = $json->jwt;
		} else {
			// ....
		}
	}
}


sample json output when calling auth/login
------------------------------------------
{
  "result": "OK",
  "jwt": "blablablabla",
}