public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); AccountTestHelper::createAccountByNameForOwner('superAccount2', $super); ContactTestHelper::createContactWithAccountByNameForOwner('superContact', $super, $account); ContactTestHelper::createContactWithAccountByNameForOwner('superContact2', $super, $account); ContractTestHelper::createContractStagesIfDoesNotExist(); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp2', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp3', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp4', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp5', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp6', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp7', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp8', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp9', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp10', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp11', $super, $account); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp12', $super, $account); //Setup default dashboard. Dashboard::getByLayoutIdAndUser(Dashboard::DEFAULT_USER_LAYOUT_ID, $super); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; //Setup test data owned by the super user. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); AccountTestHelper::createAccountByNameForOwner('superAccount2', $super); ContractTestHelper::createContractStagesIfDoesNotExist(); ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; Currency::makeBaseCurrency(); //Create a account for testing. $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); //Create a Contract for testing. ContractTestHelper::createContractWithAccountByNameForOwner('superOpp', $super, $account); }
/** * Walkthrough test for synchronous download */ public function testDownloadDefaultControllerActions() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $account = AccountTestHelper::createAccountByNameForOwner('superAccount', $super); $contracts = array(); for ($i = 0; $i < 2; $i++) { $contracts[] = ContractTestHelper::createContractWithAccountByNameForOwner('superOpp' . $i, $super, $account); } // Check if access is denied if user doesn't have access privileges at all to export actions Yii::app()->user->userModel = User::getByUsername('nobody'); $nobody = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody'); $this->runControllerShouldResultInAccessFailureAndGetContent('contracts/default/list'); // Check if user have access to module action, but not to export action // Now test peon with elevated rights to accounts $nobody->setRight('ContractsModule', ContractsModule::RIGHT_ACCESS_CONTRACTS); $nobody->setRight('ContractsModule', ContractsModule::RIGHT_CREATE_CONTRACTS); $nobody->setRight('ContractsModule', ContractsModule::RIGHT_DELETE_CONTRACTS); $nobody->setRight('ExportModule', ExportModule::RIGHT_ACCESS_EXPORT); $this->assertTrue($nobody->save()); // Check if access is denied if user doesn't have access privileges at all to export actions $nobody = $this->logoutCurrentUserLoginNewUserAndGetByUsername('nobody'); Yii::app()->user->userModel = User::getByUsername('nobody'); $this->runControllerWithNoExceptionsAndGetContent('contracts/default/list'); $this->setGetArray(array('Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => '')); $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); $this->assertTrue(strstr($response, 'contracts/default/index') !== false); $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => '')); $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); $this->assertTrue(strstr($response, 'contracts/default/index') !== false); $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$contracts[0]->id}, {$contracts[1]->id}")); $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); $this->assertTrue(strstr($response, 'contracts/default/index') !== false); $this->assertContains('There is no data to export.', Yii::app()->user->getFlash('notification')); //give nobody access to read and write Yii::app()->user->userModel = $super; foreach ($contracts as $contract) { $contract->addPermissions($nobody, Permission::READ_WRITE_CHANGE_PERMISSIONS); AllPermissionsOptimizationUtil::securableItemGivenPermissionsForUser($contract, $nobody); $this->assertTrue($contract->save()); } //Now the nobody user should be able to access the edit view and still the details view. Yii::app()->user->userModel = $nobody; $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => '')); $response = $this->runControllerWithExitExceptionAndGetContent('contracts/default/export'); $this->assertEquals('Testing download.', $response); $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'superOpp', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$contracts[0]->id}, {$contracts[1]->id}")); $response = $this->runControllerWithExitExceptionAndGetContent('contracts/default/export'); $this->assertEquals('Testing download.', $response); // No mathces $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => 'missingName', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => '')); $response = $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); $this->assertTrue(strstr($response, 'contracts/default/index') !== false); }
public static function setUpBeforeClass() { parent::setUpBeforeClass(); SecurityTestHelper::createSuperAdmin(); $super = User::getByUsername('super'); Yii::app()->user->userModel = $super; UserTestHelper::createBasicUser('jim'); AllPermissionsOptimizationUtil::rebuild(); ContractTestHelper::createContractStagesIfDoesNotExist(); ContractTestHelper::createContractSourcesIfDoesNotExist(); $currencies = Currency::getAll(); //Make Contracts for testing chart data. $currencyValue = new CurrencyValue(); $currencyValue->value = 200; $currencyValue->currency = $currencies[0]; $contract = new Contract(); $contract->owner = $super; $contract->name = 'abc1'; $contract->amount = $currencyValue; $contract->closeDate = '2011-01-01'; $contract->stage->value = 'Negotiating'; $contract->source->value = 'Outbound'; assert($contract->save()); // Not Coding Standard $currencyValue = new CurrencyValue(); $currencyValue->value = 350; $currencyValue->currency = $currencies[0]; $contract = new Contract(); $contract->owner = $super; $contract->name = 'abc2'; $contract->amount = $currencyValue; $contract->closeDate = '2011-01-01'; $contract->stage->value = 'Negotiating'; $contract->source->value = 'Trade Show'; assert($contract->save()); // Not Coding Standard $currencyValue = new CurrencyValue(); $currencyValue->value = 100; $currencyValue->currency = $currencies[0]; $contract = new Contract(); $contract->owner = $super; $contract->name = 'abc2'; $contract->amount = $currencyValue; $contract->closeDate = '2011-01-01'; $contract->stage->value = 'Verbal'; $contract->source->value = 'Trade Show'; assert($contract->save()); // Not Coding Standard }
/** * Walkthrough test for synchronous download */ public function testAsynchronousDownloadDefaultControllerActions() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $account = AccountTestHelper::createAccountByNameForOwner('superAccount2', $super); $notificationsBeforeCount = Notification::getCount(); $notificationMessagesBeforeCount = NotificationMessage::getCount(); $contracts = Contract::getAll(); if (count($contracts)) { foreach ($contracts as $contract) { $contract->delete(); } } $contracts = array(); for ($i = 0; $i <= ExportModule::$asynchronousThreshold + 1; $i++) { $contracts[] = ContractTestHelper::createContractWithAccountByNameForOwner('contract' . $i, $super, $account); } $this->setGetArray(array('Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '1', 'selectedIds' => '')); $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); // Start background job $job = new ExportJob(); $this->assertTrue($job->run()); $exportItems = ExportItem::getAll(); $this->assertEquals(1, count($exportItems)); $fileModel = $exportItems[0]->exportFileModel; $this->assertEquals(1, $exportItems[0]->isCompleted); $this->assertEquals('csv', $exportItems[0]->exportFileType); $this->assertEquals('contracts', $exportItems[0]->exportFileName); $this->assertTrue($fileModel instanceof ExportFileModel); $this->assertEquals($notificationsBeforeCount + 1, Notification::getCount()); $this->assertEquals($notificationMessagesBeforeCount + 1, NotificationMessage::getCount()); // Check export job, when many ids are selected. // This will probably never happen, but we need test for this case too. $notificationsBeforeCount = Notification::getCount(); $notificationMessagesBeforeCount = NotificationMessage::getCount(); // Now test case when multiple ids are selected $exportItems = ExportItem::getAll(); if (count($exportItems)) { foreach ($exportItems as $exportItem) { $exportItem->delete(); } } $selectedIds = ""; foreach ($contracts as $contract) { $selectedIds .= $contract->id . ","; // Not Coding Standard } $this->setGetArray(array('ContractsSearchForm' => array('anyMixedAttributesScope' => array(0 => 'All'), 'anyMixedAttributes' => '', 'name' => '', 'officePhone' => ''), 'Contract_page' => '1', 'export' => '', 'ajax' => '', 'selectAll' => '', 'selectedIds' => "{$selectedIds}")); $this->runControllerWithRedirectExceptionAndGetUrl('contracts/default/export'); // Start background job $job = new ExportJob(); $this->assertTrue($job->run()); $exportItems = ExportItem::getAll(); $this->assertEquals(1, count($exportItems)); $fileModel = $exportItems[0]->exportFileModel; $this->assertEquals(1, $exportItems[0]->isCompleted); $this->assertEquals('csv', $exportItems[0]->exportFileType); $this->assertEquals('contracts', $exportItems[0]->exportFileName); $this->assertTrue($fileModel instanceof ExportFileModel); $this->assertEquals($notificationsBeforeCount + 1, Notification::getCount()); $this->assertEquals($notificationMessagesBeforeCount + 1, NotificationMessage::getCount()); }
private function addContract() { $primaryModel = $this->getPrimaryModel(); $this->assertEquals(0, count($primaryModel->contracts)); $contract = ContractTestHelper::createContractByNameForOwner('UI Services', Yii::app()->user->userModel); $contract->account = $this->selectedModels[1]; $contract->save(); }
/** * @deletes selected leads. */ public function testRegularMassDeleteActionsForSelectedIds() { $super = $this->logoutCurrentUserLoginNewUserAndGetByUsername('super'); $confused = User::getByUsername('confused'); $nobody = User::getByUsername('nobody'); $this->assertEquals(Right::DENY, $confused->getEffectiveRight('ZurmoModule', ZurmoModule::RIGHT_BULK_DELETE)); $confused->setRight('ZurmoModule', ZurmoModule::RIGHT_BULK_DELETE); //Load MassDelete view for the 3 contracts. $contracts = Contract::getAll(); $this->assertEquals(9, count($contracts)); $contract1 = ContractTestHelper::createContractByNameForOwner('contractDelete1', $confused); $contract2 = ContractTestHelper::createContractByNameForOwner('contractDelete2', $confused); $contract3 = ContractTestHelper::createContractByNameForOwner('contractDelete3', $nobody); $contract4 = ContractTestHelper::createContractByNameForOwner('contractDelete4', $confused); $contract5 = ContractTestHelper::createContractByNameForOwner('contractDelete5', $confused); $contract6 = ContractTestHelper::createContractByNameForOwner('contractDelete6', $nobody); $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id; // Not Coding Standard $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '')); // Not Coding Standard $this->resetPostArray(); $content = $this->runControllerWithNoExceptionsAndGetContent('contracts/default/massDelete'); $this->assertContains('<strong>3</strong> Contracts selected for removal', $content); $pageSize = Yii::app()->pagination->getForCurrentUserByType('massDeleteProgressPageSize'); $this->assertEquals(5, $pageSize); //calculating leads after adding 6 new records $contracts = Contract::getAll(); $this->assertEquals(15, count($contracts)); //Deleting 6 contracts for pagination scenario //Run Mass Delete using progress save for page1 $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id . ',' . $contract4->id . ',' . $contract5->id . ',' . $contract6->id; // Not Coding Standard $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'Contract_page' => 1)); $this->setPostArray(array('selectedRecordCount' => 6)); $content = $this->runControllerWithExitExceptionAndGetContent('contracts/default/massDelete'); $contracts = Contract::getAll(); $this->assertEquals(10, count($contracts)); //Run Mass Delete using progress save for page2 $selectedIds = $contract1->id . ',' . $contract2->id . ',' . $contract3->id . ',' . $contract4->id . ',' . $contract5->id . ',' . $contract6->id; // Not Coding Standard $this->setGetArray(array('selectedIds' => $selectedIds, 'selectAll' => '', 'Contract_page' => 2)); $this->setPostArray(array('selectedRecordCount' => 6)); $content = $this->runControllerWithNoExceptionsAndGetContent('contracts/default/massDeleteProgress'); $contracts = Contract::getAll(); $this->assertEquals(9, count($contracts)); }