ruby-lokalise-api 4.5.0 → 6.0.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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -3
  3. data/lib/ruby_lokalise_api/base_request.rb +24 -0
  4. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/client.rb +25 -26
  5. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/base.rb +10 -10
  6. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/branch.rb +1 -1
  7. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/contributor.rb +1 -1
  8. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/custom_translation_status.rb +1 -1
  9. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/file.rb +1 -1
  10. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/key.rb +2 -2
  11. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/key_comment.rb +1 -1
  12. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/order.rb +1 -1
  13. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/payment_card.rb +1 -1
  14. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project.rb +1 -1
  15. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project_comment.rb +1 -1
  16. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/project_language.rb +1 -1
  17. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/queued_process.rb +1 -1
  18. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/screenshot.rb +1 -1
  19. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/segment.rb +1 -1
  20. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/snapshot.rb +1 -1
  21. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/system_language.rb +1 -1
  22. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/task.rb +1 -1
  23. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team.rb +1 -1
  24. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team_user.rb +1 -1
  25. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/team_user_group.rb +1 -1
  26. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/translation.rb +1 -1
  27. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/translation_provider.rb +1 -1
  28. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/collections/webhook.rb +1 -1
  29. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/connection.rb +4 -3
  30. data/lib/ruby_lokalise_api/data/attributes.yml +235 -0
  31. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/error.rb +15 -15
  32. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/json_handler.rb +1 -1
  33. data/lib/ruby_lokalise_api/oauth2/auth.rb +62 -0
  34. data/lib/ruby_lokalise_api/oauth2/connection.rb +25 -0
  35. data/lib/ruby_lokalise_api/oauth2/request.rb +23 -0
  36. data/lib/{ruby-lokalise-api/oauth_client.rb → ruby_lokalise_api/oauth2_client.rb} +2 -2
  37. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/request.rb +5 -16
  38. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/base.rb +8 -8
  39. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/branch.rb +1 -1
  40. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/contributor.rb +1 -1
  41. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/custom_translation_status.rb +1 -1
  42. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/file.rb +2 -2
  43. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/key.rb +1 -1
  44. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/key_comment.rb +1 -1
  45. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/order.rb +1 -1
  46. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/payment_card.rb +1 -1
  47. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project.rb +1 -1
  48. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project_comment.rb +1 -1
  49. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/project_language.rb +1 -1
  50. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/queued_process.rb +1 -1
  51. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/screenshot.rb +1 -1
  52. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/segment.rb +1 -1
  53. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/snapshot.rb +2 -2
  54. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/system_language.rb +1 -1
  55. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/task.rb +1 -1
  56. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team.rb +1 -1
  57. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user.rb +1 -1
  58. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user_billing_details.rb +1 -1
  59. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/team_user_group.rb +1 -1
  60. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/translation.rb +1 -1
  61. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/translation_provider.rb +1 -1
  62. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/resources/webhook.rb +1 -1
  63. data/lib/ruby_lokalise_api/rest/branches.rb +69 -0
  64. data/lib/ruby_lokalise_api/rest/comments.rb +61 -0
  65. data/lib/ruby_lokalise_api/rest/contributors.rb +58 -0
  66. data/lib/ruby_lokalise_api/rest/custom_translation_statuses.rb +67 -0
  67. data/lib/ruby_lokalise_api/rest/files.rb +38 -0
  68. data/lib/ruby_lokalise_api/rest/keys.rb +79 -0
  69. data/lib/ruby_lokalise_api/rest/languages.rb +67 -0
  70. data/lib/ruby_lokalise_api/rest/orders.rb +37 -0
  71. data/lib/ruby_lokalise_api/rest/payment_cards.rb +43 -0
  72. data/lib/ruby_lokalise_api/rest/projects.rb +62 -0
  73. data/lib/ruby_lokalise_api/rest/queued_processes.rb +28 -0
  74. data/lib/ruby_lokalise_api/rest/screenshots.rb +58 -0
  75. data/lib/ruby_lokalise_api/rest/segments.rb +45 -0
  76. data/lib/ruby_lokalise_api/rest/snapshots.rb +47 -0
  77. data/lib/ruby_lokalise_api/rest/tasks.rb +58 -0
  78. data/lib/ruby_lokalise_api/rest/team_user_billing_details.rb +36 -0
  79. data/lib/ruby_lokalise_api/rest/team_user_groups.rb +109 -0
  80. data/lib/ruby_lokalise_api/rest/team_users.rb +48 -0
  81. data/lib/ruby_lokalise_api/rest/teams.rb +16 -0
  82. data/lib/ruby_lokalise_api/rest/translation_providers.rb +27 -0
  83. data/lib/ruby_lokalise_api/rest/translations.rb +39 -0
  84. data/lib/ruby_lokalise_api/rest/webhooks.rb +69 -0
  85. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/attribute_helpers.rb +7 -7
  86. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/endpoint_helpers.rb +1 -1
  87. data/lib/{ruby-lokalise-api → ruby_lokalise_api}/utils/string_utils.rb +1 -1
  88. data/lib/ruby_lokalise_api/version.rb +5 -0
  89. data/lib/ruby_lokalise_api.rb +50 -0
  90. data/ruby-lokalise-api.gemspec +8 -7
  91. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/branches_spec.rb +13 -13
  92. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/comments_spec.rb +7 -7
  93. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/contributors_spec.rb +11 -11
  94. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/custom_translation_statuses_spec.rb +7 -7
  95. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/files_spec.rb +2 -2
  96. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/keys_spec.rb +15 -15
  97. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/languages_spec.rb +6 -6
  98. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/orders_spec.rb +1 -1
  99. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/payment_cards_spec.rb +7 -7
  100. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/projects_spec.rb +24 -11
  101. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/queued_processes_spec.rb +1 -1
  102. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/screenshots_spec.rb +5 -5
  103. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/segments_spec.rb +4 -4
  104. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/snapshots_spec.rb +9 -9
  105. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/tasks_spec.rb +14 -14
  106. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/team_user_billing_details_spec.rb +1 -1
  107. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/team_user_groups_spec.rb +7 -7
  108. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/team_users_spec.rb +4 -4
  109. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/teams_spec.rb +1 -1
  110. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/translation_providers_spec.rb +2 -2
  111. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/translations_spec.rb +11 -11
  112. data/spec/lib/{ruby-lokalise-api/rest → ruby_lokalise_api/client}/webhooks_spec.rb +2 -2
  113. data/spec/lib/ruby_lokalise_api/connection_spec.rb +68 -0
  114. data/spec/lib/{ruby-lokalise-api → ruby_lokalise_api}/custom_json_parser_spec.rb +3 -3
  115. data/spec/lib/{ruby-lokalise-api → ruby_lokalise_api}/error_spec.rb +10 -10
  116. data/spec/lib/ruby_lokalise_api/oauth2/auth_spec.rb +73 -0
  117. data/spec/lib/ruby_lokalise_api_spec.rb +47 -0
  118. data/spec/spec_helper.rb +1 -1
  119. data/spec/support/test_client.rb +7 -3
  120. data/spec/support/vcr.rb +5 -0
  121. metadata +168 -148
  122. data/lib/ruby-lokalise-api/data/attributes.json +0 -259
  123. data/lib/ruby-lokalise-api/rest/branches.rb +0 -67
  124. data/lib/ruby-lokalise-api/rest/comments.rb +0 -59
  125. data/lib/ruby-lokalise-api/rest/contributors.rb +0 -56
  126. data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +0 -65
  127. data/lib/ruby-lokalise-api/rest/files.rb +0 -36
  128. data/lib/ruby-lokalise-api/rest/keys.rb +0 -77
  129. data/lib/ruby-lokalise-api/rest/languages.rb +0 -65
  130. data/lib/ruby-lokalise-api/rest/orders.rb +0 -35
  131. data/lib/ruby-lokalise-api/rest/payment_cards.rb +0 -41
  132. data/lib/ruby-lokalise-api/rest/projects.rb +0 -60
  133. data/lib/ruby-lokalise-api/rest/queued_processes.rb +0 -26
  134. data/lib/ruby-lokalise-api/rest/screenshots.rb +0 -56
  135. data/lib/ruby-lokalise-api/rest/segments.rb +0 -43
  136. data/lib/ruby-lokalise-api/rest/snapshots.rb +0 -45
  137. data/lib/ruby-lokalise-api/rest/tasks.rb +0 -56
  138. data/lib/ruby-lokalise-api/rest/team_user_billing_details.rb +0 -34
  139. data/lib/ruby-lokalise-api/rest/team_user_group.rb +0 -107
  140. data/lib/ruby-lokalise-api/rest/team_users.rb +0 -46
  141. data/lib/ruby-lokalise-api/rest/teams.rb +0 -14
  142. data/lib/ruby-lokalise-api/rest/translation_providers.rb +0 -25
  143. data/lib/ruby-lokalise-api/rest/translations.rb +0 -37
  144. data/lib/ruby-lokalise-api/rest/webhooks.rb +0 -67
  145. data/lib/ruby-lokalise-api/version.rb +0 -5
  146. data/lib/ruby-lokalise-api.rb +0 -101
  147. data/spec/lib/ruby-lokalise-api/connection_spec.rb +0 -89
  148. data/spec/lib/ruby-lokalise-api_spec.rb +0 -54
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  let(:team_id) { 176_692 }
5
5
  let(:group_id) { 515 }
6
6
  let(:second_group_id) { 690 }
@@ -39,7 +39,7 @@ RSpec.describe Lokalise::Client do
39
39
 
40
40
  expect(group.group_id).to eq(group_id)
41
41
  expect(group.name).to eq('Demo')
42
- expect(group.permissions['is_admin']).to eq(true)
42
+ expect(group.permissions['is_admin']).to be(true)
43
43
  expect(group.created_at).to eq('2019-03-19 19:53:04 (Etc/UTC)')
44
44
  expect(group.created_at_timestamp).to eq(1_553_025_184)
45
45
  expect(group.team_id).to eq(team_id)
@@ -81,8 +81,8 @@ RSpec.describe Lokalise::Client do
81
81
 
82
82
  expect(group.name).to eq('updated rspec')
83
83
  expect(group.team_id).to eq(team_id)
84
- expect(group.permissions['is_admin']).to eq(true)
85
- expect(group.permissions['is_reviewer']).to eq(true)
84
+ expect(group.permissions['is_admin']).to be(true)
85
+ expect(group.permissions['is_reviewer']).to be(true)
86
86
  end
87
87
 
88
88
  specify '#destroy_team_user_group' do
@@ -90,7 +90,7 @@ RSpec.describe Lokalise::Client do
90
90
  test_client.destroy_team_user_group team_id, second_group_id
91
91
  end
92
92
  expect(response['team_id']).to eq(team_id)
93
- expect(response['group_deleted']).to eq(true)
93
+ expect(response['group_deleted']).to be(true)
94
94
  end
95
95
 
96
96
  specify '#add_projects_to_group' do
@@ -184,7 +184,7 @@ RSpec.describe Lokalise::Client do
184
184
  end
185
185
 
186
186
  expect(group.group_id).to eq(third_group_id)
187
- expect(group.permissions['is_admin']).to eq(true)
187
+ expect(group.permissions['is_admin']).to be(true)
188
188
  expect(group.name).to eq('another group updated')
189
189
 
190
190
  response = VCR.use_cassette('destroy_another_team_user_group') do
@@ -192,7 +192,7 @@ RSpec.describe Lokalise::Client do
192
192
  end
193
193
 
194
194
  expect(response['team_id']).to eq(team_id)
195
- expect(response['group_deleted']).to eq(true)
195
+ expect(response['group_deleted']).to be(true)
196
196
  end
197
197
 
198
198
  it 'supports project management' do
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  let(:team_id) { 176_692 }
5
5
  let(:team_user_id) { 25_953 }
6
6
  let(:another_user_id) { 26_265 }
@@ -68,7 +68,7 @@ RSpec.describe Lokalise::Client do
68
68
  test_client.destroy_team_user team_id, team_user_id
69
69
  end
70
70
  expect(response['team_id']).to eq(team_id)
71
- expect(response['team_user_deleted']).to eq(true)
71
+ expect(response['team_user_deleted']).to be(true)
72
72
  end
73
73
 
74
74
  context 'when team user methods are chained' do
@@ -81,7 +81,7 @@ RSpec.describe Lokalise::Client do
81
81
  team_user.update role: 'admin'
82
82
  end
83
83
 
84
- expect(updated_team_user.client).to eq(test_client)
84
+ expect(updated_team_user.client.token).to eq(test_client.token)
85
85
  expect(updated_team_user.role).to eq('admin')
86
86
 
87
87
  delete_response = VCR.use_cassette('delete_team_user_chained') do
@@ -89,7 +89,7 @@ RSpec.describe Lokalise::Client do
89
89
  end
90
90
 
91
91
  expect(delete_response['team_id']).to eq(team_id)
92
- expect(delete_response['team_user_deleted']).to eq(true)
92
+ expect(delete_response['team_user_deleted']).to be(true)
93
93
  end
94
94
  end
95
95
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  specify '#teams' do
5
5
  teams = VCR.use_cassette('teams') do
6
6
  test_client.teams page: 2, limit: 1
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  let(:team_id) { 176_692 }
5
5
 
6
6
  describe '#translation_providers' do
@@ -36,7 +36,7 @@ RSpec.describe Lokalise::Client do
36
36
  expect(provider.slug).to eq('gengo')
37
37
  expect(provider.price_pair_min).to eq('0.00')
38
38
  expect(provider.website_url).to eq('https://gengo.com')
39
- expect(provider.description.start_with?('At')).to eq(true)
39
+ expect(provider.description.start_with?('At')).to be(true)
40
40
  expect(provider.tiers.first['title']).to eq('Native speaker')
41
41
  expect(provider.pairs.first['price_per_word']).to eq('0.05')
42
42
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
5
  let(:translation_id) { 80_015_147 }
6
6
  let(:another_translation_id) { 82_070_312 }
@@ -33,27 +33,27 @@ RSpec.describe Lokalise::Client do
33
33
  translations.next_page
34
34
  end
35
35
 
36
- expect(next_page_trans).to be_an_instance_of(Lokalise::Collections::Translation)
36
+ expect(next_page_trans).to be_an_instance_of(RubyLokaliseApi::Collections::Translation)
37
37
  expect(next_page_trans.client).to be_an_instance_of(described_class)
38
38
  expect(next_page_trans.request_params[:page]).to eq(3)
39
39
  expect(next_page_trans.request_params[:disable_references]).to eq(0)
40
40
  expect(next_page_trans.total_results).to eq(187)
41
41
  expect(next_page_trans.current_page).to eq(3)
42
- expect(next_page_trans.next_page?).to eq(true)
43
- expect(next_page_trans.prev_page?).to eq(true)
42
+ expect(next_page_trans.next_page?).to be(true)
43
+ expect(next_page_trans.prev_page?).to be(true)
44
44
 
45
45
  prev_page_trans = VCR.use_cassette('translations_prev_page') do
46
46
  translations.prev_page
47
47
  end
48
48
 
49
- expect(prev_page_trans).to be_an_instance_of(Lokalise::Collections::Translation)
49
+ expect(prev_page_trans).to be_an_instance_of(RubyLokaliseApi::Collections::Translation)
50
50
  expect(prev_page_trans.client).to be_an_instance_of(described_class)
51
51
  expect(prev_page_trans.request_params[:page]).to eq(1)
52
52
  expect(next_page_trans.request_params[:disable_references]).to eq(0)
53
53
  expect(prev_page_trans.total_results).to eq(187)
54
54
  expect(prev_page_trans.current_page).to eq(1)
55
- expect(prev_page_trans.next_page?).to eq(true)
56
- expect(prev_page_trans.prev_page?).to eq(false)
55
+ expect(prev_page_trans.next_page?).to be(true)
56
+ expect(prev_page_trans.prev_page?).to be(false)
57
57
  end
58
58
  end
59
59
 
@@ -70,8 +70,8 @@ RSpec.describe Lokalise::Client do
70
70
  expect(translation.modified_by).to eq(20_181)
71
71
  expect(translation.modified_by_email).to eq('bodrovis@protonmail.com')
72
72
  expect(translation.translation).to eq('Сообщение')
73
- expect(translation.is_fuzzy).to eq(false)
74
- expect(translation.is_reviewed).to eq(false)
73
+ expect(translation.is_fuzzy).to be(false)
74
+ expect(translation.is_reviewed).to be(false)
75
75
  expect(translation.words).to eq(1)
76
76
  expect(translation.custom_translation_statuses).to eq([])
77
77
  expect(translation.task_id).to be_nil
@@ -97,7 +97,7 @@ RSpec.describe Lokalise::Client do
97
97
 
98
98
  expect(translation.translation_id).to eq(translation_id)
99
99
  expect(translation.translation).to eq('rspec trans')
100
- expect(translation.is_reviewed).to eq(true)
100
+ expect(translation.is_reviewed).to be(true)
101
101
  end
102
102
 
103
103
  context 'when translation chained methods are used' do
@@ -110,7 +110,7 @@ RSpec.describe Lokalise::Client do
110
110
  translation.update translation: 'chained updated'
111
111
  end
112
112
 
113
- expect(updated_translation.client).to eq(test_client)
113
+ expect(updated_translation.client.token).to eq(test_client.token)
114
114
  expect(updated_translation.translation).to eq('chained updated')
115
115
  expect(updated_translation.translation_id).to eq(translation.translation_id)
116
116
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Client do
3
+ RSpec.describe RubyLokaliseApi::Client do
4
4
  let(:project_id) { '803826145ba90b42d5d860.46800099' }
5
5
  let(:webhook_id) { 'c7eb7e6e3c2fb2b26d0b64d0de083a5a71675b3d' }
6
6
  let(:new_webhook_id) { 'b345ccc6499920c490e8f4fe9487b1378dbf1dbf' }
@@ -84,7 +84,7 @@ RSpec.describe Lokalise::Client do
84
84
  end
85
85
 
86
86
  expect(response['project_id']).to eq(project_id)
87
- expect(response['webhook_deleted']).to eq(true)
87
+ expect(response['webhook_deleted']).to be(true)
88
88
  end
89
89
 
90
90
  specify '#regenerate_webhook_secret' do
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RubyLokaliseApi::Connection do
4
+ let(:dummy) { Class.new { include RubyLokaliseApi::Connection }.new }
5
+
6
+ let(:project_id) { '803826145ba90b42d5d860.46800099' }
7
+ let(:key_id) { 44_596_059 }
8
+
9
+ before { RubyLokaliseApi.reset_client! }
10
+
11
+ after { RubyLokaliseApi.reset_client! }
12
+
13
+ it 'Authorization header must be present for OAuth2 client' do
14
+ conn = dummy.connection test_oauth2_client
15
+ expect(conn.headers['Authorization']).to eq(test_oauth2_client.token)
16
+ expect(conn.headers['X-api-token']).to be_nil
17
+ end
18
+
19
+ it 'timeouts are not be set by default but the token must be present' do
20
+ conn = dummy.connection test_client
21
+ expect(conn.options.timeout).to be_nil
22
+ expect(conn.options.open_timeout).to be_nil
23
+ expect(conn.headers['X-api-token']).to eq(test_client.token)
24
+ end
25
+
26
+ it 'allows to customize timeouts' do
27
+ custom_client = RubyLokaliseApi.client(ENV['LOKALISE_API_TOKEN'],
28
+ open_timeout: 100, timeout: 500)
29
+ conn = dummy.connection custom_client
30
+ expect(conn.options.timeout).to eq(500)
31
+ expect(conn.options.open_timeout).to eq(100)
32
+ expect(conn.headers['X-api-token']).to eq(custom_client.token)
33
+
34
+ custom_client.timeout = 300
35
+ custom_client.open_timeout = 200
36
+ another_conn = dummy.connection custom_client
37
+ expect(another_conn.options.timeout).to eq(300)
38
+ expect(another_conn.options.open_timeout).to eq(200)
39
+ end
40
+
41
+ it 'works with gzip compression' do
42
+ gzip_client = RubyLokaliseApi.client(ENV['LOKALISE_API_TOKEN'])
43
+ keys = VCR.use_cassette('all_keys_gzip') do
44
+ gzip_client.keys project_id, limit: 30
45
+ end.collection
46
+
47
+ expect(keys.first.key_id).to eq(key_id)
48
+ end
49
+
50
+ it 'gzip compression is on by default' do
51
+ custom_client = RubyLokaliseApi.client(ENV['LOKALISE_API_TOKEN'])
52
+ conn = dummy.connection custom_client
53
+ expect(conn.headers['X-api-token']).to eq(custom_client.token)
54
+ expect(conn.builder.handlers).to include(Faraday::Gzip::Middleware)
55
+ end
56
+
57
+ it 'is possible to customize adapter' do
58
+ conn = dummy.connection test_client
59
+ expect(conn.builder.adapter).to eq(Faraday::Adapter::NetHttp)
60
+
61
+ Faraday.default_adapter = :test
62
+
63
+ another_conn = dummy.connection test_client
64
+
65
+ expect(another_conn.builder.adapter).to eq(Faraday::Adapter::Test)
66
+ expect(conn.builder.adapter).to eq(Faraday::Adapter::NetHttp)
67
+ end
68
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'oj'
4
4
 
5
- RSpec.describe Lokalise::JsonHandler do
5
+ RSpec.describe RubyLokaliseApi::JsonHandler do
6
6
  let(:loaded_json) do
7
7
  {'projects' => [{'project_id' => '547879415c01a0e6e0b855.29978928',
8
8
  'name' => 'demo phoenix copy',
@@ -29,7 +29,7 @@ RSpec.describe Lokalise::JsonHandler do
29
29
 
30
30
  # rubocop:disable RSpec/LeakyConstantDeclaration, Lint/ConstantDefinitionInBlock
31
31
  before do
32
- module Lokalise
32
+ module RubyLokaliseApi
33
33
  module JsonHandler
34
34
  def custom_dump(obj)
35
35
  Oj.dump obj
@@ -43,7 +43,7 @@ RSpec.describe Lokalise::JsonHandler do
43
43
  end
44
44
 
45
45
  after do
46
- module Lokalise
46
+ module RubyLokaliseApi
47
47
  module JsonHandler
48
48
  def custom_dump(obj)
49
49
  JSON.dump obj
@@ -1,16 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- RSpec.describe Lokalise::Error do
4
- include Lokalise::Request
3
+ RSpec.describe RubyLokaliseApi::Error do
4
+ include RubyLokaliseApi::Request
5
5
 
6
- before { Lokalise.reset_client! }
6
+ before { RubyLokaliseApi.reset_client! }
7
7
 
8
- after { Lokalise.reset_client! }
8
+ after { RubyLokaliseApi.reset_client! }
9
9
 
10
10
  it 'raises a generic error when the code is unknown' do
11
11
  expect do
12
12
  VCR.use_cassette('error_unknown_code') do
13
- get 'projects', Lokalise.client('invalid')
13
+ get 'projects', RubyLokaliseApi.client('invalid')
14
14
  end
15
15
  end.to raise_error(described_class)
16
16
  end
@@ -18,17 +18,17 @@ RSpec.describe Lokalise::Error do
18
18
  it 'handles an exception when the response does not contain an error key' do
19
19
  expect do
20
20
  VCR.use_cassette('error_no_error_key') do
21
- get 'projects', Lokalise.client('invalid')
21
+ get 'projects', RubyLokaliseApi.client('invalid')
22
22
  end
23
- end.to raise_error(Lokalise::Error::BadRequest)
23
+ end.to raise_error(RubyLokaliseApi::Error::BadRequest)
24
24
  end
25
25
 
26
26
  it 'raises BadRequest when API token is invalid' do
27
27
  expect do
28
28
  VCR.use_cassette('error_invalid_token') do
29
- get 'projects', Lokalise.client('invalid')
29
+ get 'projects', RubyLokaliseApi.client('invalid')
30
30
  end
31
- end.to raise_error(Lokalise::Error::BadRequest)
31
+ end.to raise_error(RubyLokaliseApi::Error::BadRequest)
32
32
  end
33
33
 
34
34
  it 'raises NotFound when the provided path cannot be found' do
@@ -36,6 +36,6 @@ RSpec.describe Lokalise::Error do
36
36
  VCR.use_cassette('error_not_found') do
37
37
  get 'invalid_path', test_client
38
38
  end
39
- end.to raise_error(Lokalise::Error::NotFound)
39
+ end.to raise_error(RubyLokaliseApi::Error::NotFound)
40
40
  end
41
41
  end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RubyLokaliseApi::OAuth2::Auth do
4
+ describe '#auth' do
5
+ it 'returns auth code' do
6
+ uri = auth_client.auth scope: 'read_projects'
7
+ expect(uri).to include(described_class::BASE_URL.to_s)
8
+ expect(uri).to include('auth?client_id=')
9
+ expect(uri).to include('&scope=read_projects')
10
+ end
11
+
12
+ it 'allows to pass an array of scopes' do
13
+ scopes = %w[write_projects write_team_groups write_tasks]
14
+ uri = auth_client.auth scope: scopes
15
+ expect(uri).to include(described_class::BASE_URL.to_s)
16
+ expect(uri).to include('auth?client_id=')
17
+ expect(uri).to include("&scope=#{scopes.join('+')}")
18
+ end
19
+
20
+ it 'allows to set redirect_uri' do
21
+ uri = auth_client.auth scope: 'read_projects', redirect_uri: 'http://example.com/callback'
22
+ expect(uri).to include(described_class::BASE_URL.to_s)
23
+ expect(uri).to include('example.com%2Fcallback')
24
+ end
25
+
26
+ it 'allows to set state' do
27
+ state = '123abc'
28
+ uri = auth_client.auth scope: 'read_projects', state: state
29
+ expect(uri).to include(described_class::BASE_URL.to_s)
30
+ expect(uri).to include(state)
31
+ end
32
+ end
33
+
34
+ describe '#token' do
35
+ it 'returns an OAuth2 token' do
36
+ resp = VCR.use_cassette('oauth2/token') do
37
+ auth_client.token ENV['OAUTH2_CODE']
38
+ end
39
+ expect(resp['access_token']).not_to be_nil
40
+ expect(resp['refresh_token']).not_to be_nil
41
+ expect(resp['expires_in']).to eq(3600)
42
+ expect(resp['token_type']).to eq('Bearer')
43
+ end
44
+
45
+ it 'raises an error when the code is invalid' do
46
+ expect do
47
+ VCR.use_cassette('oauth2/token_error') do
48
+ auth_client.token 'incorrect_code'
49
+ end
50
+ end.to raise_error(RubyLokaliseApi::Error::BadRequest)
51
+ end
52
+ end
53
+
54
+ describe '#refresh' do
55
+ it 'returns a refreshed OAuth2 token' do
56
+ resp = VCR.use_cassette('oauth2/refresh') do
57
+ auth_client.refresh ENV['OAUTH2_REFRESH_TOKEN']
58
+ end
59
+ expect(resp['access_token']).not_to be_nil
60
+ expect(resp['refresh_token']).to be_nil
61
+ expect(resp['expires_in']).to eq(3600)
62
+ expect(resp['token_type']).to eq('Bearer')
63
+ end
64
+
65
+ it 'raises an error when the token is invalid' do
66
+ expect do
67
+ VCR.use_cassette('oauth2/refresh_error') do
68
+ auth_client.refresh 'incorrect_token'
69
+ end
70
+ end.to raise_error(RubyLokaliseApi::Error::BadRequest)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe RubyLokaliseApi do
4
+ specify '.client' do
5
+ expect(test_client).to be_an_instance_of(RubyLokaliseApi::Client)
6
+ expect(test_client.token).to eq(ENV['LOKALISE_API_TOKEN'])
7
+ expect(test_client.timeout).to be_nil
8
+ expect(test_client.open_timeout).to be_nil
9
+ end
10
+
11
+ specify '.reset_client!' do
12
+ expect(test_client).to be_an_instance_of(RubyLokaliseApi::Client)
13
+ described_class.reset_client!
14
+ current_client = described_class.instance_variable_get :@client
15
+ expect(current_client).to be_nil
16
+ end
17
+
18
+ specify '.oauth2_client' do
19
+ expect(test_oauth2_client).to be_an_instance_of(RubyLokaliseApi::OAuth2Client)
20
+ expect(test_oauth2_client.token).to eq("Bearer #{ENV['OAUTH2_TOKEN']}")
21
+ expect(test_oauth2_client.timeout).to be_nil
22
+ expect(test_oauth2_client.open_timeout).to be_nil
23
+ end
24
+
25
+ specify '.reset_oauth2_client!' do
26
+ expect(test_oauth2_client).to be_an_instance_of(RubyLokaliseApi::OAuth2Client)
27
+ described_class.reset_oauth2_client!
28
+ current_oauth_client = described_class.instance_variable_get :@oauth2_client
29
+ expect(current_oauth_client).to be_nil
30
+ end
31
+
32
+ context 'with client params' do
33
+ before { described_class.reset_client! }
34
+
35
+ after { described_class.reset_client! }
36
+
37
+ it 'is possible to customize timeout' do
38
+ custom_client = described_class.client(ENV['LOKALISE_API_TOKEN'], timeout: 600)
39
+ expect(custom_client.timeout).to eq(600)
40
+ end
41
+
42
+ it 'is possible to customize open timeout' do
43
+ custom_client = described_class.client(ENV['LOKALISE_API_TOKEN'], open_timeout: 100)
44
+ expect(custom_client.open_timeout).to eq(100)
45
+ end
46
+ end
47
+ end
data/spec/spec_helper.rb CHANGED
@@ -12,7 +12,7 @@ if ENV['CI'] == 'true'
12
12
  SimpleCov.formatter = SimpleCov::Formatter::Codecov
13
13
  end
14
14
 
15
- require 'ruby-lokalise-api'
15
+ require 'ruby_lokalise_api'
16
16
 
17
17
  # Support files
18
18
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].sort.each { |f| require f }
@@ -2,10 +2,14 @@
2
2
 
3
3
  module TestClient
4
4
  def test_client(token = nil, params = {})
5
- Lokalise.client(token || ENV['LOKALISE_API_TOKEN'], params)
5
+ RubyLokaliseApi.client(token || ENV['LOKALISE_API_TOKEN'], params)
6
6
  end
7
7
 
8
- def test_oauth_client(token = nil, params = {})
9
- Lokalise.oauth_client(token || ENV['LOKALISE_API_TOKEN'], params)
8
+ def test_oauth2_client(token = nil, params = {})
9
+ RubyLokaliseApi.oauth2_client(token || ENV['OAUTH2_TOKEN'], params)
10
+ end
11
+
12
+ def auth_client
13
+ RubyLokaliseApi.auth_client(ENV['OAUTH2_CLIENT_ID'], ENV['OAUTH2_CLIENT_SECRET'])
10
14
  end
11
15
  end
data/spec/support/vcr.rb CHANGED
@@ -7,4 +7,9 @@ VCR.configure do |c|
7
7
  c.hook_into :faraday
8
8
  c.cassette_library_dir = File.join(File.dirname(__FILE__), '..', 'fixtures', 'vcr_cassettes')
9
9
  c.filter_sensitive_data('<LOKALISE_TOKEN>') { ENV.fetch('LOKALISE_API_TOKEN') }
10
+ c.filter_sensitive_data('<OAUTH2_CLIENT_ID>') { ENV.fetch('OAUTH2_CLIENT_ID') }
11
+ c.filter_sensitive_data('<OAUTH2_CLIENT_SECRET>') { ENV.fetch('OAUTH2_CLIENT_SECRET') }
12
+ c.filter_sensitive_data('<OAUTH2_TOKEN>') { ENV.fetch('OAUTH2_TOKEN') }
13
+ c.filter_sensitive_data('<OAUTH2_CODE>') { ENV.fetch('OAUTH2_CODE') }
14
+ c.filter_sensitive_data('<OAUTH2_REFRESH_TOKEN>') { ENV.fetch('OAUTH2_REFRESH_TOKEN') }
10
15
  end