public function testDateAttributeIsSanitizedCorrectly()
 {
     $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super');
     $metadata = User::getMetadata();
     if (!in_array('birthday', $metadata['User']['members'])) {
         $metadata['User']['members'][] = 'birthday';
     }
     if (!in_array(array('birthday', 'type', 'type' => 'date'), $metadata['User']['rules'])) {
         $metadata['User']['rules'][] = array('birthday', 'type', 'type' => 'date');
         $metadata['User']['elements']['birthday'] = 'Date';
     }
     unset($metadata['Person']);
     User::setMetadata($metadata);
     $messageLogger = new MessageLogger();
     RedBeanModelsToTablesAdapter::generateTablesFromModelClassNames(array('User'), $messageLogger);
     UserTestHelper::createBasicUser('dateUser');
     $dateUser = User::getByUsername('dateuser');
     $this->setGetArray(array('id' => $dateUser->id));
     $this->setPostArray(array('User' => array('birthday' => '12/05/2000')));
     $this->runControllerWithRedirectExceptionAndGetContent('users/default/edit');
     $dateUser = User::getById($dateUser->id);
     $this->assertEquals('2000-12-05', $dateUser->birthday);
 }
Example #2
0
 public function testSetMetadata()
 {
     $metadata = User::getMetadata();
     $this->assertArrayHasKey('Person', $metadata);
     $this->assertNotEmpty($metadata['Person']);
     $this->assertArrayHasKey('User', $metadata);
     $this->assertNotEmpty($metadata['User']);
     $personMetaData = $metadata['Person'];
     $userMetaData = $metadata['User'];
     $this->assertArrayHasKey('members', $personMetaData);
     $this->assertCount(7, $personMetaData['members']);
     $this->assertArrayHasKey('members', $userMetaData);
     $this->assertCount(12, $userMetaData['members']);
     // unset a member from person, update metadata
     unset($personMetaData['members'][0]);
     User::setMetadata(array('Person' => $personMetaData));
     // ensure metadata update has propagated
     $metadata = User::getMetadata();
     $this->assertArrayHasKey('Person', $metadata);
     $this->assertNotEmpty($metadata['Person']);
     $this->assertArrayHasKey('User', $metadata);
     $this->assertNotEmpty($metadata['User']);
     $personMetaData = $metadata['Person'];
     $userMetaData = $metadata['User'];
     $this->assertArrayHasKey('members', $personMetaData);
     $this->assertCount(6, $personMetaData['members']);
     $this->assertArrayHasKey('members', $userMetaData);
     $this->assertCount(12, $userMetaData['members']);
     // unset a member from User, update metadata
     unset($userMetaData['members'][0]);
     User::setMetadata(array('User' => $userMetaData));
     // ensure metadata update has propagated
     $metadata = User::getMetadata();
     $this->assertArrayHasKey('Person', $metadata);
     $this->assertNotEmpty($metadata['Person']);
     $this->assertArrayHasKey('User', $metadata);
     $this->assertNotEmpty($metadata['User']);
     $personMetaData = $metadata['Person'];
     $userMetaData = $metadata['User'];
     $this->assertArrayHasKey('members', $personMetaData);
     $this->assertCount(6, $personMetaData['members']);
     $this->assertArrayHasKey('members', $userMetaData);
     $this->assertCount(11, $userMetaData['members']);
     // unset a member from User and Person, update metadata
     unset($userMetaData['members'][1]);
     unset($personMetaData['members'][1]);
     User::setMetadata(array('Person' => $personMetaData, 'User' => $userMetaData));
     // ensure metadata update has propagated
     $metadata = User::getMetadata();
     $this->assertArrayHasKey('Person', $metadata);
     $this->assertNotEmpty($metadata['Person']);
     $this->assertArrayHasKey('User', $metadata);
     $this->assertNotEmpty($metadata['User']);
     $personMetaData = $metadata['Person'];
     $userMetaData = $metadata['User'];
     $this->assertArrayHasKey('members', $personMetaData);
     $this->assertCount(5, $personMetaData['members']);
     $this->assertArrayHasKey('members', $userMetaData);
     $this->assertCount(10, $userMetaData['members']);
 }