You are here

public function JsonApiSpecTest::providerTestIsValidMemberName in JSON:API 8

Same name and namespace in other branches
  1. 8.2 tests/src/Unit/JsonApiSpecTest.php \Drupal\Tests\jsonapi\Unit\JsonApiSpecTest::providerTestIsValidMemberName()

Data provider for testIsValidMemberName.

1 call to JsonApiSpecTest::providerTestIsValidMemberName()
JsonApiSpecTest::providerTestIsValidCustomQueryParameter in tests/src/Unit/JsonApiSpecTest.php
Data provider for testIsValidCustomQueryParameter.

File

tests/src/Unit/JsonApiSpecTest.php, line 29

Class

JsonApiSpecTest
@coversDefaultClass \Drupal\jsonapi\JsonApiSpec @group jsonapi

Namespace

Drupal\Tests\jsonapi\Unit

Code

public function providerTestIsValidMemberName() {

  // Copied from http://jsonapi.org/format/upcoming/#document-member-names.
  $data = [];
  $data['alphanumeric-lowercase'] = [
    '12kittens',
    TRUE,
  ];
  $data['alphanumeric-uppercase'] = [
    '12KITTENS',
    TRUE,
  ];
  $data['alphanumeric-mixed'] = [
    '12KiTtEnS',
    TRUE,
  ];
  $data['unicode-above-u+0080'] = [
    '12🐱🐱',
    TRUE,
  ];
  $data['hyphen-start'] = [
    '-kittens',
    FALSE,
  ];
  $data['hyphen-middle'] = [
    'kitt-ens',
    TRUE,
  ];
  $data['hyphen-end'] = [
    'kittens-',
    FALSE,
  ];
  $data['lowline-start'] = [
    '_kittens',
    FALSE,
  ];
  $data['lowline-middle'] = [
    'kitt_ens',
    TRUE,
  ];
  $data['lowline-end'] = [
    'kittens_',
    FALSE,
  ];
  $data['space-start'] = [
    ' kittens',
    FALSE,
  ];
  $data['space-middle'] = [
    'kitt ens',
    TRUE,
  ];
  $data['space-end'] = [
    'kittens ',
    FALSE,
  ];

  // Additional test cases.
  // @todo When D8 requires PHP >= 7, convert to \u{10FFFF}.
  $data['unicode-above-u+0080-highest-allowed'] = [
    "12􏿿",
    TRUE,
  ];
  $data['single-character'] = [
    'a',
    TRUE,
  ];
  $unsafe_chars = [
    '+',
    ',',
    '.',
    '[',
    ']',
    '!',
    '"',
    '#',
    '$',
    '%',
    '&',
    '\'',
    '(',
    ')',
    '*',
    '/',
    ':',
    ';',
    '<',
    '=',
    '>',
    '?',
    '@',
    '\\',
    '^',
    '`',
    '{',
    '|',
    '}',
    '~',
  ];
  foreach ($unsafe_chars as $unsafe_char) {
    $data['unsafe-' . $unsafe_char] = [
      'kitt' . $unsafe_char . 'ens',
      FALSE,
    ];
  }

  // The ASCII control characters are in the range 0x00 to 0x1F plus 0x7F.
  for ($ascii = 0; $ascii <= 0x1f; $ascii++) {
    $data['unsafe-ascii-control-' . $ascii] = [
      'kitt' . chr($ascii) . 'ens',
      FALSE,
    ];
  }
  $data['unsafe-ascii-control-' . 0x7f] = [
    'kitt' . chr(0x7f) . 'ens',
    FALSE,
  ];
  return $data;
}