Exemple #1
0
 /**
  * Check right on CommonDBRelation object
  */
 public function testContact_Supplier()
 {
     global $DB;
     $DB->connect();
     $ent0 = $this->sharedFixture['entity'][0];
     $ent1 = $this->sharedFixture['entity'][1];
     $ent2 = $this->sharedFixture['entity'][2];
     // Super admin
     Session::changeProfile(4);
     $this->assertEquals(4, $_SESSION['glpiactiveprofile']['id']);
     $this->assertEquals(31, $_SESSION['glpiactiveprofile']['contact_enterprise']);
     // See all
     $this->assertTrue(Session::changeActiveEntities("all"));
     // Create some contacts
     $contact = new Contact();
     $idc[0] = $contact->add(array('name' => "Contact 1", 'entities_id' => $ent0, 'is_recursive' => 0));
     $this->assertGreaterThan(0, $idc[0]);
     $idc[1] = $contact->add(array('name' => "Contact 2", 'entities_id' => $ent0, 'is_recursive' => 1));
     $this->assertGreaterThan(0, $idc[1]);
     $idc[2] = $contact->add(array('name' => "Contact 3", 'entities_id' => $ent1, 'is_recursive' => 1));
     $this->assertGreaterThan(0, $idc[2]);
     $idc[3] = $contact->add(array('name' => "Contact 4", 'entities_id' => $ent2));
     $this->assertGreaterThan(0, $idc[3]);
     // Create some suppliers
     $supplier = new Supplier();
     $ids[0] = $supplier->add(array('name' => "Supplier 1", 'entities_id' => $ent0, 'is_recursive' => 0));
     $this->assertGreaterThan(0, $ids[0]);
     $ids[1] = $supplier->add(array('name' => "Supplier 2", 'entities_id' => $ent0, 'is_recursive' => 1));
     $this->assertGreaterThan(0, $ids[1]);
     $ids[2] = $supplier->add(array('name' => "Supplier 3", 'entities_id' => $ent1));
     $this->assertGreaterThan(0, $ids[2]);
     $ids[3] = $supplier->add(array('name' => "Supplier 4", 'entities_id' => $ent2));
     $this->assertGreaterThan(0, $ids[3]);
     // Relation
     $rel = new Contact_Supplier();
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[0]);
     // root
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[0] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[0]);
     $this->assertTrue($rel->can($idr[0], READ));
     $this->assertTrue($rel->canEdit($idr[0]));
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[1]);
     // root + rec
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[1] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[1]);
     $this->assertTrue($rel->can($idr[1], READ));
     $this->assertTrue($rel->canEdit($idr[1]));
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[2]);
     // child 1
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[3]);
     // child 2
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[0]);
     // root
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[2] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[2]);
     $this->assertTrue($rel->can($idr[2], READ));
     $this->assertTrue($rel->canEdit($idr[2]));
     $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[1]);
     // root + rec
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[3] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[3]);
     $this->assertTrue($rel->can($idr[3], READ));
     $this->assertTrue($rel->canEdit($idr[3]));
     $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[2]);
     // child 1
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[4] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[4]);
     $this->assertTrue($rel->can($idr[4], READ));
     $this->assertTrue($rel->canEdit($idr[4]));
     $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[3]);
     // child 2
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[5] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[5]);
     $this->assertTrue($rel->can($idr[5], READ));
     $this->assertTrue($rel->canEdit($idr[5]));
     $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[0]);
     // root
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[1]);
     // root + rec
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[6] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[6]);
     $this->assertTrue($rel->can($idr[6], READ));
     $this->assertTrue($rel->canEdit($idr[6]));
     $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[2]);
     // Child 1
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[7] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[7]);
     $this->assertTrue($rel->can($idr[7], READ));
     $this->assertTrue($rel->canEdit($idr[7]));
     $input = array('contacts_id' => $idc[2], 'suppliers_id' => $ids[3]);
     // Child 2
     $this->assertFalse($rel->can(-1, CREATE, $input));
     // See only in child entity 2 + parent if recursive
     $this->assertTrue(Session::changeActiveEntities($ent2));
     $this->assertFalse($rel->can($idr[0], READ));
     // root / root
     $this->assertFalse($rel->canEdit($idr[0]));
     $this->assertFalse($rel->can($idr[1], READ));
     // root / root rec
     $this->assertFalse($rel->canEdit($idr[1]));
     $this->assertFalse($rel->can($idr[2], READ));
     // root rec / root
     $this->assertFalse($rel->canEdit($idr[2]));
     $this->assertTrue($rel->can($idr[3], READ));
     // root rec / root rec
     $this->assertFalse($rel->canEdit($idr[3]));
     $this->assertFalse($rel->can($idr[4], READ));
     // root rec / child 1
     $this->assertFalse($rel->canEdit($idr[4]));
     $this->assertTrue($rel->can($idr[5], READ));
     // root rec / child 2
     $this->assertTrue($rel->canEdit($idr[5]));
     $this->assertFalse($rel->can($idr[6], READ));
     // child 1 / root rec
     $this->assertFalse($rel->canEdit($idr[6]));
     $this->assertFalse($rel->can($idr[7], READ));
     // child 1 / child 1
     $this->assertFalse($rel->canEdit($idr[7]));
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[0]);
     // root
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[0], 'suppliers_id' => $ids[1]);
     // root + rec
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[1], 'suppliers_id' => $ids[0]);
     // root
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[0]);
     // root
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[1]);
     // root + rec
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[7] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[7]);
     $this->assertTrue($rel->can($idr[7], READ));
     $this->assertTrue($rel->canEdit($idr[7]));
     $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[2]);
     // Child 1
     $this->assertFalse($rel->can(-1, CREATE, $input));
     $input = array('contacts_id' => $idc[3], 'suppliers_id' => $ids[3]);
     // Child 3
     $this->assertTrue($rel->can(-1, CREATE, $input));
     $idr[8] = $rel->add($input);
     $this->assertGreaterThan(0, $idr[8]);
     $this->assertTrue($rel->can($idr[8], READ));
     $this->assertTrue($rel->canEdit($idr[8]));
 }