groupdocs 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. checksums.yaml +7 -0
  2. data/.travis.yml +9 -9
  3. data/CHANGELOG.md +482 -477
  4. data/Gemfile +3 -3
  5. data/LICENSE.txt +21 -21
  6. data/README.md +94 -94
  7. data/Rakefile +9 -9
  8. data/examples/README.md +12 -12
  9. data/examples/api-samples/Gemfile +5 -5
  10. data/examples/api-samples/Gemfile.lock +49 -49
  11. data/examples/api-samples/README.md +23 -23
  12. data/examples/api-samples/public/css/style.css +229 -229
  13. data/examples/api-samples/public/docs/annotation-sample.html +167 -167
  14. data/examples/api-samples/public/docs/docco.css +500 -500
  15. data/examples/api-samples/public/docs/envelope-sample.html +374 -374
  16. data/examples/api-samples/public/docs/sample01.html +181 -181
  17. data/examples/api-samples/public/docs/sample02.html +199 -199
  18. data/examples/api-samples/public/docs/sample03.html +318 -318
  19. data/examples/api-samples/public/docs/sample04.html +217 -217
  20. data/examples/api-samples/public/docs/sample05.html +296 -296
  21. data/examples/api-samples/public/docs/sample06.html +347 -347
  22. data/examples/api-samples/public/docs/sample07.html +209 -209
  23. data/examples/api-samples/public/docs/sample08.html +277 -277
  24. data/examples/api-samples/public/docs/sample09.html +314 -314
  25. data/examples/api-samples/public/docs/sample10.html +270 -270
  26. data/examples/api-samples/public/docs/sample11.html +462 -462
  27. data/examples/api-samples/public/docs/sample12.html +199 -199
  28. data/examples/api-samples/public/docs/sample13.html +201 -201
  29. data/examples/api-samples/public/docs/sample14.html +204 -204
  30. data/examples/api-samples/public/docs/sample15.html +182 -182
  31. data/examples/api-samples/public/docs/sample16.html +234 -234
  32. data/examples/api-samples/public/docs/sample17.html +309 -309
  33. data/examples/api-samples/public/docs/sample18.html +721 -721
  34. data/examples/api-samples/public/docs/sample19.html +631 -631
  35. data/examples/api-samples/public/docs/sample20.html +230 -230
  36. data/examples/api-samples/public/docs/sample21.html +790 -790
  37. data/examples/api-samples/public/docs/sample22.html +408 -408
  38. data/examples/api-samples/public/docs/sample25.html +550 -550
  39. data/examples/api-samples/public/templates/base-simple_source.html +191 -191
  40. data/examples/api-samples/public/templates/testdocument.html +100 -100
  41. data/examples/api-samples/public/templates/welcome.htm +137 -137
  42. data/examples/api-samples/samples/annotation-sample.rb +56 -56
  43. data/examples/api-samples/samples/envelope-sample.rb +133 -133
  44. data/examples/api-samples/samples/sample01.rb +44 -44
  45. data/examples/api-samples/samples/sample02.rb +50 -50
  46. data/examples/api-samples/samples/sample03.rb +79 -79
  47. data/examples/api-samples/samples/sample04.rb +54 -54
  48. data/examples/api-samples/samples/sample05.rb +83 -83
  49. data/examples/api-samples/samples/sample06.rb +86 -86
  50. data/examples/api-samples/samples/sample07.rb +59 -59
  51. data/examples/api-samples/samples/sample08.rb +76 -76
  52. data/examples/api-samples/samples/sample09.rb +85 -85
  53. data/examples/api-samples/samples/sample10.rb +70 -70
  54. data/examples/api-samples/samples/sample11.rb +132 -132
  55. data/examples/api-samples/samples/sample12.rb +48 -48
  56. data/examples/api-samples/samples/sample13.rb +49 -49
  57. data/examples/api-samples/samples/sample14.rb +54 -54
  58. data/examples/api-samples/samples/sample15.rb +43 -43
  59. data/examples/api-samples/samples/sample16.rb +57 -57
  60. data/examples/api-samples/samples/sample17.rb +70 -70
  61. data/examples/api-samples/samples/sample18.rb +190 -190
  62. data/examples/api-samples/samples/sample19.rb +188 -188
  63. data/examples/api-samples/samples/sample20.rb +68 -68
  64. data/examples/api-samples/samples/sample21.rb +212 -212
  65. data/examples/api-samples/samples/sample22.rb +109 -109
  66. data/examples/api-samples/samples/sample25.rb +127 -127
  67. data/examples/api-samples/views/_others_samples.haml +233 -233
  68. data/examples/api-samples/views/annotation_sample.haml +63 -63
  69. data/examples/api-samples/views/envelope_sample.haml +72 -72
  70. data/examples/api-samples/views/index.haml +235 -235
  71. data/examples/api-samples/views/layout.haml +3 -3
  72. data/examples/api-samples/views/sample01.haml +63 -63
  73. data/examples/api-samples/views/sample02.haml +52 -52
  74. data/examples/api-samples/views/sample03.haml +87 -87
  75. data/examples/api-samples/views/sample04.haml +55 -55
  76. data/examples/api-samples/views/sample05.haml +86 -86
  77. data/examples/api-samples/views/sample06.haml +58 -58
  78. data/examples/api-samples/views/sample07.haml +52 -52
  79. data/examples/api-samples/views/sample08.haml +100 -100
  80. data/examples/api-samples/views/sample09.haml +95 -95
  81. data/examples/api-samples/views/sample10.haml +93 -93
  82. data/examples/api-samples/views/sample11.haml +140 -140
  83. data/examples/api-samples/views/sample12.haml +68 -68
  84. data/examples/api-samples/views/sample13.haml +64 -64
  85. data/examples/api-samples/views/sample14.haml +60 -60
  86. data/examples/api-samples/views/sample15.haml +51 -51
  87. data/examples/api-samples/views/sample16.haml +50 -50
  88. data/examples/api-samples/views/sample17.haml +54 -54
  89. data/examples/api-samples/views/sample18.haml +143 -143
  90. data/examples/api-samples/views/sample19.haml +92 -92
  91. data/examples/api-samples/views/sample20.haml +54 -54
  92. data/examples/api-samples/views/sample21.haml +123 -123
  93. data/examples/api-samples/views/sample22.haml +106 -106
  94. data/examples/api-samples/views/sample25.haml +101 -101
  95. data/examples/api-samples/views/sample31.haml +2 -2
  96. data/examples/api-samples/web.rb +20 -20
  97. data/examples/viewer/Gemfile +5 -5
  98. data/examples/viewer/app.rb +52 -52
  99. data/groupdocs.gemspec +31 -31
  100. data/lib/groupdocs.rb +62 -62
  101. data/lib/groupdocs/api.rb +6 -6
  102. data/lib/groupdocs/api/entity.rb +112 -112
  103. data/lib/groupdocs/api/helpers.rb +11 -11
  104. data/lib/groupdocs/api/helpers/access_mode_helper.rb +27 -27
  105. data/lib/groupdocs/api/helpers/access_rights_helper.rb +55 -55
  106. data/lib/groupdocs/api/helpers/accessor_helper.rb +30 -30
  107. data/lib/groupdocs/api/helpers/byte_flag_helper.rb +49 -49
  108. data/lib/groupdocs/api/helpers/credentials_helper.rb +35 -35
  109. data/lib/groupdocs/api/helpers/mime_helper.rb +21 -21
  110. data/lib/groupdocs/api/helpers/path_helper.rb +28 -28
  111. data/lib/groupdocs/api/helpers/rest_helper.rb +99 -99
  112. data/lib/groupdocs/api/helpers/signature_public_helper.rb +22 -22
  113. data/lib/groupdocs/api/helpers/status_helper.rb +27 -27
  114. data/lib/groupdocs/api/helpers/url_helper.rb +101 -101
  115. data/lib/groupdocs/api/request.rb +91 -91
  116. data/lib/groupdocs/datasource.rb +249 -249
  117. data/lib/groupdocs/datasource/field.rb +39 -39
  118. data/lib/groupdocs/document.rb +1550 -1550
  119. data/lib/groupdocs/document/annotation.rb +421 -421
  120. data/lib/groupdocs/document/annotation/reply.rb +173 -173
  121. data/lib/groupdocs/document/annotation/reviewer.rb +66 -66
  122. data/lib/groupdocs/document/change.rb +56 -56
  123. data/lib/groupdocs/document/field.rb +53 -53
  124. data/lib/groupdocs/document/metadata.rb +32 -32
  125. data/lib/groupdocs/document/rectangle.rb +18 -18
  126. data/lib/groupdocs/document/view.rb +36 -36
  127. data/lib/groupdocs/errors.rb +8 -8
  128. data/lib/groupdocs/job.rb +468 -468
  129. data/lib/groupdocs/questionnaire.rb +530 -530
  130. data/lib/groupdocs/questionnaire/collector.rb +335 -335
  131. data/lib/groupdocs/questionnaire/execution.rb +181 -181
  132. data/lib/groupdocs/questionnaire/page.rb +43 -43
  133. data/lib/groupdocs/questionnaire/question.rb +108 -108
  134. data/lib/groupdocs/questionnaire/question/answer.rb +15 -15
  135. data/lib/groupdocs/signature.rb +380 -380
  136. data/lib/groupdocs/signature/contact.rb +181 -181
  137. data/lib/groupdocs/signature/envelope.rb +747 -747
  138. data/lib/groupdocs/signature/envelope/log.rb +20 -20
  139. data/lib/groupdocs/signature/field.rb +286 -286
  140. data/lib/groupdocs/signature/field/location.rb +71 -71
  141. data/lib/groupdocs/signature/form.rb +804 -804
  142. data/lib/groupdocs/signature/list.rb +92 -92
  143. data/lib/groupdocs/signature/recipient.rb +79 -79
  144. data/lib/groupdocs/signature/role.rb +54 -54
  145. data/lib/groupdocs/signature/shared.rb +6 -6
  146. data/lib/groupdocs/signature/shared/document_methods.rb +158 -158
  147. data/lib/groupdocs/signature/shared/entity_fields.rb +76 -76
  148. data/lib/groupdocs/signature/shared/entity_methods.rb +144 -144
  149. data/lib/groupdocs/signature/shared/field_methods.rb +354 -354
  150. data/lib/groupdocs/signature/shared/recipient_methods.rb +75 -75
  151. data/lib/groupdocs/signature/shared/resource_methods.rb +65 -65
  152. data/lib/groupdocs/signature/template.rb +124 -124
  153. data/lib/groupdocs/storage.rb +44 -44
  154. data/lib/groupdocs/storage/file.rb +432 -432
  155. data/lib/groupdocs/storage/folder.rb +288 -288
  156. data/lib/groupdocs/storage/package.rb +48 -48
  157. data/lib/groupdocs/storage/provider.rb +32 -32
  158. data/lib/groupdocs/subscription.rb +323 -323
  159. data/lib/groupdocs/subscription/limit.rb +20 -20
  160. data/lib/groupdocs/user.rb +955 -930
  161. data/lib/groupdocs/version.rb +3 -3
  162. data/spec/groupdocs/api/entity_spec.rb +55 -55
  163. data/spec/groupdocs/api/helpers/access_mode_helper_spec.rb +21 -21
  164. data/spec/groupdocs/api/helpers/access_rights_helper_spec.rb +43 -43
  165. data/spec/groupdocs/api/helpers/accessor_helper_spec.rb +16 -16
  166. data/spec/groupdocs/api/helpers/byte_flag_helper_spec.rb +23 -23
  167. data/spec/groupdocs/api/helpers/credentials_helpers_spec.rb +48 -48
  168. data/spec/groupdocs/api/helpers/mime_helper_spec.rb +16 -16
  169. data/spec/groupdocs/api/helpers/path_helper_spec.rb +15 -15
  170. data/spec/groupdocs/api/helpers/rest_helper_spec.rb +161 -161
  171. data/spec/groupdocs/api/helpers/signature_public_helper_spec.rb +21 -21
  172. data/spec/groupdocs/api/helpers/status_helper_spec.rb +22 -22
  173. data/spec/groupdocs/api/helpers/url_helper_spec.rb +112 -112
  174. data/spec/groupdocs/api/request_spec.rb +112 -112
  175. data/spec/groupdocs/datasource/field_spec.rb +29 -29
  176. data/spec/groupdocs/datasource_spec.rb +145 -145
  177. data/spec/groupdocs/document/annotation/reply_spec.rb +154 -154
  178. data/spec/groupdocs/document/annotation/reviewer_spec.rb +51 -51
  179. data/spec/groupdocs/document/annotation_spec.rb +234 -234
  180. data/spec/groupdocs/document/change_spec.rb +39 -39
  181. data/spec/groupdocs/document/field_spec.rb +28 -28
  182. data/spec/groupdocs/document/metadata_spec.rb +21 -21
  183. data/spec/groupdocs/document/rectangle_spec.rb +14 -14
  184. data/spec/groupdocs/document/view_spec.rb +33 -33
  185. data/spec/groupdocs/document_spec.rb +859 -859
  186. data/spec/groupdocs/errors_spec.rb +7 -7
  187. data/spec/groupdocs/job_spec.rb +323 -323
  188. data/spec/groupdocs/questionnaire/collector_spec.rb +197 -197
  189. data/spec/groupdocs/questionnaire/execution_spec.rb +162 -162
  190. data/spec/groupdocs/questionnaire/page_spec.rb +47 -47
  191. data/spec/groupdocs/questionnaire/question/answer_spec.rb +9 -9
  192. data/spec/groupdocs/questionnaire/question_spec.rb +75 -75
  193. data/spec/groupdocs/questionnaire_spec.rb +295 -295
  194. data/spec/groupdocs/signature/contact_spec.rb +142 -142
  195. data/spec/groupdocs/signature/envelope/log_spec.rb +15 -15
  196. data/spec/groupdocs/signature/envelope_spec.rb +384 -384
  197. data/spec/groupdocs/signature/field/location_spec.rb +40 -40
  198. data/spec/groupdocs/signature/field_spec.rb +235 -235
  199. data/spec/groupdocs/signature/form_spec.rb +205 -205
  200. data/spec/groupdocs/signature/list_spec.rb +87 -87
  201. data/spec/groupdocs/signature/recipient_spec.rb +26 -26
  202. data/spec/groupdocs/signature/role_spec.rb +47 -47
  203. data/spec/groupdocs/signature/template_spec.rb +80 -80
  204. data/spec/groupdocs/signature_spec.rb +194 -194
  205. data/spec/groupdocs/storage/file_spec.rb +303 -303
  206. data/spec/groupdocs/storage/folder_spec.rb +270 -270
  207. data/spec/groupdocs/storage/package_spec.rb +38 -38
  208. data/spec/groupdocs/storage/provider_spec.rb +21 -21
  209. data/spec/groupdocs/storage_spec.rb +27 -27
  210. data/spec/groupdocs/subscription/limit_spec.rb +16 -16
  211. data/spec/groupdocs/subscription_spec.rb +74 -74
  212. data/spec/groupdocs/user_spec.rb +257 -257
  213. data/spec/groupdocs_spec.rb +63 -63
  214. data/spec/spec_helper.rb +73 -73
  215. data/spec/support/json/annotation_access_set.json +11 -11
  216. data/spec/support/json/annotation_collaborators_get.json +16 -16
  217. data/spec/support/json/annotation_collaborators_set.json +16 -16
  218. data/spec/support/json/annotation_create.json +12 -12
  219. data/spec/support/json/annotation_list.json +32 -32
  220. data/spec/support/json/annotation_marker_move.json +10 -10
  221. data/spec/support/json/annotation_move.json +8 -8
  222. data/spec/support/json/annotation_remove.json +9 -9
  223. data/spec/support/json/annotation_replies_create.json +9 -9
  224. data/spec/support/json/annotation_replies_get.json +25 -25
  225. data/spec/support/json/annotation_reviewers_get.json +18 -18
  226. data/spec/support/json/comparison_changes.json +46 -46
  227. data/spec/support/json/comparison_compare.json +8 -8
  228. data/spec/support/json/comparison_document.json +10 -10
  229. data/spec/support/json/contact_add.json +12 -12
  230. data/spec/support/json/contacts_get.json +19 -19
  231. data/spec/support/json/contacts_import.json +8 -8
  232. data/spec/support/json/datasource_add.json +8 -8
  233. data/spec/support/json/datasource_get.json +22 -22
  234. data/spec/support/json/datasource_remove.json +8 -8
  235. data/spec/support/json/datasource_update.json +8 -8
  236. data/spec/support/json/delete_account.json +9 -9
  237. data/spec/support/json/document_access_info_get.json +14 -14
  238. data/spec/support/json/document_convert.json +8 -8
  239. data/spec/support/json/document_datasource.json +10 -10
  240. data/spec/support/json/document_fields.json +34 -34
  241. data/spec/support/json/document_formats.json +8 -8
  242. data/spec/support/json/document_metadata.json +15 -15
  243. data/spec/support/json/document_page_images_get.json +20 -20
  244. data/spec/support/json/document_questionnaire_create.json +9 -9
  245. data/spec/support/json/document_questionnaires.json +23 -23
  246. data/spec/support/json/document_sharers_remove.json +8 -8
  247. data/spec/support/json/document_sharers_set.json +16 -16
  248. data/spec/support/json/document_thumbnails.json +24 -24
  249. data/spec/support/json/document_views.json +32 -32
  250. data/spec/support/json/envelope_get.json +46 -46
  251. data/spec/support/json/envelope_logs.json +16 -16
  252. data/spec/support/json/envelope_recipient_add.json +26 -26
  253. data/spec/support/json/envelopes_all.json +48 -48
  254. data/spec/support/json/envelopes_resources.json +31 -31
  255. data/spec/support/json/file_compress.json +8 -8
  256. data/spec/support/json/file_copy.json +14 -14
  257. data/spec/support/json/file_delete.json +5 -5
  258. data/spec/support/json/file_move.json +14 -14
  259. data/spec/support/json/file_upload.json +8 -8
  260. data/spec/support/json/folder_create.json +8 -8
  261. data/spec/support/json/folder_delete.json +5 -5
  262. data/spec/support/json/folder_list.json +22 -22
  263. data/spec/support/json/folder_move.json +8 -8
  264. data/spec/support/json/folder_sharers_get.json +16 -16
  265. data/spec/support/json/folder_sharers_remove.json +8 -8
  266. data/spec/support/json/folder_sharers_set.json +16 -16
  267. data/spec/support/json/form_get.json +21 -21
  268. data/spec/support/json/forms_all.json +23 -23
  269. data/spec/support/json/job_add_url.json +8 -8
  270. data/spec/support/json/job_create.json +8 -8
  271. data/spec/support/json/job_documents.json +40 -40
  272. data/spec/support/json/job_file_add.json +8 -8
  273. data/spec/support/json/job_get.json +30 -30
  274. data/spec/support/json/job_update.json +7 -7
  275. data/spec/support/json/jobs_get.json +58 -58
  276. data/spec/support/json/list_add.json +12 -12
  277. data/spec/support/json/lists_get.json +19 -19
  278. data/spec/support/json/package_create.json +7 -7
  279. data/spec/support/json/questionnaire_collector.json +17 -17
  280. data/spec/support/json/questionnaire_collectors.json +38 -38
  281. data/spec/support/json/questionnaire_collectors_add.json +10 -10
  282. data/spec/support/json/questionnaire_create.json +10 -10
  283. data/spec/support/json/questionnaire_datasources.json +26 -26
  284. data/spec/support/json/questionnaire_execution_add.json +9 -9
  285. data/spec/support/json/questionnaire_execution_status_set.json +8 -8
  286. data/spec/support/json/questionnaire_execution_update.json +8 -8
  287. data/spec/support/json/questionnaire_executions.json +28 -28
  288. data/spec/support/json/questionnaire_get.json +17 -17
  289. data/spec/support/json/questionnaire_remove.json +8 -8
  290. data/spec/support/json/questionnaire_update.json +8 -8
  291. data/spec/support/json/questionnaires_get.json +40 -40
  292. data/spec/support/json/sign_documents.json +16 -16
  293. data/spec/support/json/signature_create.json +12 -12
  294. data/spec/support/json/signature_field_add.json +25 -25
  295. data/spec/support/json/signature_fields_get.json +27 -27
  296. data/spec/support/json/signature_roles_get.json +17 -17
  297. data/spec/support/json/signatures_get.json +19 -19
  298. data/spec/support/json/storage_info.json +10 -10
  299. data/spec/support/json/subscription_plan_get.json +9 -9
  300. data/spec/support/json/subscription_plans_get.json +17 -17
  301. data/spec/support/json/template_get.json +35 -35
  302. data/spec/support/json/template_get_documents.json +15 -15
  303. data/spec/support/json/template_get_recipients.json +20 -20
  304. data/spec/support/json/templates_all.json +37 -37
  305. data/spec/support/json/templates_get.json +21 -21
  306. data/spec/support/json/update_account.json +10 -10
  307. data/spec/support/json/user_area.json +67 -67
  308. data/spec/support/json/user_embed_key.json +38 -38
  309. data/spec/support/json/user_get_embed_key.json +67 -67
  310. data/spec/support/json/user_login.json +67 -67
  311. data/spec/support/json/user_profile_get.json +24 -24
  312. data/spec/support/json/user_providers.json +31 -31
  313. data/spec/support/json/user_roles.json +25 -25
  314. data/spec/support/json/user_users_get.json +27 -27
  315. data/spec/support/shared_examples/api/entity.rb +39 -39
  316. data/spec/support/shared_examples/api/helpers/access_mode_helper.rb +11 -11
  317. data/spec/support/shared_examples/api/helpers/status_helper.rb +11 -11
  318. data/spec/support/shared_examples/signature/shared/document_methods.rb +68 -68
  319. data/spec/support/shared_examples/signature/shared/entity_fields.rb +56 -56
  320. data/spec/support/shared_examples/signature/shared/entity_methods.rb +116 -116
  321. data/spec/support/shared_examples/signature/shared/field_methods.rb +220 -220
  322. data/spec/support/shared_examples/signature/shared/recipient_methods.rb +46 -46
  323. data/spec/support/shared_examples/signature/shared/resource_methods.rb +46 -46
  324. metadata +35 -55
@@ -1,15 +1,15 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Api::Helpers::Path do
4
- subject { GroupDocs::Storage::File.new }
5
-
6
- describe '#prepare_path' do
7
- it 'removes first / from string' do
8
- subject.send(:prepare_path, '/test').should == 'test'
9
- end
10
-
11
- it 'removes two or more / from string' do
12
- subject.send(:prepare_path, 'test1//test2///test3').should == 'test1/test2/test3'
13
- end
14
- end
15
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Api::Helpers::Path do
4
+ subject { GroupDocs::Storage::File.new }
5
+
6
+ describe '#prepare_path' do
7
+ it 'removes first / from string' do
8
+ subject.send(:prepare_path, '/test').should == 'test'
9
+ end
10
+
11
+ it 'removes two or more / from string' do
12
+ subject.send(:prepare_path, 'test1//test2///test3').should == 'test1/test2/test3'
13
+ end
14
+ end
15
+ end
@@ -1,161 +1,161 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Api::Helpers::REST do
4
-
5
- subject do
6
- GroupDocs::Api::Request.new(:method => :GET)
7
- end
8
-
9
- describe 'DEFAULT_HEADERS' do
10
- subject { described_class::DEFAULT_HEADERS }
11
-
12
- it 'includes "Accept: application/json"' do
13
- subject.should include(:accept => 'application/json')
14
- end
15
-
16
- it 'includes "Content-length: 0"' do
17
- subject.should include(:content_length => 0)
18
- end
19
-
20
- it 'includes Groupdocs-Referrer with SDK version' do
21
- subject.should include(:groupdocs_referrer => "ruby/#{GroupDocs::VERSION}")
22
- end
23
- end
24
-
25
- describe '#prepare_request' do
26
- it 'merges default headers with passed' do
27
- subject.options[:headers] = { :keep_alive => 300 }
28
- merged_headers = described_class::DEFAULT_HEADERS.merge(:keep_alive => 300)
29
- lambda do
30
- subject.send(:prepare_request)
31
- end.should change { subject.options[:headers] }.to(merged_headers)
32
- end
33
-
34
- it 'uses default headers when not passed' do
35
- lambda do
36
- subject.send(:prepare_request)
37
- end.should change { subject.options[:headers] }.to(described_class::DEFAULT_HEADERS)
38
- end
39
-
40
- it 'downcases HTTP method' do
41
- lambda do
42
- subject.send(:prepare_request)
43
- end.should change { subject.options[:method] }.to(:get)
44
- end
45
-
46
- it 'converts HTTP method to symbol' do
47
- subject.options[:method] = 'GET'
48
- lambda do
49
- subject.send(:prepare_request)
50
- end.should change { subject.options[:method] }.to(:get)
51
- end
52
-
53
- it 'coverts request body to JSON' do
54
- subject.options[:method] = :POST
55
- subject.options[:request_body] = { :body => 'test' }
56
- lambda do
57
- subject.send(:prepare_request)
58
- end.should change { subject.options[:request_body] }.to('{"body":"test"}')
59
- end
60
-
61
- it 'does not convert request body to JSON if payload is file' do
62
- file = Object::File.new(__FILE__, 'rb')
63
- subject.options[:method] = :POST
64
- subject.options[:request_body] = file
65
- subject.send(:prepare_request)
66
- subject.options[:request_body].should == file
67
- end
68
-
69
- it 'calculates and sets Content-length' do
70
- subject.options[:method] = :POST
71
- subject.options[:headers] = {}
72
- subject.options[:request_body] = { :body => 'test' }
73
- lambda do
74
- subject.send(:prepare_request)
75
- end.should change { subject.options[:headers][:content_length] }.to(15)
76
- end
77
-
78
- it 'sets Content-Type header if necessary' do
79
- subject.options[:method] = :POST
80
- subject.options[:headers] = {}
81
- subject.options[:request_body] = { :body => 'test' }
82
- lambda do
83
- subject.send(:prepare_request)
84
- end.should change { subject.options[:headers][:content_type] }.to('application/json')
85
- end
86
-
87
- it 'allows sending payload as plain text' do
88
- subject.options[:method] = :POST
89
- subject.options[:request_body] = 'test'
90
- subject.options[:plain] = true
91
- subject.send(:prepare_request)
92
- subject.options[:request_body].should == 'test'
93
- subject.options[:headers][:content_type].should_not == 'application/json'
94
- end
95
- end
96
-
97
- describe '#send_request' do
98
- %w(GET DOWNLOAD POST PUT DELETE).each do |method|
99
- it "sends HTTP #{method} request" do
100
- mock_api_server('{"status": "Ok"}')
101
- method = method.downcase.to_sym
102
- subject.options[:method] = method
103
- subject.options[:path] = '/folders'
104
- subject.options[:headers] = {}
105
- subject.send(:send_request)
106
- end
107
- end
108
-
109
- it 'raises error if incorrect method has been passed' do
110
- subject.options[:method] = :TEST
111
- lambda { subject.send(:send_request) }.should raise_error(GroupDocs::UnsupportedMethodError)
112
- end
113
-
114
- it 'saves response' do
115
- mock_api_server('{"status": "Ok"}')
116
- subject.options[:method] = :get
117
- subject.options[:path] = '/folders'
118
- subject.options[:headers] = {}
119
- lambda do
120
- subject.send(:send_request)
121
- end.should change(subject, :response).to('{"status": "Ok"}')
122
- end
123
- end
124
-
125
- describe '#parse_response' do
126
- it 'does not parse body if request method was DOWNLOAD' do
127
- subject.options[:method] = :download
128
- JSON.should_not_receive(:parse)
129
- lambda do
130
- subject.send(:parse_response)
131
- end.should_not change(subject, :response)
132
- end
133
-
134
- it 'returns JSON result key value' do
135
- mock_response('{"status": "Ok", "result": { "entities": [] }}')
136
- parsed_json = { :status => 'Ok', :result => { :entities => [] } }
137
- JSON.should_receive(:parse).with(subject.response, :symbolize_names => true).and_return(parsed_json)
138
- subject.send(:parse_response).should == { :entities => [] }
139
- end
140
-
141
- it 'raises error if response status is not "Ok"' do
142
- unparsed_json = '{"status": "Failed", "error_message": "The source path is not found."}'
143
- parsed_json = { :status => "Failed", :error_message => "The source path is not found." }
144
- mock_response(unparsed_json)
145
- subject.should_receive(:raise_bad_request_error).with(parsed_json)
146
- subject.send(:parse_response)
147
- end
148
- end
149
-
150
- describe '#raise_bad_request_error' do
151
- let(:json) do
152
- { :status => 'Failed', :error_message => 'The source path is not found.' }
153
- end
154
-
155
- it 'raises error with message from response' do
156
- lambda do
157
- subject.send(:raise_bad_request_error, json)
158
- end.should raise_error(GroupDocs::BadResponseError, 'The source path is not found.')
159
- end
160
- end
161
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Api::Helpers::REST do
4
+
5
+ subject do
6
+ GroupDocs::Api::Request.new(:method => :GET)
7
+ end
8
+
9
+ describe 'DEFAULT_HEADERS' do
10
+ subject { described_class::DEFAULT_HEADERS }
11
+
12
+ it 'includes "Accept: application/json"' do
13
+ subject.should include(:accept => 'application/json')
14
+ end
15
+
16
+ it 'includes "Content-length: 0"' do
17
+ subject.should include(:content_length => 0)
18
+ end
19
+
20
+ it 'includes Groupdocs-Referrer with SDK version' do
21
+ subject.should include(:groupdocs_referrer => "ruby/#{GroupDocs::VERSION}")
22
+ end
23
+ end
24
+
25
+ describe '#prepare_request' do
26
+ it 'merges default headers with passed' do
27
+ subject.options[:headers] = { :keep_alive => 300 }
28
+ merged_headers = described_class::DEFAULT_HEADERS.merge(:keep_alive => 300)
29
+ lambda do
30
+ subject.send(:prepare_request)
31
+ end.should change { subject.options[:headers] }.to(merged_headers)
32
+ end
33
+
34
+ it 'uses default headers when not passed' do
35
+ lambda do
36
+ subject.send(:prepare_request)
37
+ end.should change { subject.options[:headers] }.to(described_class::DEFAULT_HEADERS)
38
+ end
39
+
40
+ it 'downcases HTTP method' do
41
+ lambda do
42
+ subject.send(:prepare_request)
43
+ end.should change { subject.options[:method] }.to(:get)
44
+ end
45
+
46
+ it 'converts HTTP method to symbol' do
47
+ subject.options[:method] = 'GET'
48
+ lambda do
49
+ subject.send(:prepare_request)
50
+ end.should change { subject.options[:method] }.to(:get)
51
+ end
52
+
53
+ it 'coverts request body to JSON' do
54
+ subject.options[:method] = :POST
55
+ subject.options[:request_body] = { :body => 'test' }
56
+ lambda do
57
+ subject.send(:prepare_request)
58
+ end.should change { subject.options[:request_body] }.to('{"body":"test"}')
59
+ end
60
+
61
+ it 'does not convert request body to JSON if payload is file' do
62
+ file = Object::File.new(__FILE__, 'rb')
63
+ subject.options[:method] = :POST
64
+ subject.options[:request_body] = file
65
+ subject.send(:prepare_request)
66
+ subject.options[:request_body].should == file
67
+ end
68
+
69
+ it 'calculates and sets Content-length' do
70
+ subject.options[:method] = :POST
71
+ subject.options[:headers] = {}
72
+ subject.options[:request_body] = { :body => 'test' }
73
+ lambda do
74
+ subject.send(:prepare_request)
75
+ end.should change { subject.options[:headers][:content_length] }.to(15)
76
+ end
77
+
78
+ it 'sets Content-Type header if necessary' do
79
+ subject.options[:method] = :POST
80
+ subject.options[:headers] = {}
81
+ subject.options[:request_body] = { :body => 'test' }
82
+ lambda do
83
+ subject.send(:prepare_request)
84
+ end.should change { subject.options[:headers][:content_type] }.to('application/json')
85
+ end
86
+
87
+ it 'allows sending payload as plain text' do
88
+ subject.options[:method] = :POST
89
+ subject.options[:request_body] = 'test'
90
+ subject.options[:plain] = true
91
+ subject.send(:prepare_request)
92
+ subject.options[:request_body].should == 'test'
93
+ subject.options[:headers][:content_type].should_not == 'application/json'
94
+ end
95
+ end
96
+
97
+ describe '#send_request' do
98
+ %w(GET DOWNLOAD POST PUT DELETE).each do |method|
99
+ it "sends HTTP #{method} request" do
100
+ mock_api_server('{"status": "Ok"}')
101
+ method = method.downcase.to_sym
102
+ subject.options[:method] = method
103
+ subject.options[:path] = '/folders'
104
+ subject.options[:headers] = {}
105
+ subject.send(:send_request)
106
+ end
107
+ end
108
+
109
+ it 'raises error if incorrect method has been passed' do
110
+ subject.options[:method] = :TEST
111
+ lambda { subject.send(:send_request) }.should raise_error(GroupDocs::UnsupportedMethodError)
112
+ end
113
+
114
+ it 'saves response' do
115
+ mock_api_server('{"status": "Ok"}')
116
+ subject.options[:method] = :get
117
+ subject.options[:path] = '/folders'
118
+ subject.options[:headers] = {}
119
+ lambda do
120
+ subject.send(:send_request)
121
+ end.should change(subject, :response).to('{"status": "Ok"}')
122
+ end
123
+ end
124
+
125
+ describe '#parse_response' do
126
+ it 'does not parse body if request method was DOWNLOAD' do
127
+ subject.options[:method] = :download
128
+ JSON.should_not_receive(:parse)
129
+ lambda do
130
+ subject.send(:parse_response)
131
+ end.should_not change(subject, :response)
132
+ end
133
+
134
+ it 'returns JSON result key value' do
135
+ mock_response('{"status": "Ok", "result": { "entities": [] }}')
136
+ parsed_json = { :status => 'Ok', :result => { :entities => [] } }
137
+ JSON.should_receive(:parse).with(subject.response, :symbolize_names => true).and_return(parsed_json)
138
+ subject.send(:parse_response).should == { :entities => [] }
139
+ end
140
+
141
+ it 'raises error if response status is not "Ok"' do
142
+ unparsed_json = '{"status": "Failed", "error_message": "The source path is not found."}'
143
+ parsed_json = { :status => "Failed", :error_message => "The source path is not found." }
144
+ mock_response(unparsed_json)
145
+ subject.should_receive(:raise_bad_request_error).with(parsed_json)
146
+ subject.send(:parse_response)
147
+ end
148
+ end
149
+
150
+ describe '#raise_bad_request_error' do
151
+ let(:json) do
152
+ { :status => 'Failed', :error_message => 'The source path is not found.' }
153
+ end
154
+
155
+ it 'raises error with message from response' do
156
+ lambda do
157
+ subject.send(:raise_bad_request_error, json)
158
+ end.should raise_error(GroupDocs::BadResponseError, 'The source path is not found.')
159
+ end
160
+ end
161
+ end
@@ -1,21 +1,21 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Api::Helpers::SignaturePublic do
4
- subject do
5
- GroupDocs::Signature::Envelope.new
6
- end
7
-
8
- describe '#client_id' do
9
- it 'returns "public" if true is passed' do
10
- subject.send(:client_id, true).should == 'public'
11
- end
12
-
13
- it 'returns "{{client_id}}" if false is passed' do
14
- subject.send(:client_id, false).should == '{{client_id}}'
15
- end
16
-
17
- it 'returns "{{client_id}}" if nil is passed' do
18
- subject.send(:client_id, false).should == '{{client_id}}'
19
- end
20
- end
21
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Api::Helpers::SignaturePublic do
4
+ subject do
5
+ GroupDocs::Signature::Envelope.new
6
+ end
7
+
8
+ describe '#client_id' do
9
+ it 'returns "public" if true is passed' do
10
+ subject.send(:client_id, true).should == 'public'
11
+ end
12
+
13
+ it 'returns "{{client_id}}" if false is passed' do
14
+ subject.send(:client_id, false).should == '{{client_id}}'
15
+ end
16
+
17
+ it 'returns "{{client_id}}" if nil is passed' do
18
+ subject.send(:client_id, false).should == '{{client_id}}'
19
+ end
20
+ end
21
+ end
@@ -1,22 +1,22 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Api::Helpers::Status do
4
-
5
- subject do
6
- GroupDocs::Job.new
7
- end
8
-
9
- describe '#parse_status' do
10
- it 'returns underscored symbol if string is passed' do
11
- subject.send(:parse_status, 'InProgress').should == :in_progress
12
- end
13
-
14
- it 'returns capitalized string if symbol is passed' do
15
- subject.send(:parse_status, :in_progress).should == 'InProgress'
16
- end
17
-
18
- it 'raises error if argument is not string or symbol' do
19
- lambda { subject.send(:parse_status, 1) }.should raise_error(ArgumentError)
20
- end
21
- end
22
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Api::Helpers::Status do
4
+
5
+ subject do
6
+ GroupDocs::Job.new
7
+ end
8
+
9
+ describe '#parse_status' do
10
+ it 'returns underscored symbol if string is passed' do
11
+ subject.send(:parse_status, 'InProgress').should == :in_progress
12
+ end
13
+
14
+ it 'returns capitalized string if symbol is passed' do
15
+ subject.send(:parse_status, :in_progress).should == 'InProgress'
16
+ end
17
+
18
+ it 'raises error if argument is not string or symbol' do
19
+ lambda { subject.send(:parse_status, 1) }.should raise_error(ArgumentError)
20
+ end
21
+ end
22
+ end
@@ -1,112 +1,112 @@
1
- require 'spec_helper'
2
-
3
- describe GroupDocs::Api::Helpers::URL do
4
-
5
- subject do
6
- GroupDocs::Api::Request.new(:path => '/1/files/2?new_name=invoice.docx')
7
- end
8
-
9
- describe '#add_params' do
10
- it 'adds parameters to query' do
11
- subject.options[:path].should_receive(:<<).with('&param=value')
12
- subject.add_params({ :param => 'value' })
13
- end
14
-
15
- it 'joins values with comma if it is array' do
16
- subject.options[:path] = '/1/files/2'
17
- value = [1, 2]
18
- value.should_receive(:join).with(',').and_return('1,2')
19
- subject.add_params({ :param => value })
20
- end
21
-
22
- it 'determines correct URL separator' do
23
- subject.options[:path] = '/1/files/2'
24
- subject.should_receive(:separator)
25
- subject.add_params({ :param => 'value' })
26
- end
27
- end
28
-
29
- describe '#normalize_path' do
30
- it 'replaces two or more slashes with one' do
31
- subject.options[:path] = '/doc//folder///new////'
32
- subject.send(:normalize_path)
33
- subject.options[:path].should == '/doc/folder/new/'
34
- end
35
- end
36
-
37
- describe '#replace_client_id' do
38
- it 'replaces {{client_id}} with real client ID' do
39
- subject.options[:path] = '/doc/{{client_id}}/files/123'
40
- subject.should_receive(:client_id).and_return('real_client_id')
41
- subject.send(:replace_client_id)
42
- subject.options[:path].should == '/doc/real_client_id/files/123'
43
- end
44
- end
45
-
46
- describe '#url_encode_path' do
47
- it 'URL encodes path' do
48
- subject.options[:path] = '/folder/Test 123'
49
- subject.send(:url_encode_path)
50
- subject.options[:path].should == '/folder/Test%20123'
51
- end
52
-
53
- it 'replaces + with %2B' do
54
- subject.options[:path] = '/?email=john+1@smith.com'
55
- subject.send(:url_encode_path)
56
- subject.options[:path].should == '/?email=john%2B1@smith.com'
57
- end
58
-
59
- it 'replaces square brackets' do
60
- subject.options[:path] = '/?email=john[1]@smith.com'
61
- subject.send(:url_encode_path)
62
- subject.options[:path].should == '/?email=john%5B1%5D@smith.com'
63
- end
64
- end
65
-
66
- describe '#sign_url' do
67
- it 'uses defined private key' do
68
- subject.should_receive(:private_key).and_return('e98ea443354183fd1fb434047232c687')
69
- subject.send(:sign_url)
70
- end
71
-
72
- it 'adds signature to path' do
73
- subject.options[:access] = { :private_key => 'e98ea443354183fd1fb434047232c687' }
74
- GroupDocs.stub(:api_version => nil)
75
- subject.send(:sign_url)
76
- subject.options[:path].should == '/1/files/2?new_name=invoice.docx&signature=gw%2BLupOB3krtliSSM0dvUBSznJY'
77
- end
78
-
79
- it 'determines correct URL separator' do
80
- subject.options[:access] = { :private_key => 'e98ea443354183fd1fb434047232c687' }
81
- subject.should_receive(:separator)
82
- subject.send(:sign_url)
83
- end
84
- end
85
-
86
- describe '#separator' do
87
- it 'returns ? if URL has no parameters' do
88
- subject.options[:path] = '/1/files/2'
89
- subject.send(:separator).should == '?'
90
- end
91
-
92
- it 'returns & if URL has parameters' do
93
- subject.send(:separator).should == '&'
94
- end
95
- end
96
-
97
- describe '#prepend_version' do
98
- it 'does not modify URL if API version is not specified' do
99
- GroupDocs.stub(:api_version => nil)
100
- subject.options.should_not_receive(:[]=).with(:path, '/v2.0/1/files/2?new_name=invoice.docx')
101
- subject.send(:prepend_version)
102
- end
103
-
104
- it 'prepends API version number' do
105
- GroupDocs.stub(:api_version => '2.0')
106
- path = '/1/files/2?new_name=invoice.docx'
107
- subject = GroupDocs::Api::Request.new(:path => path)
108
- subject.options.should_receive(:[]=).with(:path, "/v2.0#{path}").and_return("/v2.0#{path}")
109
- subject.send(:prepend_version)
110
- end
111
- end
112
- end
1
+ require 'spec_helper'
2
+
3
+ describe GroupDocs::Api::Helpers::URL do
4
+
5
+ subject do
6
+ GroupDocs::Api::Request.new(:path => '/1/files/2?new_name=invoice.docx')
7
+ end
8
+
9
+ describe '#add_params' do
10
+ it 'adds parameters to query' do
11
+ subject.options[:path].should_receive(:<<).with('&param=value')
12
+ subject.add_params({ :param => 'value' })
13
+ end
14
+
15
+ it 'joins values with comma if it is array' do
16
+ subject.options[:path] = '/1/files/2'
17
+ value = [1, 2]
18
+ value.should_receive(:join).with(',').and_return('1,2')
19
+ subject.add_params({ :param => value })
20
+ end
21
+
22
+ it 'determines correct URL separator' do
23
+ subject.options[:path] = '/1/files/2'
24
+ subject.should_receive(:separator)
25
+ subject.add_params({ :param => 'value' })
26
+ end
27
+ end
28
+
29
+ describe '#normalize_path' do
30
+ it 'replaces two or more slashes with one' do
31
+ subject.options[:path] = '/doc//folder///new////'
32
+ subject.send(:normalize_path)
33
+ subject.options[:path].should == '/doc/folder/new/'
34
+ end
35
+ end
36
+
37
+ describe '#replace_client_id' do
38
+ it 'replaces {{client_id}} with real client ID' do
39
+ subject.options[:path] = '/doc/{{client_id}}/files/123'
40
+ subject.should_receive(:client_id).and_return('real_client_id')
41
+ subject.send(:replace_client_id)
42
+ subject.options[:path].should == '/doc/real_client_id/files/123'
43
+ end
44
+ end
45
+
46
+ describe '#url_encode_path' do
47
+ it 'URL encodes path' do
48
+ subject.options[:path] = '/folder/Test 123'
49
+ subject.send(:url_encode_path)
50
+ subject.options[:path].should == '/folder/Test%20123'
51
+ end
52
+
53
+ it 'replaces + with %2B' do
54
+ subject.options[:path] = '/?email=john+1@smith.com'
55
+ subject.send(:url_encode_path)
56
+ subject.options[:path].should == '/?email=john%2B1@smith.com'
57
+ end
58
+
59
+ it 'replaces square brackets' do
60
+ subject.options[:path] = '/?email=john[1]@smith.com'
61
+ subject.send(:url_encode_path)
62
+ subject.options[:path].should == '/?email=john%5B1%5D@smith.com'
63
+ end
64
+ end
65
+
66
+ describe '#sign_url' do
67
+ it 'uses defined private key' do
68
+ subject.should_receive(:private_key).and_return('e98ea443354183fd1fb434047232c687')
69
+ subject.send(:sign_url)
70
+ end
71
+
72
+ it 'adds signature to path' do
73
+ subject.options[:access] = { :private_key => 'e98ea443354183fd1fb434047232c687' }
74
+ GroupDocs.stub(:api_version => nil)
75
+ subject.send(:sign_url)
76
+ subject.options[:path].should == '/1/files/2?new_name=invoice.docx&signature=gw%2BLupOB3krtliSSM0dvUBSznJY'
77
+ end
78
+
79
+ it 'determines correct URL separator' do
80
+ subject.options[:access] = { :private_key => 'e98ea443354183fd1fb434047232c687' }
81
+ subject.should_receive(:separator)
82
+ subject.send(:sign_url)
83
+ end
84
+ end
85
+
86
+ describe '#separator' do
87
+ it 'returns ? if URL has no parameters' do
88
+ subject.options[:path] = '/1/files/2'
89
+ subject.send(:separator).should == '?'
90
+ end
91
+
92
+ it 'returns & if URL has parameters' do
93
+ subject.send(:separator).should == '&'
94
+ end
95
+ end
96
+
97
+ describe '#prepend_version' do
98
+ it 'does not modify URL if API version is not specified' do
99
+ GroupDocs.stub(:api_version => nil)
100
+ subject.options.should_not_receive(:[]=).with(:path, '/v2.0/1/files/2?new_name=invoice.docx')
101
+ subject.send(:prepend_version)
102
+ end
103
+
104
+ it 'prepends API version number' do
105
+ GroupDocs.stub(:api_version => '2.0')
106
+ path = '/1/files/2?new_name=invoice.docx'
107
+ subject = GroupDocs::Api::Request.new(:path => path)
108
+ subject.options.should_receive(:[]=).with(:path, "/v2.0#{path}").and_return("/v2.0#{path}")
109
+ subject.send(:prepend_version)
110
+ end
111
+ end
112
+ end