123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- /**
- * @file
- * File download product feature tests.
- */
- /**
- * Tests the file download purchase functionality.
- */
- class UbercartFileTestCase extends UbercartTestHelper {
- public static function getInfo() {
- return array(
- 'name' => 'File downloads',
- 'description' => 'Ensures that the purchase of file downloads functions correctly.',
- 'group' => 'Ubercart',
- );
- }
- /**
- * Overrides DrupalWebTestCase::setUp().
- */
- public function setUp($modules = array(), $permissions = array()) {
- $modules = array('uc_payment', 'uc_payment_pack', 'uc_file');
- $permissions = array();
- parent::setUp($modules, $permissions);
- // Need admin permissions in order to change file download settings.
- $this->drupalLogin($this->adminUser);
- // Set up directory for files to live in.
- $this->configureDownloadDirectory();
- }
- public function testFilePurchaseCheckout() {
- // Add file download feature to the test product.
- $filename = $this->uploadTestFile();
- $this->drupalLogin($this->adminUser);
- $this->drupalPost('node/' . $this->product->nid . '/edit/features', array('feature' => 'file'), t('Add'));
- $edit = array(
- 'uc_file_model' => '',
- 'uc_file_filename' => $filename,
- );
- $this->drupalPost(NULL, $edit, t('Save feature'));
- // Check out with the test product.
- $this->drupalPost('node/' . $this->product->nid, array(), t('Add to cart'));
- $order = $this->checkout();
- uc_payment_enter($order->order_id, 'other', $order->order_total);
- // Test that the file was granted.
- $this->drupalGet('user/' . $order->uid . '/purchased-files');
- $this->assertText($filename, 'File found in list of purchased files.');
- // Test that the email is correct.
- $mail = $this->findMail('/File Downloads for Order# ' . preg_quote($order->order_id) . '/');
- // Delete the user.
- user_delete($order->uid);
- // Run cron to ensure deleted users are handled correctly.
- $this->drupalLogout();
- $this->cronRun();
- }
- /**
- * Helper function to configure Credit Card payment method settings.
- */
- protected function configureDownloadDirectory() {
- // Create directory for downloads, make it readable and writeable.
- // Putting this under sites/default/files because SimpleTest needs to be
- // able to create the directory - this is NOT where you'd put the downloads
- // directory on a live site. On a live site, it should be outside the web root.
- drupal_mkdir('sites/default/files/file-downloads', 0755);
- $this->drupalPost(
- 'admin/store/settings/products',
- array(
- 'uc_file_base_dir' => 'sites/default/files/file-downloads',
- ),
- t('Save configuration')
- );
- $this->assertFieldByName(
- 'uc_file_base_dir',
- 'sites/default/files/file-downloads',
- 'Download file path has been set.'
- );
- }
- /**
- * Helper function to upload test file for downloading.
- */
- protected function uploadTestFile() {
- $filename = 'README.txt';
- // Use the Ubercart README.txt because we know it will always be there
- // and we know in advance how big it is.
- copy(drupal_get_path('module', 'uc_file') . '/../' . $filename,
- 'sites/default/files/file-downloads/README.txt'
- );
- return $filename;
- }
- /**
- * {@inheritdoc}
- */
- protected function tearDown() {
- // Cleanup file download directory after test.
- drupal_unlink('sites/default/files/file-downloads/README.txt');
- drupal_rmdir('sites/default/files/file-downloads');
- parent::tearDown();
- }
- }
|