/** * Test if all deleted items was pulled from read permission tables via API. * Please note that here we do not test if data are inserted in read permission tables correctly, that is * part of read permission subscription tests * @throws NotFoundException */ public function testGetDeletedContacts() { $timestamp = time(); sleep(1); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $this->deleteAllModelsAndRecordsFromReadPermissionTable('Contact'); $job = new ReadPermissionSubscriptionUpdateJob(); $contact1 = ContactTestHelper::createContactByNameForOwner('Michael', $super); $contact2 = ContactTestHelper::createContactByNameForOwner('Michael2', $super); $contact3 = ContactTestHelper::createContactByNameForOwner('Michael3', $super); $this->assertTrue($job->run()); sleep(1); $contactId1 = $contact1->id; $contactId2 = $contact2->id; $contactId3 = $contact3->id; $contact1->delete(); $contact2->delete(); $contact3->delete(); $this->assertTrue($job->run()); $authenticationData = $this->login(); $headers = array('Accept: application/json', 'ZURMO_SESSION_ID: ' . $authenticationData['sessionId'], 'ZURMO_TOKEN: ' . $authenticationData['token'], 'ZURMO_API_REQUEST_TYPE: REST'); $data = array('sinceDateTime' => DateTimeUtil::convertTimestampToDbFormatDateTime($timestamp), 'pagination' => array('pageSize' => 2, 'page' => 1)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(1, $response['data']['currentPage']); $this->assertContains($contactId1, $response['data']['items']); $this->assertContains($contactId2, $response['data']['items']); $data = array('sinceDateTime' => DateTimeUtil::convertTimestampToDbFormatDateTime(0), 'pagination' => array('pageSize' => 2, 'page' => 2)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(2, $response['data']['currentPage']); $this->assertContains($contactId3, $response['data']['items']); }
/** * Test if all deleted items was pulled from read permission tables via API. * Please note that here we do not test if data are inserted in read permission tables correctly, that is * part of read permission subscription tests * @throws NotFoundException */ public function testGetDeletedMeetings() { $timestamp = time(); sleep(1); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $this->deleteAllModelsAndRecordsFromReadPermissionTable('Meeting'); $job = new ReadPermissionSubscriptionUpdateJob(); $meeting1 = MeetingTestHelper::createMeetingByNameForOwner('Meeting1', $super); $meeting2 = MeetingTestHelper::createMeetingByNameForOwner('Meeting2', $super); $meeting3 = MeetingTestHelper::createMeetingByNameForOwner('Meeting3', $super); $this->assertTrue($job->run()); sleep(1); $meetingId1 = $meeting1->id; $meetingId2 = $meeting2->id; $meetingId3 = $meeting3->id; $meeting1->delete(); $meeting2->delete(); $meeting3->delete(); $this->assertTrue($job->run()); $authenticationData = $this->login(); $headers = array('Accept: application/json', 'ZURMO_SESSION_ID: ' . $authenticationData['sessionId'], 'ZURMO_TOKEN: ' . $authenticationData['token'], 'ZURMO_API_REQUEST_TYPE: REST'); $data = array('userId' => $super->id, 'sinceTimestamp' => $timestamp, 'pagination' => array('pageSize' => 2, 'page' => 1)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(1, $response['data']['currentPage']); $this->assertContains($meetingId1, $response['data']['items']); $this->assertContains($meetingId2, $response['data']['items']); $data = array('sinceTimestamp' => 0, 'pagination' => array('pageSize' => 2, 'page' => 2)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(2, $response['data']['currentPage']); $this->assertContains($meetingId3, $response['data']['items']); }
/** * Test if all deleted items was pulled from read permission tables via API. * Please note that here we do not test if data are inserted in read permission tables correctly, that is * part of read permission subscription tests * @throws NotFoundException */ public function atestGetDeletedAccounts() { $timestamp = time(); sleep(1); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; $peter = UserTestHelper::createBasicUser('Peter'); $peter->setRight('UsersModule', UsersModule::RIGHT_LOGIN_VIA_WEB_API); $peter->setRight('AccountsModule', AccountsModule::getAccessRight()); $this->assertTrue($peter->save()); $this->deleteAllModelsAndRecordsFromReadPermissionTable('Account'); $job = new ReadPermissionSubscriptionUpdateJob(); $account1 = AccountTestHelper::createAccountByNameForOwner('Account1', $super); $account2 = AccountTestHelper::createAccountByNameForOwner('Account2', $super); $account3 = AccountTestHelper::createAccountByNameForOwner('Account3', $super); $this->assertTrue($job->run()); sleep(1); $accountId1 = $account1->id; $accountId2 = $account2->id; $accountId3 = $account3->id; $account1->delete(); $account2->delete(); $account3->delete(); $this->assertTrue($job->run()); $authenticationData = $this->login(); $headers = array('Accept: application/json', 'ZURMO_SESSION_ID: ' . $authenticationData['sessionId'], 'ZURMO_TOKEN: ' . $authenticationData['token'], 'ZURMO_API_REQUEST_TYPE: REST'); $data = array('userId' => $super->id, 'sinceTimestamp' => $timestamp, 'pagination' => array('pageSize' => 2, 'page' => 1)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(1, $response['data']['currentPage']); $this->assertContains($accountId1, $response['data']['items']); $this->assertContains($accountId2, $response['data']['items']); $data = array('userId' => $super->id, 'sinceTimestamp' => 0, 'pagination' => array('pageSize' => 2, 'page' => 2)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(3, $response['data']['totalCount']); $this->assertEquals(2, $response['data']['pageSize']); $this->assertEquals(2, $response['data']['currentPage']); $this->assertContains($accountId3, $response['data']['items']); // Check with owner change $this->deleteAllModelsAndRecordsFromReadPermissionTable('Account'); $account1 = AccountTestHelper::createAccountByNameForOwner('Account1', $super); $account2 = AccountTestHelper::createAccountByNameForOwner('Account2', $super); $this->assertTrue($job->run()); sleep(2); $account1->owner = $peter; $this->assertTrue($account1->save()); sleep(1); $this->assertTrue($job->run()); sleep(2); $data = array('sinceTimestamp' => $timestamp, 'pagination' => array('pageSize' => 2, 'page' => 1)); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(0, $response['data']['totalCount']); $response = $this->createApiCallWithRelativeUrl('getCreatedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(1, $response['data']['totalCount']); $authenticationData = $this->login('peter', 'peter'); $headers = array('Accept: application/json', 'ZURMO_SESSION_ID: ' . $authenticationData['sessionId'], 'ZURMO_TOKEN: ' . $authenticationData['token'], 'ZURMO_API_REQUEST_TYPE: REST'); $response = $this->createApiCallWithRelativeUrl('getDeletedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(0, $response['data']['totalCount']); $response = $this->createApiCallWithRelativeUrl('getCreatedItems/', 'POST', $headers, array('data' => $data)); $response = json_decode($response, true); $this->assertEquals(1, $response['data']['totalCount']); }
public function testGetUpdatedModels() { ReadPermissionsSubscriptionUtil::recreateTable('account_read_subscription'); ModelCreationApiSyncUtil::buildTable(); $account1 = AccountTestHelper::createAccountByNameForOwner('First Test Update Account', Yii::app()->user->userModel); $timestamp = time(); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); $account1->name = 'First Test Update Account Modified'; $this->assertTrue($account1->save()); // This should return true, because there should be 3 second gap between created and modified timestamps $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); sleep(4); $account1->name = 'First Test Update Account Modified 2'; $this->assertTrue($account1->save()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(1, count($models)); $this->assertEquals($account1->id, $models[0]->id); $this->assertEquals($account1->name, $models[0]->name); // Check pagination sleep(2); $timestamp = time(); $account2 = AccountTestHelper::createAccountByNameForOwner('Second Test Update Account', Yii::app()->user->userModel); $account3 = AccountTestHelper::createAccountByNameForOwner('Third Test Update Account', Yii::app()->user->userModel); $account4 = AccountTestHelper::createAccountByNameForOwner('Forth Test Update Account', Yii::app()->user->userModel); sleep(5); $account2->name = 'Second Test Update Account Modified'; $account3->name = 'Third Test Update Account Modified'; $account4->name = 'Forth Test Update Account Modified'; $this->assertTrue($account2->save()); $this->assertTrue($account3->save()); $this->assertTrue($account4->save()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 3, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(3, count($models)); $this->assertTrue($account2->id == $models[0]->id || $account2->id == $models[1]->id || $account2->id == $models[2]->id); $this->assertTrue($account2->name == $models[0]->name || $account2->name == $models[1]->name || $account2->name == $models[2]->name); $this->assertTrue($account3->id == $models[0]->id || $account3->id == $models[1]->id || $account3->id == $models[2]->id); $this->assertTrue($account3->name == $models[0]->name || $account3->name == $models[1]->name || $account3->name == $models[2]->name); $this->assertTrue($account4->id == $models[0]->id || $account4->id == $models[1]->id || $account4->id == $models[2]->id); $this->assertTrue($account4->name == $models[0]->name || $account4->name == $models[1]->name || $account4->name == $models[2]->name); // Not test for non super user $job = new ReadPermissionSubscriptionUpdateJob(); $mike = UserTestHelper::createBasicUser('Mike'); $mikeAccount1 = AccountTestHelper::createAccountByNameForOwner('ABC Account', Yii::app()->user->userModel); $timestamp = time(); $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); $mikeAccount1->name = 'ABCD Account'; $this->assertTrue($mikeAccount1->save()); // This should return true, because there should be 3 second gap between created and modified timestamps $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertTrue(empty($models)); sleep(4); $mikeAccount1->name = 'AB Account'; $this->assertTrue($mikeAccount1->save()); $this->assertTrue($job->run()); $models = ModelStateChangesSubscriptionUtil::getUpdatedModels('Account', 2, 0, $timestamp); $this->assertTrue(is_array($models)); $this->assertEquals(1, count($models)); $this->assertEquals($mikeAccount1->id, $models[0]->id); $this->assertEquals($mikeAccount1->name, $models[0]->name); }