test_webservices.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <?php
  2. /**
  3. * Set of unit tests for the web services
  4. *
  5. * @author Guillaume Viguier <guillaume.viguier@beeznest.com>
  6. */
  7. ini_set('soap.wsdl_cache_enabled', 0);
  8. require_once(dirname(__FILE__).'/../main/inc/global.inc.php');
  9. require_once(dirname(__FILE__).'/simpletest/autorun.php');
  10. class TestSoapWebService extends UnitTestCase {
  11. protected $_secret_key;
  12. protected $_encrypt_method;
  13. protected $_client;
  14. public function __construct() {
  15. $configuration = $GLOBALS['_configuration'];
  16. $security_key = $configuration['security_key'];
  17. $ip_address = '::1';
  18. $this->_secret_key = sha1($ip_address.$security_key);
  19. $this->_encrypt_method = $_GLOBALS['userPasswordCrypted'];
  20. $this->_client = new SoapClient($configuration['root_web'].'main/webservices/soap.php?wsdl');
  21. }
  22. protected function getUserArray() {
  23. $user = array(
  24. 'firstname' => 'Guillaume',
  25. 'lastname' => 'Viguier',
  26. 'status' => 5,
  27. 'loginname' => 'guillaumev',
  28. 'password' => 'guillaume',
  29. 'encrypt_method' => '',
  30. 'user_id_field_name' => 'chamilo_user_id',
  31. 'user_id_field_value' => '',
  32. 'visibility' => 1,
  33. 'email' => 'guillaume.viguier@beeznest.com',
  34. 'language' => 'english',
  35. 'phone' => '123456',
  36. 'expiration_date' => '0000-00-00 00:00:00',
  37. 'extras' => array());
  38. return $user;
  39. }
  40. protected function getCourseArray() {
  41. $course = array(
  42. 'title' => 'My test course',
  43. 'category_code' => 'LANG',
  44. 'wanted_code' => '110',
  45. 'tutor_name' => 'Guillaume Viguier',
  46. 'course_admin_user_id_field_name' => 'chamilo_user_id',
  47. 'course_admin_user_id_value' => '1',
  48. 'language' => 'spanish',
  49. 'course_id_field_name' => 'chamilo_course_id',
  50. 'course_id_value' => '',
  51. 'extras' => array());
  52. return $course;
  53. }
  54. protected function getSessionArray() {
  55. $end_date = date('Y') + 1;
  56. $end_date .= '-'.date('m-d');
  57. $session = array(
  58. 'name' => 'My session',
  59. 'start_date' => date('Y-m-d'),
  60. 'end_date' => $end_date,
  61. 'nb_days_access_before' => 0,
  62. 'nb_days_access_after' => 0,
  63. 'nolimit' => 0,
  64. 'visibility' => 1,
  65. 'user_id_field_name' => 'chamilo_user_id',
  66. 'user_id_value' => '1',
  67. 'session_id_field_name' => 'chamilo_session_id',
  68. 'session_id_value' => '',
  69. 'extras' => array());
  70. return $session;
  71. }
  72. protected function soapCall($method, $arguments) {
  73. return $this->_client->__soapCall($method, $arguments);
  74. }
  75. protected function createUser() {
  76. $user = $this->getUserArray();
  77. $result = $this->soapCall('WSUser.CreateUser', array_merge(array('secret_key' => $this->_secret_key), $user));
  78. return $result;
  79. }
  80. protected function createCourse() {
  81. $course = $this->getCourseArray();
  82. $result = $this->soapCall('WSCourse.CreateCourse', array_merge(array('secret_key' => $this->_secret_key), $course));
  83. return $result;
  84. }
  85. public function testTest() {
  86. $result = $this->soapCall('WS.test', array());
  87. $this->assertEqual($result, "success");
  88. }
  89. public function testInvalidKey() {
  90. $secret_key = 'invalid';
  91. try {
  92. $this->soapCall('WSUser.DisableUser', array('secret_key' => $secret_key, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => 3));
  93. $this->fail('Exception was expected');
  94. } catch(SOAPFault $f) {
  95. $this->pass();
  96. }
  97. }
  98. public function testCreateUser() {
  99. $user = $this->getUserArray();
  100. $result = $this->soapCall('WSUser.CreateUser', array_merge(array('secret_key' => $this->_secret_key), $user));
  101. $this->assertIsA($result, 'int');
  102. //Delete user created
  103. $this->soapCall('WSUser.DeleteUser', array('secret_key' => $this->_secret_key, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => $result));
  104. }
  105. public function testCreateUserEncrypted() {
  106. $user = $this->getUserArray();
  107. $user['encrypt_method'] = $this->_encrypt_method;
  108. if($this->_encrypt_method == 'md5') {
  109. $user['password'] = md5('guillaume');
  110. } else if($this->_encrypt_method == 'sha1') {
  111. $user['password'] = sha1('guillaume');
  112. }
  113. $user['extras'] = array(array('field_name' => 'salt', 'field_value' => '1234'));
  114. $result = $this->soapCall('WSUser.CreateUser', array_merge(array('secret_key' => $this->_secret_key), $user));
  115. $this->assertIsA($result, 'int');
  116. //Delete user created
  117. $this->soapCall('WSUser.DeleteUser', array('secret_key' => $this->_secret_key, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => $result));
  118. }
  119. public function testCourseCreation() {
  120. $course = $this->getCourseArray();
  121. $result = $this->soapCall('WSCourse.CreateCourse', array_merge(array('secret_key' => $this->_secret_key), $course));
  122. $this->assertIsA($result, 'int');
  123. // Delete course created
  124. $this->soapCall('WSCourse.DeleteCourse', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => $result));
  125. }
  126. /*public function testCourseSubscriptionAndUnsubscription() {
  127. //$course_id = $this->createCourse();
  128. //$user_id = $this->createUser();
  129. //echo $course_id.';'.$user_id;
  130. //$this->soapCall('WSCourse.SubscribeUserToCourse', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => 8, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => 38, 'status' => 1));
  131. //$this->soapCall('WSCourse.UnsubscribeUserFromCourse', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => 8, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => 38));
  132. }*/
  133. /*public function testCourseDescriptions() {
  134. //$this->soapCall('WSCourse.EditCourseDescription', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => 8, 'course_desc_id' => 1, 'course_desc_title' => 'My description', 'course_desc_content' => 'This is my new description'));
  135. //$result = $this->soapCall('WSCourse.GetCourseDescriptions', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => 8));
  136. //var_dump($result);
  137. $result = $this->soapCall('WSCourse.ListCourses', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id'));
  138. var_dump($result);
  139. }*/
  140. public function testSessionCreation() {
  141. $session = $this->getSessionArray();
  142. $result = $this->soapCall('WSSession.CreateSession', array_merge(array('secret_key' => $this->_secret_key), $session));
  143. $this->assertIsA($result, 'int');
  144. $this->soapCall('WSSession.DeleteSession', array('secret_key' => $this->_secret_key, 'session_id_field_name' => 'chamilo_session_id', 'session_id_value' => $result));
  145. }
  146. /*public function testUserSessionSubscriptionAndUnsubscription() {
  147. $this->soapCall('WSSession.UnsubscribeCourseFromSession', array('secret_key' => $this->_secret_key, 'course_id_field_name' => 'chamilo_course_id', 'course_id_value' => 8, 'session_id_field_name' => 'chamilo_session_id', 'session_id_value' => 3));
  148. //$this->soapCall('WSSession.UnsubscribeUserFromSession', array('secret_key' => $this->_secret_key, 'user_id_field_name' => 'chamilo_user_id', 'user_id_value' => 38, 'session_id_field_name' => 'chamilo_session_id', 'session_id_value' => 3));
  149. }*/
  150. }