You are here

public function ShipmentAccessControlHandlerTest::testAccess in Commerce Shipping 8.2

@covers ::checkAccess

File

tests/src/Kernel/ShipmentAccessControlHandlerTest.php, line 29

Class

ShipmentAccessControlHandlerTest
Tests the shipment access control.

Namespace

Drupal\Tests\commerce_shipping\Kernel

Code

public function testAccess() {
  $order = Order::create([
    'type' => 'default',
    'state' => 'canceled',
  ]);
  $order
    ->save();

  /** @var \Drupal\commerce_shipping\Entity\ShipmentInterface $shipment */
  $shipment = Shipment::create([
    'type' => 'default',
    'title' => 'Shipment',
    'order_id' => $order
      ->id(),
  ]);
  $shipment
    ->save();
  $shipment = $this
    ->reloadEntity($shipment);
  $account = $this
    ->createUser([], [
    'access administration pages',
  ]);
  $this
    ->assertFalse($shipment
    ->access('view', $account));
  $this
    ->assertFalse($shipment
    ->access('update', $account));
  $this
    ->assertFalse($shipment
    ->access('delete', $account));
  $account = $this
    ->createUser([], [
    'view commerce_order',
  ]);
  $this
    ->assertTrue($shipment
    ->access('view', $account));
  $this
    ->assertFalse($shipment
    ->access('update', $account));
  $this
    ->assertFalse($shipment
    ->access('delete', $account));
  $account = $this
    ->createUser([], [
    'update default commerce_order',
  ]);
  $this
    ->assertFalse($shipment
    ->access('view', $account));
  $this
    ->assertFalse($shipment
    ->access('update', $account));
  $this
    ->assertFalse($shipment
    ->access('delete', $account));
  $account = $this
    ->createUser([], [
    'manage default commerce_shipment',
  ]);
  $this
    ->assertFalse($shipment
    ->access('view', $account));
  $this
    ->assertTrue($shipment
    ->access('update', $account));
  $this
    ->assertTrue($shipment
    ->access('delete', $account));
  $account = $this
    ->createUser([], [
    'administer commerce_shipment',
  ]);
  $this
    ->assertTrue($shipment
    ->access('view', $account));
  $this
    ->assertTrue($shipment
    ->access('update', $account));
  $this
    ->assertTrue($shipment
    ->access('delete', $account));

  // Broken order reference.
  $shipment
    ->set('order_id', '999');
  $account = $this
    ->createUser([], [
    'manage default commerce_order_item',
  ]);
  $this
    ->assertFalse($shipment
    ->access('view', $account));
  $this
    ->assertFalse($shipment
    ->access('update', $account));
  $this
    ->assertFalse($shipment
    ->access('delete', $account));
}