3 namespace Drupal\Tests\permissions_by_term\Unit;
5 use Drupal\permissions_by_term\NodeAccess;
6 use \Drupal\permissions_by_term\Factory\NodeAccessRecordFactory;
11 * @group permissions_by_term
13 class NodeAccessTest extends \PHPUnit_Framework_TestCase {
17 public function testCreateRealms() {
18 $accessStorage = $this->createMock('Drupal\permissions_by_term\AccessStorage',
20 'fetchUidsByRid' => [999, 87, 44],
21 'getNidsByTid' => [64, 826, 91, 21],
22 'getAllNids' => [12, 55, 88, 3, 5],
23 'getAllUids' => [6, 84, 2, 99, 2],
24 'getNodeType' => 'article',
28 $nodeAccessStorageFactory = new NodeAccessRecordFactory();
30 $entityManager = $this->createMock('Drupal\Core\Entity\EntityManager',
32 'getStorage' => $this->createMock('Storage', [
33 'load' => $this->createMock('Entity', [
34 'hasPermission' => true
39 $accessCheck = $this->createMock('Drupal\permissions_by_term\AccessCheck',
41 'canUserAccessByNodeId' => TRUE
45 $database = $this->createMock('Drupal\Core\Database\Driver\mysql\Connection');
47 $nodeAccess = new NodeAccess($accessStorage, $nodeAccessStorageFactory, $entityManager, $accessCheck, $database);
49 $this->assertTrue($this->propertiesHaveValues($nodeAccess->createGrants(1)));
50 $this->assertTrue($this->realmContainsNumber($nodeAccess->createGrants(1)));
53 private function realmContainsNumber($objectStack) {
54 foreach ($objectStack as $object) {
55 foreach ($object as $propertyName => $propertyValue) {
56 if ($propertyName == 'realm') {
57 if ($this->stringContainsOneNumbers($propertyValue) === FALSE) {
58 throw new \Exception('The realm does not contain two numbers. It must contain the UID and TID.');
67 private function stringContainsOneNumbers($string) {
69 $elements = explode('_', $string);
70 foreach ($elements as $element) {
71 if (is_numeric($element)) {
76 if ($numOfNumbers == 1) {
83 private function propertiesHaveValues($objectStack) {
84 foreach ($objectStack as $object) {
85 foreach ($object as $propertyName => $propertyValue) {
86 if ($propertyValue == '' && $propertyValue != 0) {
87 throw new \Exception('Property with name ' . $propertyName . ' does not contain any value.');