trac_tickets_206.inc

<?php
// $Id$

/**
 * MediaMosa is a Full Featured, Webservice Oriented Media Management and
 * Distribution platform (http://www.vpcore.nl)
 *
 * Copyright (C) 2009 SURFnet BV (http://www.surfnet.nl) and Kennisnet
 * (http://www.kennisnet.nl)
 *
 * MediaMosa is based on the open source Drupal platform and
 * was originally developed by Madcap BV (http://www.madcap.nl)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, you can find it at:
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 */

class ticket_206 extends trac_ticket {
  function get_info() {
    return array(
      'group' => VPX_UNITTEST_MEDIAFILE,
      'name' => 'User Story #206',
      'desc' => 'MM functies voor Mediafiles'
    );
  }
  function trac_test() {
    $this->s_user_story = "#206";

// [post] mediafile/create - maak een nieuwe mediafile aan
    $s_asset_id = $this->_create_asset();

    $a_args = array(
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
        'group_id' => SIMPLETEST_GROUP_ID,
      ),
      'uri' => array(
        'asset_id' => $s_asset_id
      )
    );

    $result = $this->_do_restcall(
      "media_management_create_mediafile",
      array($a_args)
    );

    if (isset($result->response['items'][1]['mediafile_id'])) {
      $s_mediafile_id = $result->response['items'][1]['mediafile_id'];
      $this->a_test_data['mediafile'][] = array('mediafile_id' => $s_mediafile_id);
    }
    $this->assertTrue(
      $result->response['header']['request_result'] === ERRORMESSAGE_OKAY,
      "Create a new mediafile: ". $s_mediafile_id ." (request_result = ". ERRORMESSAGE_OKAY ."): %s"
    );

// database lookup
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT * FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $a_args['get']['owner_id'] = $a_args['get']['user_id'];
    unset($a_args['get']['user_id']);
    $a_args['get']['sannas_mount_point'] = SAN_NAS_BASE_PATH;

    foreach (array_merge(array_keys($a_args['get']), array_keys($a_args['uri'])) as $subject) {
      $this->assertTrue(
        $array[$subject] === $s_asset_id || $array[$subject] == $a_args['get'][$subject],
        "Database lookup: (". $subject ." == ". $array[$subject] ."): %s"
      );
    }

// [get] asset/{id}/mediafile - lijst van mediafiles behorende bij de asset
    $a_args = array(
      'uri' => array(
        'asset_id' => $s_asset_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID
      ),
    );

    $result = $this->_do_restcall(
      "media_management_get_asset_mediafiles",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Get all mediafiles belonging to asset ". $s_asset_id ." (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );

// [get] mediafile/$mediafile_id - mediafile details met volledige informatie
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $s_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID
      ),
    );

    $result = $this->_do_restcall(
      "media_management_get_mediafile",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Get a details of a single mediafile (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );

    // default value transcode_inherits_acl should be true.
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT transcode_inherits_acl FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $this->assertTrue(
      $array['transcode_inherits_acl'] == 'TRUE',
      "Database lookup: (transcode_inherits_acl == ". $array['transcode_inherits_acl'] ."): %s"
    );

    // [post] mediafile/update - wijzig een bestaande mediafile (transcode_inherits_acl)
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $s_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
      ),
      'post' => array(
        'transcode_inherits_acl' => 'TRUE'
      )
    );

    $result = $this->_do_restcall(
      "media_management_update_mediafile",
      array($a_args)
    );

    // value of transcode_inherits_acl should be true now.
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT transcode_inherits_acl FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $this->assertTrue(
      $array['transcode_inherits_acl'] == 'TRUE',
      "Database lookup: (transcode_inherits_acl == ". $array['transcode_inherits_acl'] ."): %s"
    );

    // [post] mediafile/update - wijzig een bestaande mediafile (original_filename)
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $s_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
      ),
      'post' => array(
        'filename' => "new_filename.ext"
      )
    );

    $result = $this->_do_restcall(
      "media_management_update_mediafile",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Update the filename of a mediafile (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );

    // database lookup
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT filename FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $this->assertTrue(
      $a_args['post']['filename'] == $array['filename'],
      "Database lookup: (filename == ". $array['filename'] ."): %s"
    );

    // default value transcode_inherits_acl should still be true.
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT transcode_inherits_acl FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $this->assertTrue(
      $array['transcode_inherits_acl'] == 'TRUE',
      "Database lookup: (transcode_inherits_acl == ". $array['transcode_inherits_acl'] ."): %s"
    );

// [post] internal/mediafile/update - wijzig een bestaande mediafile (original_filename)
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $s_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
      ),
      'post' => array(
        'filename' => "een_andere_bestandsnaam.ext",
        'sannas_mount_point' => "/een/ander/pad",
        'is_original_file' => "false"
      ),
    );

    $result = $this->_do_restcall(
      "media_management_internal_update_mediafile",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "[internal] Update the filename, san/nas path and is_original_file of a mediafile (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );

// database lookup
    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT * FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $a_args['get']['owner_id'] = $a_args['get']['user_id'];
    unset($a_args['get']['user_id']);
    foreach (array_merge($a_args['get'], $a_args['uri'], $a_args['post']) as $subject => $value) {
      $this->assertTrue(
        $array[$subject] === $s_asset_id || strtoupper($array[$subject]) === strtoupper($value),
        "Database lookup: (". $subject ." == ". $array[$subject] ."): %s"
      );
    }

// [post] internal/mediafile/create - maak een nieuwe mediafile aan (met mediafile_id en original_filename)
    $a_args = array(
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
        'group_id' => SIMPLETEST_GROUP_ID,
      ),
      'internal' => array(
        'is_original_file' => "false",
        'filename' => "een_niet_bestaande_naam.wmv",
        'mediafile_id' => vpx_create_hash(1, 1),
        'sannas_mount_point' => "/dit/pad/bestaat/niet",
      ),
      'uri' => array(
        'asset_id' => $s_asset_id
      )
    );

    $result = $this->_do_restcall(
      "media_management_create_mediafile",
      array($a_args)
    );

    $s_mediafile_id = $result->response['items'][1]['mediafile_id'];

    $this->assertTrue(
      $result->response['header']['request_result'] === ERRORMESSAGE_OKAY,
      "[internal] Create a new mediafile: ". $s_mediafile_id ." (request_result = ". ERRORMESSAGE_OKAY ."): %s"
    );

// database lookup
    // Is normally done after a analize, but we need it to test is_external flag
    _media_management_update_asset_info($s_mediafile_id);

    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT * FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();

    $a_args['get']['owner_id'] = $a_args['get']['user_id'];
    unset($a_args['get']['user_id']);

    foreach (array_merge($a_args['get'], $a_args['uri'], $a_args['internal']) as $subject => $value) {
      $this->assertTrue(
        $array[$subject] === $s_asset_id || strtoupper($array[$subject]) === strtoupper($value),
        "Database lookup: (". $subject ." == ". $array[$subject] ."): %s"
      );
    }

// vraag de asset op
    $a_args = array(
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
      ),
      'uri' => array(
        'asset_id' => $s_asset_id,
      ),
    );

    $result = $this->_do_restcall(
      "media_management_get_asset",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] == ERRORCODE_OKAY,
      "Fetch the asset (request_result_id = ". $result->response['header']['request_result_id'] .")"
    );

    $item = reset($result->response['items']);

    $this->assertTrue(
      $item['is_external'] == 'FALSE',
      'is_external must be FALSE, %s'
    );

    $s_asset_id_2 = $this->_create_asset();

    $a_args = array(
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'user_id' => SIMPLETEST_USER_ID,
        'group_id' => SIMPLETEST_GROUP_ID,
        'uri' => 'http://www.streamit.com/test/test.flv',
      ),
      'internal' => array(
         'is_original_file' => "true",
      ),
      'uri' => array(
        'asset_id' => $s_asset_id_2
      )
    );

    $result = $this->_do_restcall(
      "media_management_create_mediafile",
      array($a_args)
    );

    $s_mediafile_id = $result->response['items'][1]['mediafile_id'];

    $this->assertTrue(
      $result->response['header']['request_result'] === ERRORMESSAGE_OKAY,
      "Create a new mediafile with external link: ". $s_mediafile_id ." (request_result = ". ERRORMESSAGE_OKAY ."): %s"
    );

// database lookup

    // Is normally done after a analize, but we need it to test is_external flag
    _media_management_update_asset_info($s_mediafile_id);

    db_set_active('data');
    $array = db_fetch_array(db_query("SELECT * FROM {mediafile} WHERE mediafile_id = '%s'", $s_mediafile_id));
    db_set_active();
    $a_args['get']['owner_id'] = $a_args['get']['user_id'];
    unset($a_args['get']['user_id']);

    foreach (array_merge($a_args['get'], $a_args['uri']) as $subject => $value) {
      $this->assertTrue(
        $array[$subject] === $s_asset_id || strtoupper($array[$subject]) === strtoupper($value),
        "Database lookup: (". $subject ." == ". $array[$subject] ."): %s"
      );
    }

// vraag de asset op
    $a_args = array(
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
      ),
      'uri' => array(
        'asset_id' => $s_asset_id_2,
      ),
    );

    $result = $this->_do_restcall(
      "media_management_get_asset",
      array($a_args)
    );

    $this->assertTrue(
      $result->response['header']['request_result_id'] == ERRORCODE_OKAY,
      "Fetch the asset (request_result_id = ". $result->response['header']['request_result_id'] .")"
    );

    $item = reset($result->response['items']);

    $this->assertTrue(
      $item['is_external'] == 'TRUE',
      'is_external must be TRUE, %s'
    );

    //
    // show_stills
    //
    $still_asset_id = $this->_create_asset();
    $still_mediafile_id = $this->_create_mediafile($still_asset_id);
    $s_desc = null;
    $still_time_code = 10;
    $still_order = 0;
    $still_type = 'NONE';
    $still_default = 'TRUE';
    $tag = '';
    $still_id = $this->_create_still($still_asset_id, $s_desc, $still_time_code, $still_order, $still_type, $still_default, $still_mediafile_id, $tag);

    // show_stills = NULL
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $still_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID
      ),
    );
    $result = $this->_do_restcall(
      "media_management_get_mediafile",
      array($a_args)
    );
    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Get mediafile ". $still_mediafile_id ." (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );
    $item = reset($result->response['items']);
    $this->assertTrue(
      isset($item['still']),
      'Still is isset (show_stills=NULL), %s'
    );

    // show_stills = TRUE
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $still_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'show_stills' => 'TRUE',
      ),
    );
    $result = $this->_do_restcall(
      "media_management_get_mediafile",
      array($a_args)
    );
    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Get mediafile ". $still_mediafile_id ." (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );
    $item = reset($result->response['items']);
    $this->assertTrue(
      isset($item['still']),
      'Still is isset (show_stills=TRUE), %s'
    );

    // show_stills = FALSE
    $a_args = array(
      'uri' => array(
        'mediafile_id' => $still_mediafile_id
      ),
      'get' => array(
        'app_id' => SIMPLETEST_APP_ID,
        'show_stills' => 'FALSE',
      ),
    );
    $result = $this->_do_restcall(
      "media_management_get_mediafile",
      array($a_args)
    );
    $this->assertTrue(
      $result->response['header']['request_result_id'] === ERRORCODE_OKAY,
      "Get mediafile ". $still_mediafile_id ." (request_result_id = ". ERRORCODE_OKAY ."): %s"
    );
    $item = reset($result->response['items']);
    $this->assertFalse(
      isset($item['still']),
      'Still is isset (show_stills=FALSE), %s'
    );

  }
}