. */ namespace Tests\Feature; use Illuminate\Foundation\Testing\RefreshDatabase; use Tests\TestCase; use App\Token; class AccountTokenTest extends TestCase { use RefreshDatabase; protected $tokenRoute = '/api/tokens'; protected $accountRoute = '/api/accounts/with-token'; protected $method = 'POST'; protected $pnProvider = 'provider'; protected $pnParam = 'param'; protected $pnPrid = 'id'; public function testMandatoryParameters() { $response = $this->json($this->method, $this->tokenRoute); $response->assertStatus(422); } public function testCorrectParameters() { $response = $this->json($this->method, $this->tokenRoute, [ 'pn_provider' => $this->pnProvider, 'pn_param' => $this->pnParam, 'pn_prid' => $this->pnPrid, ]); $response->assertStatus(503); } public function testLimit() { $token = Token::factory()->create(); $response = $this->json($this->method, $this->tokenRoute, [ 'pn_provider' => $token->pn_provider, 'pn_param' => $token->pn_param, 'pn_prid' => $token->pn_prid, ]); $response->assertStatus(403); } public function testInvalidToken() { $token = Token::factory()->create(); // Invalid token $response = $this->json($this->method, $this->accountRoute, [ 'username' => 'username', 'algorithm' => 'SHA-256', 'password' => '2', 'token' => '0123456789abc' ]); $response->assertStatus(422); // Valid token $response = $this->json($this->method, $this->accountRoute, [ 'username' => 'username', 'algorithm' => 'SHA-256', 'password' => '2', 'token' => $token->token ]); $response->assertStatus(200); // Expired token $response = $this->json($this->method, $this->accountRoute, [ 'username' => 'username2', 'algorithm' => 'SHA-256', 'password' => '2', 'token' => $token->token ]); $response->assertStatus(422); } }