/**
  * Asserts that node access correctly grants or denies access.
  *
  * @param array $ops
  *   An associative array of the expected node access grants for the node
  *   and account, with each key as the name of an operation (e.g. 'view',
  *   'delete') and each value a Boolean indicating whether access to that
  *   operation should be granted.
  * @param \Drupal\node\Entity\Node $node
  *   The node object to check.
  * @param \Drupal\Core\Session\AccountInterface $account
  *   The user account for which to check access.
  * @param string|null $langcode
  *   (optional) The language code indicating which translation of the node
  *   to check. If NULL, the untranslated (fallback) access is checked.
  */
 function assertNodeAccess(array $ops, $node, AccountInterface $account, $langcode = NULL)
 {
     foreach ($ops as $op => $result) {
         if (empty($langcode)) {
             $langcode = $node->prepareLangcode();
         }
         $this->assertEqual($result, $this->accessHandler->access($node, $op, $langcode, $account), $this->nodeAccessAssertMessage($op, $result, $langcode));
     }
 }