scorm_engine 0.7.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (182) hide show
  1. checksums.yaml +4 -4
  2. data/lib/scorm_engine/api/endpoints.rb +4 -0
  3. data/lib/scorm_engine/api/endpoints/configuration.rb +94 -0
  4. data/lib/scorm_engine/api/endpoints/courses/configuration.rb +1 -1
  5. data/lib/scorm_engine/api/endpoints/registrations/configuration.rb +1 -1
  6. data/lib/scorm_engine/api/endpoints/tenants/configuration.rb +108 -0
  7. data/lib/scorm_engine/configuration.rb +4 -2
  8. data/lib/scorm_engine/faraday/connection.rb +10 -4
  9. data/lib/scorm_engine/faraday/request.rb +19 -4
  10. data/lib/scorm_engine/models.rb +1 -0
  11. data/lib/scorm_engine/models/tenant_configuration.rb +34 -0
  12. data/lib/scorm_engine/version.rb +1 -1
  13. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/is_successful.yml +24 -15
  14. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_platform.yml +24 -15
  15. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about/knows_the_version.yml +24 -15
  16. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_before_option.yml +23 -15
  17. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/accepts_since_option.yml +23 -15
  18. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/is_successful.yml +23 -15
  19. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_combined_counts.yml +23 -15
  20. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_per_tenantcounts.yml +23 -15
  21. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/fails_when_settings_are_invalid.yml +46 -0
  22. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/is_successful.yml +42 -0
  23. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/is_successful.yml +931 -0
  24. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/returns_metadata_in_raw_response_when_included_in_options.yml +931 -0
  25. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/is_successful.yml +64 -0
  26. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/returns_settings_and_values.yml +64 -0
  27. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/fails_when_settings_are_invalid.yml +48 -0
  28. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/is_successful.yml +44 -0
  29. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/persists_the_settings.yml +207 -0
  30. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/fails_when_id_is_invalid.yml +23 -15
  31. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/works.yml +19 -9
  32. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/fails_when_id_is_invalid.yml +23 -15
  33. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/is_successful.yml +24 -16
  34. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/results/sucessfully_creates_the_Course_attributes.yml +24 -16
  35. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/fails_when_id_is_invalid.yml +23 -15
  36. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/is_successful.yml +23 -15
  37. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_preview/results/returns_a_URL_string.yml +23 -15
  38. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/fetches_a_single_course_but_perhaps_multiple_versions.yml +23 -15
  39. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_course_id_option/returns_404_when_ID_is_invalid.yml +23 -15
  40. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_all_the_courses.yml +65 -45
  41. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +32 -24
  42. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/fails_when_passed_an_invalid_value.yml +20 -10
  43. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/_since_option/works.yml +42 -19
  44. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/is_successful.yml +32 -19
  45. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/is_an_enumerator_of_Course_models.yml +32 -19
  46. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_courses/results/sucessfully_creates_the_Course_attributes.yml +32 -19
  47. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/fails_when_id_is_invalid.yml +23 -15
  48. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/is_successful.yml +23 -15
  49. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  50. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_course_id_is_invalid.yml +23 -15
  51. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  52. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/is_successful.yml +41 -19
  53. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_get_course_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  54. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_id_is_invalid.yml +25 -15
  55. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/fails_when_settings_are_invalid.yml +24 -12
  56. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/is_successful.yml +21 -9
  57. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_post_course_configuration/persists_the_settings.yml +88 -48
  58. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_course_id_is_invalid.yml +25 -15
  59. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  60. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/is_successful.yml +41 -19
  61. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Configuration/_put_course_configuration_setting/results/persists_the_changes.yml +61 -29
  62. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml +102 -95
  63. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml +73 -294
  64. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml +21 -9
  65. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/returns_success_even_when_id_is_invalid.yml +19 -9
  66. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/works.yml +19 -9
  67. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/fails_when_id_is_invalid.yml +22 -14
  68. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/is_successful.yml +22 -14
  69. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/results/sucessfully_creates_the_destination_attributes.yml +22 -14
  70. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/fails_when_invalid.yml +22 -14
  71. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination_dispatches_registration_count/works.yml +20 -10
  72. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_all_the_destinations.yml +48 -31
  73. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -15
  74. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/fails_when_passed_an_invalid_value.yml +22 -13
  75. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/_since_option/works.yml +24 -15
  76. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/is_successful.yml +23 -15
  77. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/is_an_enumerator_of_Destination_models.yml +23 -15
  78. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destinations/results/sucessfully_creates_the_Destination_attributes.yml +65 -13
  79. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful.yml +40 -18
  80. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination/is_successful_even_if_the_destination_id_is_not_unique.yml +21 -9
  81. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/fails_when_invalid.yml +24 -12
  82. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_false.yml +21 -9
  83. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_enabled/works_when_true.yml +21 -9
  84. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/fails_when_invalid.yml +24 -12
  85. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_false.yml +21 -9
  86. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_post_destination_dispatches_registration_instancing/works_when_true.yml +21 -9
  87. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/is_successful.yml +21 -9
  88. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_put_destination/results/sucessfully_creates_the_destination_attributes.yml +43 -23
  89. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/returns_success_even_when_id_is_invalid.yml +19 -7
  90. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch/works.yml +19 -7
  91. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/is_successful.yml +19 -7
  92. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_delete_dispatch_registration_count/succeeds_even_when_id_is_invalid.yml +19 -7
  93. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/fails_when_id_is_invalid.yml +22 -12
  94. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/is_successful.yml +23 -13
  95. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +23 -13
  96. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_false_when_disabled.yml +39 -15
  97. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_enabled/is_true_when_enabled.yml +39 -15
  98. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/fails_when_id_is_invalid.yml +41 -19
  99. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/is_successful.yml +42 -20
  100. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  101. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_id.yml +22 -12
  102. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_type.yml +20 -8
  103. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works.yml +24 -12
  104. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_AICC.yml +24 -12
  105. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM12.yml +24 -12
  106. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works_when_type_is_SCORM2004-3RD.yml +23 -11
  107. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_all_the_dispatches.yml +47 -27
  108. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_more_option_pagination_/returns_the_more_key_in_the_raw_response.yml +23 -13
  109. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/fails_when_passed_an_invalid_value.yml +20 -8
  110. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/_since_option/works.yml +23 -13
  111. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/is_successful.yml +23 -13
  112. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/is_an_enumerator_of_dispatch_models.yml +23 -13
  113. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatches/results/sucessfully_creates_the_dispatch_attributes.yml +21 -44
  114. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/is_successful.yml +38 -14
  115. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_post_dispatch/updates_if_same_dispatch_id.yml +65 -33
  116. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/is_successful.yml +19 -7
  117. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch/results/sucessfully_creates_the_dispatch_attributes.yml +42 -20
  118. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/fails_when_invalid.yml +22 -10
  119. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_false.yml +19 -7
  120. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_put_dispatch_enabled/works_when_true.yml +19 -7
  121. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/is_successful.yml +23 -15
  122. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/reports_the_api_is_up.yml +23 -15
  123. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/is_unsuccessful.yml +25 -17
  124. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Ping/_get_ping/with_invalid_password/returns_status_403.yml +25 -17
  125. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_failure_when_registration_does_not_exist.yml +23 -13
  126. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_delete_registration/is_successful_when_registration_exists.yml +19 -7
  127. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_false_when_registration_does_not_exist.yml +23 -13
  128. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_exists/is_true_when_registration_exists.yml +20 -8
  129. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/includes_results_we_expect.yml +26 -14
  130. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/is_successful.yml +26 -14
  131. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_instances/returns_an_array_of_registrations.yml +26 -14
  132. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/fails_when_id_is_invalid.yml +23 -13
  133. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/is_successful.yml +23 -13
  134. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_launch_link/results/returns_a_URL_string.yml +23 -13
  135. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/does_not_return_activity_details_by_default.yml +24 -14
  136. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/detail/returns_activity_details_if_requested.yml +24 -14
  137. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/fails_when_registration_does_not_exist.yml +23 -13
  138. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registration_progress/returns_a_registration_when_it_exists.yml +24 -14
  139. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/excludes_results.yml +22 -12
  140. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_course_id/includes_results.yml +26 -14
  141. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/excludes_results.yml +22 -12
  142. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/filtering_by_learner_id/includes_results.yml +26 -14
  143. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/includes_results_we_expect.yml +26 -14
  144. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/is_successful.yml +26 -14
  145. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_get_registrations/returns_an_array_of_registrations.yml +26 -14
  146. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_course_id_is_invalid.yml +22 -10
  147. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/fails_if_registration_id_already_exists.yml +20 -8
  148. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful.yml +38 -14
  149. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations/_post_registration/is_successful_even_when_given_a_UTF8/slashed_username.yml +38 -14
  150. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/fails_when_id_is_invalid.yml +23 -15
  151. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/is_successful.yml +23 -15
  152. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration/results/makes_settings_available_as_key/value_pairs.yml +23 -15
  153. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +23 -15
  154. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  155. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/is_successful.yml +41 -19
  156. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_get_registration_configuration_setting/results/returns_the_value_as_a_string.yml +41 -19
  157. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_id_is_invalid.yml +25 -15
  158. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/fails_when_settings_are_invalid.yml +24 -12
  159. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/is_successful.yml +21 -9
  160. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_post_registration_configuration/persists_the_settings.yml +88 -48
  161. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_registration_id_is_invalid.yml +25 -15
  162. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/fails_when_setting_id_is_invalid.yml +20 -10
  163. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/is_successful.yml +41 -19
  164. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_Configuration/_put_registration_configuration_setting/results/persists_the_changes.yml +61 -29
  165. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/fails_when_registration_does_not_exist.yml +23 -15
  166. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/is_successful.yml +23 -31
  167. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Registrations_LaunchHistory/_get_registration_launch_history/returns_an_array_of_registration_launch_histories.yml +23 -31
  168. data/spec/scorm_engine/api/endpoints/about_spec.rb +1 -1
  169. data/spec/scorm_engine/api/endpoints/configuration_spec.rb +82 -0
  170. data/spec/scorm_engine/api/endpoints/courses/configuration_spec.rb +5 -5
  171. data/spec/scorm_engine/api/endpoints/courses_spec.rb +6 -6
  172. data/spec/scorm_engine/api/endpoints/destinations_spec.rb +2 -2
  173. data/spec/scorm_engine/api/endpoints/dispatches_spec.rb +1 -1
  174. data/spec/scorm_engine/api/endpoints/registrations/configuration_spec.rb +5 -5
  175. data/spec/scorm_engine/api/endpoints/registrations_spec.rb +2 -2
  176. data/spec/scorm_engine/api/endpoints/tenants/configuration_spec.rb +126 -0
  177. data/spec/scorm_engine/faraday/connection_spec.rb +23 -5
  178. data/spec/scorm_engine/models/tenant_configuration_spec.rb +16 -0
  179. data/spec/support/vcr.rb +1 -0
  180. metadata +28 -13
  181. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/raises_ArgumentError_when_destination_id_is_missing.yml +0 -32
  182. data/spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/when_dispatch_has_registrations/knows_it_s_registration_count.yml +0 -63
@@ -25,7 +25,6 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
25
25
  course = courses.results.detect { |c| c.id == "testing-golf-explained" }
26
26
  expect(course.version).to be >= 0
27
27
  expect(course.title).to eq "Golf Explained - Run-time Basic Calls"
28
- expect(course.registration_count).to eq 0
29
28
  expect(course.updated).to be_a Time
30
29
  expect(course.description).to eq nil
31
30
  end
@@ -42,7 +41,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
42
41
  response = subject.get_courses(course_id: "invalid-bogus")
43
42
  expect(response.success?).to eq false
44
43
  expect(response.status).to eq 404
45
- expect(response.message).to match(/External Package ID 'invalid-bogus'/)
44
+ expect(response.message).to match(/'invalid-bogus'/)
46
45
  end
47
46
  end
48
47
 
@@ -76,7 +75,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
76
75
  end
77
76
 
78
77
  it "returns the :more key in the raw response" do
79
- expect(subject.get_courses.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
78
+ expect(subject.get_courses.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
80
79
  end
81
80
 
82
81
  it "returns all the courses" do
@@ -106,7 +105,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
106
105
  response = subject.delete_course(course_id: "nonexistent-course")
107
106
  expect(response.success?).to eq false
108
107
  expect(response.status).to eq 404
109
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
108
+ expect(response.message).to match(/'nonexistent-course'/)
110
109
  end
111
110
  end
112
111
 
@@ -136,7 +135,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
136
135
  response = subject.get_course_preview(course_id: "nonexistent-course")
137
136
  expect(response.success?).to eq false
138
137
  expect(response.status).to eq 404
139
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
138
+ expect(response.message).to match(/'nonexistent-course'/)
140
139
  expect(response.result).to eq nil
141
140
  end
142
141
  end
@@ -151,6 +150,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
151
150
  describe "results" do
152
151
  it "returns a URL string" do
153
152
  url = response.result
153
+ # expect(url).to match(%r{/ScormEngineInterface/defaultui/launch.jsp\?jwt=.*})
154
154
  expect(url).to match(%r{/defaultui/launch.jsp\?.*testing-golf-explained.*RedirectOnExitUrl=https%3A%2F%2Fexample.com})
155
155
  end
156
156
  end
@@ -159,7 +159,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Courses do
159
159
  response = subject.get_course_preview(course_id: "nonexistent-course")
160
160
  expect(response.success?).to eq false
161
161
  expect(response.status).to eq 404
162
- expect(response.message).to match(/External Package ID 'nonexistent-course'/)
162
+ expect(response.message).to match(/'nonexistent-course'/)
163
163
  expect(response.result).to eq nil
164
164
  end
165
165
  end
@@ -48,7 +48,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Destinations do
48
48
  expect(destinations.success?).to eq false
49
49
  expect(destinations.status).to eq 400
50
50
  expect(destinations.results.to_a).to eq []
51
- expect(destinations.message).to match(/'invalid' is either not a timestamp or seems to be not formatted according to ISO 8601/)
51
+ expect(destinations.message).to match(/'invalid'/)
52
52
  end
53
53
  end
54
54
  end
@@ -63,7 +63,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Destinations do
63
63
  end
64
64
 
65
65
  it "returns the :more key in the raw response" do
66
- expect(subject.get_destinations.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
66
+ expect(subject.get_destinations.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
67
67
  end
68
68
 
69
69
  it "returns all the destinations" do
@@ -85,7 +85,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Dispatches do
85
85
  end
86
86
 
87
87
  it "returns the :more key in the raw response" do
88
- expect(subject.get_dispatches.raw_response.body["more"]).to match(%r{https?://.*&more=.+})
88
+ expect(subject.get_dispatches.raw_response.body["more"]).to match(%r{(https?://)?.*&more=.+})
89
89
  end
90
90
 
91
91
  it "returns all the dispatches" do
@@ -40,7 +40,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
40
40
  response = subject.get_registration_configuration(registration_id: "nonexistent-registration", settings: {})
41
41
  expect(response.success?).to eq false
42
42
  expect(response.status).to eq 404
43
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
43
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
44
44
  expect(response.result).to eq nil
45
45
  end
46
46
  end
@@ -79,7 +79,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
79
79
  response = subject.post_registration_configuration(registration_id: "nonexistent-registration", settings: {})
80
80
  expect(response.success?).to eq false
81
81
  expect(response.status).to eq 404
82
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
82
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
83
83
  expect(response.result).to eq nil
84
84
  end
85
85
 
@@ -87,7 +87,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
87
87
  response = subject.post_registration_configuration(registration_id: registration_options[:registration_id], settings: { "NonExistentSettingTotesBogus" => "YES" })
88
88
  expect(response.success?).to eq false
89
89
  expect(response.status).to eq 400
90
- expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
90
+ expect(response.message).to match(/NonExistentSettingTotesBogus/)
91
91
  end
92
92
  end
93
93
 
@@ -111,7 +111,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
111
111
  response = subject.get_registration_configuration_setting(registration_id: "nonexistent-registration", setting_id: "PlayerStatusRollupModeThresholdScore")
112
112
  expect(response.success?).to eq false
113
113
  expect(response.status).to eq 404
114
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
114
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
115
115
  expect(response.result).to eq nil
116
116
  end
117
117
 
@@ -144,7 +144,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations::Configuration do
144
144
  response = subject.put_registration_configuration_setting(registration_id: "nonexistent-registration", setting_id: "PlayerStatusRollupModeThresholdScore", value: "42")
145
145
  expect(response.success?).to eq false
146
146
  expect(response.status).to eq 404
147
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
147
+ expect(response.message).to match(/Registration ID 'nonexistent-registration'/)
148
148
  expect(response.result).to eq nil
149
149
  end
150
150
 
@@ -183,7 +183,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations do
183
183
  aggregate_failures do
184
184
  expect(response.success?).to eq false
185
185
  expect(response.status).to eq 400
186
- expect(response.message).to match(/External Package ID 'invalid-bogus'/)
186
+ expect(response.message).to match(/'invalid-bogus'/)
187
187
  end
188
188
  end
189
189
 
@@ -215,7 +215,7 @@ RSpec.describe ScormEngine::Api::Endpoints::Registrations do
215
215
  response = subject.get_registration_launch_link(registration_id: "nonexistent-registration")
216
216
  expect(response.success?).to eq false
217
217
  expect(response.status).to eq 404
218
- expect(response.message).to match(/External Registration ID 'nonexistent-registration'/)
218
+ expect(response.message).to match(/'nonexistent-registration'/)
219
219
  expect(response.result).to eq nil
220
220
  end
221
221
  end
@@ -0,0 +1,126 @@
1
+ #
2
+ # NOTE: This spec will only run if a real scorm engine is available!
3
+ # This is because the results returned expose sensitive information
4
+ # and we'd rather they not get cached to VCR fixtures.
5
+ #
6
+ RSpec.describe ScormEngine::Api::Endpoints::Tenants::Configuration do
7
+ around do |example|
8
+ if scorm_engine_is_available?
9
+ VCR.turned_off do
10
+ example.run
11
+ end
12
+ else
13
+ warn "Not running because SCORM engine is not truly available."
14
+ end
15
+ end
16
+
17
+ let(:subject) { scorm_engine_client }
18
+
19
+ describe "#get_tenant_configuration" do
20
+ let(:response) { subject.get_tenant_configuration }
21
+
22
+ it "is successful" do
23
+ expect(response.success?).to eq true
24
+ end
25
+
26
+ describe "results" do
27
+ it "makes settings available as key/value pairs" do
28
+ settings = response.result.settings
29
+ aggregate_failures do
30
+ # just a sampling
31
+ expect(settings.key?("ApiPostbackTimeoutSeconds")).to be_truthy
32
+ expect(settings.key?("ApiUseSignedLaunchLinks")).to be_truthy
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ describe "#post_tenant_configuration" do
39
+ let(:response) {
40
+ subject.post_tenant_configuration(
41
+ settings: { "ApiPostbackTimeoutSeconds" => "15",
42
+ "ApiUseSignedLaunchLinks" => "true" }
43
+ )
44
+ }
45
+
46
+ it "is successful" do
47
+ expect(response.success?).to eq true
48
+ end
49
+
50
+ it "persists the settings" do
51
+ response # trigger the api
52
+ sleep 30
53
+
54
+ configuration = subject.get_tenant_configuration.result
55
+ expect(configuration.settings["ApiPostbackTimeoutSeconds"]).to eq "15"
56
+ expect(configuration.settings["ApiUseSignedLaunchLinks"]).to eq "true"
57
+
58
+ subject.post_tenant_configuration(
59
+ settings: { "ApiPostbackTimeoutSeconds" => "20",
60
+ "ApiUseSignedLaunchLinks" => "false" }
61
+ )
62
+ sleep 30
63
+
64
+ configuration = subject.get_tenant_configuration.result
65
+ expect(configuration.settings["ApiPostbackTimeoutSeconds"]).to eq "20"
66
+ expect(configuration.settings["ApiUseSignedLaunchLinks"]).to eq "false"
67
+ end
68
+
69
+ it "fails when settings are invalid" do
70
+ response = subject.post_tenant_configuration(settings: { "NonExistentSettingTotesBogus" => "YES" })
71
+ expect(response.success?).to eq false
72
+ expect(response.status).to eq 400
73
+ expect(response.message).to match(/NonExistentSettingTotesBogus/)
74
+ end
75
+ end
76
+
77
+ describe "#get_tenant_configuration_setting" do
78
+ let(:response) {
79
+ subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 42)
80
+ sleep 30
81
+ subject.get_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds")
82
+ }
83
+
84
+ it "is successful" do
85
+ expect(response.success?).to eq true
86
+ end
87
+
88
+ describe "results" do
89
+ it "returns the value as a string" do
90
+ expect(response.result).to eq "42"
91
+ end
92
+ end
93
+
94
+ it "fails when setting_id is invalid" do
95
+ response = subject.get_tenant_configuration_setting(setting_id: "NonExistentSettingTotesBogus")
96
+ expect(response.success?).to eq false
97
+ expect(response.status).to eq 400
98
+ expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
99
+ expect(response.result).to eq nil
100
+ end
101
+ end
102
+
103
+ describe "#put_tenant_configuration_setting" do
104
+ let(:response) { subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 99) }
105
+
106
+ it "is successful" do
107
+ expect(response.success?).to eq true
108
+ end
109
+
110
+ describe "results" do
111
+ it "persists the changes" do
112
+ response # trigger the api
113
+ subject.put_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds", value: 100)
114
+ new_response = subject.get_tenant_configuration_setting(setting_id: "ApiPostbackTimeoutSeconds")
115
+ expect(new_response.result).to eq "100"
116
+ end
117
+ end
118
+
119
+ it "fails when setting_id is invalid" do
120
+ response = subject.get_tenant_configuration_setting(setting_id: "NonExistentSettingTotesBogus", value: "42")
121
+ expect(response.success?).to eq false
122
+ expect(response.status).to eq 400
123
+ expect(response.message).to match(/No configuration setting found with id.*NonExistentSettingTotesBogus/)
124
+ end
125
+ end
126
+ end
@@ -8,14 +8,32 @@ RSpec.describe ScormEngine::Faraday::Connection do
8
8
  end
9
9
 
10
10
  describe "#base_uri" do
11
- let(:uri) { scorm_engine_client.base_uri }
11
+ {
12
+ 1 => "https://scorm.engine/ScormEngineInterface/api/v1/",
13
+ 2 => "https://scorm.engine/ScormEngineInterface/api/v2/",
14
+ }.each do |version, expected_url|
15
+ context "with version #{version}" do
16
+ let(:uri) { scorm_engine_client.base_uri(version: version) }
12
17
 
13
- it "returns a URI::HTTPS instance" do
14
- expect(uri).to be_a(URI::HTTPS)
18
+ it "returns a URI::HTTPS instance" do
19
+ expect(uri).to be_a(URI::HTTPS)
20
+ end
21
+
22
+ it "is correct given the configuration" do
23
+ expect(uri.to_s).to eq expected_url
24
+ end
25
+ end
15
26
  end
27
+ end
28
+
29
+ describe "#connection" do
30
+ describe "version" do
31
+ it "passes on to #base_uri" do
32
+ client = ScormEngine::Client.new(tenant: "test")
16
33
 
17
- it "is correct given the configuration" do
18
- expect(uri.to_s).to eq "https://scorm.engine/ScormEngineInterface/api/v1/"
34
+ expect(client).to receive(:base_uri).with(version: 2).and_call_original
35
+ client.send(:connection, { version: 2 })
36
+ end
19
37
  end
20
38
  end
21
39
  end
@@ -0,0 +1,16 @@
1
+ RSpec.describe ScormEngine::Models::TenantConfiguration do
2
+ describe ".new_from_api" do
3
+ describe ":settings" do
4
+ it "a hash built from configurationItems" do
5
+ config = described_class.new_from_api(
6
+ "configurationItems" => [
7
+ { "id" => "Foo", "value" => "YES" },
8
+ { "id" => "Bar", "value" => "123" },
9
+ ]
10
+ )
11
+ expect(config.settings["Foo"]).to eq "YES"
12
+ expect(config.settings["Bar"]).to eq "123"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -18,6 +18,7 @@ end
18
18
  INSERTED_CASSETTES = Set.new
19
19
  module CassetteReporter
20
20
  def insert_cassette(name, options = {})
21
+ return unless VCR.turned_on?
21
22
  INSERTED_CASSETTES << VCR::Cassette.new(name, options).file
22
23
  super
23
24
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scorm_engine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.2
4
+ version: 0.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hallstrom
8
+ - Mel Green
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-02-15 00:00:00.000000000 Z
12
+ date: 2020-11-13 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: faraday
@@ -16,14 +17,14 @@ dependencies:
16
17
  requirements:
17
18
  - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: 0.12.2
20
+ version: '0.12'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: 0.12.2
27
+ version: '0.12'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: faraday_middleware
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +87,14 @@ dependencies:
86
87
  requirements:
87
88
  - - "~>"
88
89
  - !ruby/object:Gem::Version
89
- version: '10.0'
90
+ version: '13.0'
90
91
  type: :development
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - "~>"
95
96
  - !ruby/object:Gem::Version
96
- version: '10.0'
97
+ version: '13.0'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: rspec
99
100
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +129,14 @@ dependencies:
128
129
  requirements:
129
130
  - - "~>"
130
131
  - !ruby/object:Gem::Version
131
- version: '1.2'
132
+ version: '2.3'
132
133
  type: :development
133
134
  prerelease: false
134
135
  version_requirements: !ruby/object:Gem::Requirement
135
136
  requirements:
136
137
  - - "~>"
137
138
  - !ruby/object:Gem::Version
138
- version: '1.2'
139
+ version: '2.3'
139
140
  - !ruby/object:Gem::Dependency
140
141
  name: vcr
141
142
  requirement: !ruby/object:Gem::Requirement
@@ -164,9 +165,10 @@ dependencies:
164
165
  - - "~>"
165
166
  - !ruby/object:Gem::Version
166
167
  version: '0.9'
167
- description: Ruby Client for Rustici's SCORM Engine 2017.1 API
168
+ description: Ruby Client for Rustici's SCORM Engine 2017.1 & 20.1 API
168
169
  email:
169
170
  - phallstrom@instructure.com
171
+ - mgreen@instructure.com
170
172
  executables: []
171
173
  extensions: []
172
174
  extra_rdoc_files: []
@@ -176,6 +178,7 @@ files:
176
178
  - lib/scorm_engine.rb
177
179
  - lib/scorm_engine/api/endpoints.rb
178
180
  - lib/scorm_engine/api/endpoints/about.rb
181
+ - lib/scorm_engine/api/endpoints/configuration.rb
179
182
  - lib/scorm_engine/api/endpoints/courses.rb
180
183
  - lib/scorm_engine/api/endpoints/courses/configuration.rb
181
184
  - lib/scorm_engine/api/endpoints/courses/import.rb
@@ -185,6 +188,7 @@ files:
185
188
  - lib/scorm_engine/api/endpoints/registrations.rb
186
189
  - lib/scorm_engine/api/endpoints/registrations/configuration.rb
187
190
  - lib/scorm_engine/api/endpoints/registrations/launch_history.rb
191
+ - lib/scorm_engine/api/endpoints/tenants/configuration.rb
188
192
  - lib/scorm_engine/client.rb
189
193
  - lib/scorm_engine/configuration.rb
190
194
  - lib/scorm_engine/faraday/connection.rb
@@ -204,6 +208,7 @@ files:
204
208
  - lib/scorm_engine/models/registration_configuration.rb
205
209
  - lib/scorm_engine/models/registration_launch_history.rb
206
210
  - lib/scorm_engine/models/registration_runtime_interaction.rb
211
+ - lib/scorm_engine/models/tenant_configuration.rb
207
212
  - lib/scorm_engine/response.rb
208
213
  - lib/scorm_engine/utils.rb
209
214
  - lib/scorm_engine/version.rb
@@ -215,6 +220,15 @@ files:
215
220
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/is_successful.yml
216
221
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_combined_counts.yml
217
222
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_About/_get_about_user_count/tracks_per_tenantcounts.yml
223
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/fails_when_settings_are_invalid.yml
224
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_delete_app_configuration/is_successful.yml
225
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/is_successful.yml
226
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/includeMetadata/returns_metadata_in_raw_response_when_included_in_options.yml
227
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/is_successful.yml
228
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_get_app_configuration/returns_settings_and_values.yml
229
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/fails_when_settings_are_invalid.yml
230
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/is_successful.yml
231
+ - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Configuration/_post_app_configuration/persists_the_settings.yml
218
232
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/fails_when_id_is_invalid.yml
219
233
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_delete_course/works.yml
220
234
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses/_get_course_detail/fails_when_id_is_invalid.yml
@@ -250,7 +264,6 @@ files:
250
264
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/successful_imports/works.yml
251
265
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_get_course_import/unsuccessful_imports/fails_to_import_given_an_invalid_url.yml
252
266
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Courses_Import/_post_course_import/unsuccessful_imports/fails_to_import_a_previously_existing_course.yml
253
- - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/raises_ArgumentError_when_destination_id_is_missing.yml
254
267
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/returns_success_even_when_id_is_invalid.yml
255
268
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_delete_destination/works.yml
256
269
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Destinations/_get_destination/fails_when_id_is_invalid.yml
@@ -287,7 +300,6 @@ files:
287
300
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/fails_when_id_is_invalid.yml
288
301
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/is_successful.yml
289
302
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/results/sucessfully_creates_the_dispatch_attributes.yml
290
- - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_registration_count/when_dispatch_has_registrations/knows_it_s_registration_count.yml
291
303
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_id.yml
292
304
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/fails_given_an_invalid_type.yml
293
305
  - spec/fixtures/vcr/ScormEngine_Api_Endpoints_Dispatches/_get_dispatch_zip/works.yml
@@ -358,6 +370,7 @@ files:
358
370
  - spec/fixtures/zip/Non-working SCORM.zip
359
371
  - spec/fixtures/zip/RuntimeBasicCalls_SCORM20043rdEdition.zip
360
372
  - spec/scorm_engine/api/endpoints/about_spec.rb
373
+ - spec/scorm_engine/api/endpoints/configuration_spec.rb
361
374
  - spec/scorm_engine/api/endpoints/courses/configuration_spec.rb
362
375
  - spec/scorm_engine/api/endpoints/courses/import_spec.rb
363
376
  - spec/scorm_engine/api/endpoints/courses_spec.rb
@@ -367,6 +380,7 @@ files:
367
380
  - spec/scorm_engine/api/endpoints/registrations/configuration_spec.rb
368
381
  - spec/scorm_engine/api/endpoints/registrations/launch_history_spec.rb
369
382
  - spec/scorm_engine/api/endpoints/registrations_spec.rb
383
+ - spec/scorm_engine/api/endpoints/tenants/configuration_spec.rb
370
384
  - spec/scorm_engine/configuration_spec.rb
371
385
  - spec/scorm_engine/faraday/connection_spec.rb
372
386
  - spec/scorm_engine/models/base_spec.rb
@@ -382,6 +396,7 @@ files:
382
396
  - spec/scorm_engine/models/registration_launch_history_spec.rb
383
397
  - spec/scorm_engine/models/registration_runtime_interaction_spec.rb
384
398
  - spec/scorm_engine/models/registration_spec.rb
399
+ - spec/scorm_engine/models/tenant_configuration_spec.rb
385
400
  - spec/scorm_engine/utils_spec.rb
386
401
  - spec/scorm_engine/version_spec.rb
387
402
  - spec/scorm_engine_spec.rb
@@ -410,8 +425,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
410
425
  version: '0'
411
426
  requirements: []
412
427
  rubyforge_project:
413
- rubygems_version: 2.7.6
428
+ rubygems_version: 2.7.6.2
414
429
  signing_key:
415
430
  specification_version: 4
416
- summary: Ruby Client for Rustici's SCORM Engine 2017.1 API
431
+ summary: Ruby Client for Rustici's SCORM Engine API
417
432
  test_files: []