You are here

public function PasswordFunctionalTest::testMissingPasswordGrant in Simple OAuth (OAuth2) & OpenID Connect 8.2

Same name and namespace in other branches
  1. 8.4 tests/src/Functional/PasswordFunctionalTest.php \Drupal\Tests\simple_oauth\Functional\PasswordFunctionalTest::testMissingPasswordGrant()
  2. 8.3 tests/src/Functional/PasswordFunctionalTest.php \Drupal\Tests\simple_oauth\Functional\PasswordFunctionalTest::testMissingPasswordGrant()
  3. 5.x tests/src/Functional/PasswordFunctionalTest.php \Drupal\Tests\simple_oauth\Functional\PasswordFunctionalTest::testMissingPasswordGrant()

Test invalid Password grant.

File

tests/src/Functional/PasswordFunctionalTest.php, line 60

Class

PasswordFunctionalTest
@group simple_oauth

Namespace

Drupal\Tests\simple_oauth\Functional

Code

public function testMissingPasswordGrant() {
  $valid_payload = [
    'grant_type' => 'password',
    'client_id' => $this->client
      ->uuid(),
    'client_secret' => $this->clientSecret,
    'username' => $this->user
      ->getAccountName(),
    'password' => $this->user->pass_raw,
    'scope' => $this->scope,
  ];
  $data = [
    'grant_type' => [
      'error' => 'invalid_grant',
      'code' => 400,
    ],
    'client_id' => [
      'error' => 'invalid_request',
      'code' => 400,
    ],
    'client_secret' => [
      'error' => 'invalid_client',
      'code' => 401,
    ],
    'username' => [
      'error' => 'invalid_request',
      'code' => 400,
    ],
    'password' => [
      'error' => 'invalid_request',
      'code' => 400,
    ],
  ];
  foreach ($data as $key => $value) {
    $invalid_payload = $valid_payload;
    unset($invalid_payload[$key]);
    $response = $this
      ->request('POST', $this->url, [
      'form_params' => $invalid_payload,
    ]);
    $parsed_response = Json::decode($response
      ->getBody()
      ->getContents());
    $this
      ->assertSame($value['error'], $parsed_response['error'], sprintf('Correct error code %s for %s.', $value['error'], $key));
    $this
      ->assertSame($value['code'], $response
      ->getStatusCode(), sprintf('Correct status code %d for %s.', $value['code'], $key));
  }
}