wovnrb 3.5.0 → 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +1 -0
  3. data/{makefile → Makefile} +0 -0
  4. data/README.en.md +30 -13
  5. data/build.sh +7 -0
  6. data/docker/nginx/Dockerfile +18 -0
  7. data/docker/nginx/README.md +13 -0
  8. data/docker/nginx/build.sh +8 -0
  9. data/docker/nginx/scripts/configure_sshd.sh +25 -0
  10. data/docker/nginx/scripts/startup.sh +10 -0
  11. data/docker/nginx/wovnrb.conf +19 -0
  12. data/docker/rails/Dockerfile +11 -2
  13. data/docker/rails/Dockerfile.ECS +17 -0
  14. data/docker/rails/TestSite/Gemfile +1 -3
  15. data/docker/rails/TestSite/app/controllers/custom_response_controller.rb +1 -1
  16. data/docker/rails/TestSite/config/environments/development.rb +2 -0
  17. data/docker/rails/TestSite/config/environments/production.rb +2 -0
  18. data/docker/rails/TestSite/config/environments/test.rb +2 -0
  19. data/docker/rails/TestSite/package.json +3 -3
  20. data/docker/rails/TestSite/public/index.html +1 -1
  21. data/docker/rails/TestSite/start.sh +2 -11
  22. data/docker/rails/TestSite/start_rails.sh +9 -0
  23. data/docker/rails/TestSite/yarn.lock +1150 -1466
  24. data/docker/scripts/jenkins/build.sh +45 -0
  25. data/docker/scripts/jenkins/tag_and_push_image.sh +30 -0
  26. data/docker/scripts/jenkins/taskdef.json +104 -0
  27. data/docker/scripts/jenkins/taskdef.json.bak +99 -0
  28. data/lib/wovnrb/api_translator.rb +6 -1
  29. data/lib/wovnrb/headers.rb +40 -66
  30. data/lib/wovnrb/services/html_converter.rb +17 -1
  31. data/lib/wovnrb/services/url.rb +136 -0
  32. data/lib/wovnrb/store.rb +9 -3
  33. data/lib/wovnrb/url_language_switcher.rb +148 -0
  34. data/lib/wovnrb/version.rb +1 -1
  35. data/lib/wovnrb.rb +5 -2
  36. data/test/lib/api_translator_test.rb +49 -2
  37. data/test/lib/headers_test.rb +659 -6223
  38. data/test/lib/lang_test.rb +0 -265
  39. data/test/lib/services/html_converter_test.rb +219 -40
  40. data/test/lib/services/url_test.rb +308 -0
  41. data/test/lib/store_test.rb +1 -1
  42. data/test/lib/url_language_switcher_test.rb +946 -0
  43. data/test/lib/wovnrb_test.rb +15 -3
  44. data/test/test_helper.rb +15 -4
  45. data/wovnrb.gemspec +0 -1
  46. metadata +25 -20
@@ -59,270 +59,5 @@ module Wovnrb
59
59
  def test_get_code_with_nil
60
60
  assert_nil(Wovnrb::Lang.get_code(nil))
61
61
  end
62
-
63
- def test_add_lang_code
64
- lang = Lang.new('zh-cht')
65
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
66
- assert_equal('http://www.facebook.com', lang.add_lang_code('http://www.facebook.com', 'subdomain', h))
67
- end
68
-
69
- def test_add_lang_code_relative_slash_href_url_with_path
70
- lang = Lang.new('fr')
71
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
72
- assert_equal('http://fr.wovn.io/topics/50', lang.add_lang_code('/topics/50', 'subdomain', h))
73
- end
74
-
75
- def test_add_lang_code_relative_dot_href_url_with_path
76
- lang = Lang.new('fr')
77
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
78
- assert_equal('http://fr.wovn.io/topics/44/topics/50', lang.add_lang_code('./topics/50', 'subdomain', h))
79
- end
80
-
81
- def test_add_lang_code_relative_two_dots_href_url_with_path
82
- lang = Lang.new('fr')
83
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://fr.wovn.io/topics/44'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
84
- assert_equal('http://fr.wovn.io/topics/50', lang.add_lang_code('../topics/50', 'subdomain', h))
85
- end
86
-
87
- def test_add_lang_code_trad_chinese
88
- lang = Lang.new('zh-cht')
89
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
90
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('http://wovn.io/topics/31', 'subdomain', h))
91
- end
92
-
93
- def test_add_lang_code_trad_chinese2
94
- lang = Lang.new('zh-cht')
95
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
96
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('/topics/31', 'subdomain', h))
97
- end
98
-
99
- def test_add_lang_code_trad_chinese_lang_in_link_already
100
- lang = Lang.new('zh-cht')
101
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
102
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('http://zh-cht.wovn.io/topics/31', 'subdomain', h))
103
- end
104
-
105
- def test_add_lang_code_no_protocol
106
- lang = Lang.new('zh-cht')
107
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'https://zh-cht.google.com'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
108
- assert_equal('//zh-cht.google.com', lang.add_lang_code('//google.com', 'subdomain', h))
109
- end
110
-
111
- def test_add_lang_code_no_protocol2
112
- lang = Lang.new('zh-cht')
113
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'https://zh-cht.wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
114
- assert_equal('//google.com', lang.add_lang_code('//google.com', 'subdomain', h))
115
- end
116
-
117
- def test_add_lang_code_invalid_url
118
- lang = Lang.new('zh-cht')
119
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
120
- assert_equal('http://www.facebook.com/sharer.php?u=http://wovn.io/topics/50&amp;amp;t=Gourmet Tofu World: Vegetarian-Friendly Japanese Food is Here!', lang.add_lang_code('http://www.facebook.com/sharer.php?u=http://wovn.io/topics/50&amp;amp;t=Gourmet Tofu World: Vegetarian-Friendly Japanese Food is Here!', 'subdomain', h))
121
- end
122
-
123
- def test_add_lang_code_path_only_with_slash
124
- lang = Lang.new('zh-cht')
125
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
126
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('/topics/31', 'subdomain', h))
127
- end
128
-
129
- def test_add_lang_code_path_only_no_slash
130
- lang = Lang.new('zh-cht')
131
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
132
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('topics/31', 'subdomain', h))
133
- end
134
-
135
- def test_add_lang_code_path_explicit_page_no_slash
136
- lang = Lang.new('zh-cht')
137
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
138
- assert_equal('http://zh-cht.wovn.io/topics/31.html', lang.add_lang_code('topics/31.html', 'subdomain', h))
139
- end
140
-
141
- def test_add_lang_code_path_explicit_page_with_slash
142
- lang = Lang.new('zh-cht')
143
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
144
- assert_equal('http://zh-cht.wovn.io/topics/31.html', lang.add_lang_code('/topics/31.html', 'subdomain', h))
145
- end
146
-
147
- def test_add_lang_code_no_protocol_with_path_explicit_page
148
- lang = Lang.new('zh-cht')
149
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
150
- assert_equal('//www.google.com/topics/31.php', lang.add_lang_code('//www.google.com/topics/31.php', 'subdomain', h))
151
- end
152
-
153
- def test_add_lang_code_protocol_with_path_explicit_page
154
- lang = Lang.new('zh-cht')
155
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
156
- assert_equal('http://www.google.com/topics/31.php', lang.add_lang_code('http://www.google.com/topics/31.php', 'subdomain', h))
157
- end
158
-
159
- def test_add_lang_code_relative_path_double_period
160
- lang = Lang.new('zh-cht')
161
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
162
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('../topics/31', 'subdomain', h))
163
- end
164
-
165
- def test_add_lang_code_relative_path_single_period
166
- lang = Lang.new('zh-cht')
167
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
168
- assert_equal('http://zh-cht.wovn.io/topics/31', lang.add_lang_code('./topics/31', 'subdomain', h))
169
- end
170
-
171
- def test_add_lang_code_empty_href
172
- lang = Lang.new('zh-cht')
173
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
174
- assert_equal('', lang.add_lang_code('', 'subdomain', h))
175
- end
176
-
177
- def test_add_lang_code_hash_href
178
- lang = Lang.new('zh-cht')
179
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
180
- assert_equal('#', lang.add_lang_code('#', 'subdomain', h))
181
- end
182
-
183
- def test_add_lang_code_nil_href
184
- lang = Lang.new('en')
185
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings)
186
- assert_nil(lang.add_lang_code(nil, 'path', h))
187
- end
188
-
189
- def test_add_lang_code_absolute_different_host
190
- lang = Lang.new('fr')
191
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
192
- assert_equal('http://yahoo.co.jp', lang.add_lang_code('http://yahoo.co.jp', 'path', h))
193
- end
194
-
195
- def test_add_lang_code_absolute_subdomain_no_subdomain
196
- lang = Lang.new('fr')
197
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
198
- assert_equal('http://fr.google.com', lang.add_lang_code('http://google.com', 'subdomain', h))
199
- end
200
-
201
- def test_add_lang_code_absolute_subdomain_with_subdomain
202
- lang = Lang.new('fr')
203
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://home.google.com'), Wovnrb.get_settings)
204
- assert_equal('http://fr.home.google.com', lang.add_lang_code('http://home.google.com', 'subdomain', headers))
205
- end
206
-
207
- def test_add_lang_code_with_query_and_lang_param_name
208
- Store.instance.update_settings('url_pattern_name' => 'query', 'lang_param_name' => 'lang')
209
-
210
- sut = Lang.new('fr')
211
- headers = Wovnrb::Headers.new(
212
- Wovnrb.get_env('url' => 'http://google.com'),
213
- Store.instance.settings
214
- )
215
-
216
- assert_equal('http://google.com?hey=yo&lang=fr', sut.add_lang_code('http://google.com?hey=yo', 'query', headers))
217
- end
218
-
219
- def test_add_lang_code_absolute_query_no_query
220
- lang = Lang.new('fr')
221
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
222
- assert_equal('http://google.com?wovn=fr', lang.add_lang_code('http://google.com', 'query', headers))
223
- end
224
-
225
- def test_add_lang_code_absolute_query_with_query
226
- lang = Lang.new('fr')
227
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
228
- assert_equal('http://google.com?hey=yo&wovn=fr', lang.add_lang_code('http://google.com?hey=yo', 'query', headers))
229
- end
230
-
231
- def test_add_lang_code_absolute_query_with_hash
232
- lang = Lang.new('fr')
233
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
234
- assert_equal('http://google.com?wovn=fr#test', lang.add_lang_code('http://google.com#test', 'query', headers))
235
- end
236
-
237
- def test_add_lang_code_absolute_path_no_pathname
238
- lang = Lang.new('fr')
239
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
240
- assert_equal('http://google.com/fr/', lang.add_lang_code('http://google.com', 'path', headers))
241
- end
242
-
243
- def test_add_lang_code_absolute_path_with_pathname
244
- lang = Lang.new('fr')
245
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
246
- assert_equal('http://google.com/fr/index.html', lang.add_lang_code('http://google.com/index.html', 'path', headers))
247
- end
248
-
249
- def test_add_lang_code_absolute_path_with_long_pathname
250
- lang = Lang.new('fr')
251
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
252
- assert_equal('http://google.com/fr/hello/long/path/index.html', lang.add_lang_code('http://google.com/hello/long/path/index.html', 'path', headers))
253
- end
254
-
255
- def test_add_lang_code_relative_subdomain_leading_slash
256
- lang = Lang.new('fr')
257
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
258
- assert_equal('http://fr.google.com/', lang.add_lang_code('/', 'subdomain', headers))
259
- end
260
-
261
- def test_add_lang_code_relative_subdomain_leading_slash_filename
262
- lang = Lang.new('fr')
263
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com'), Wovnrb.get_settings)
264
- assert_equal('http://fr.google.com/index.html', lang.add_lang_code('/index.html', 'subdomain', headers))
265
- end
266
-
267
- def test_add_lang_code_relative_subdomain_no_leading_slash_filename
268
- lang = Lang.new('fr')
269
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
270
- assert_equal('http://fr.google.com/index.html', lang.add_lang_code('index.html', 'subdomain', headers))
271
- end
272
-
273
- def test_add_lang_code_relative_query_with_no_query
274
- lang = Lang.new('fr')
275
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
276
- assert_equal('/index.html?wovn=fr', lang.add_lang_code('/index.html', 'query', headers))
277
- end
278
-
279
- def test_add_lang_code_relative_query_with_query
280
- lang = Lang.new('fr')
281
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
282
- assert_equal('/index.html?hey=yo&wovn=fr', lang.add_lang_code('/index.html?hey=yo', 'query', headers))
283
- end
284
-
285
- def test_add_lang_code_relative_query_with_hash
286
- lang = Lang.new('fr')
287
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
288
- assert_equal('/index.html?hey=yo&wovn=fr', lang.add_lang_code('/index.html?hey=yo', 'query', headers))
289
- end
290
-
291
- def test_add_lang_code_relative_path_with_leading_slash
292
- lang = Lang.new('fr')
293
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
294
- assert_equal('/fr/index.html', lang.add_lang_code('/index.html', 'path', headers))
295
- end
296
-
297
- def test_add_lang_code_relative_path_without_leading_slash_different_pathname
298
- lang = Lang.new('fr')
299
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/hello/tab.html'), Wovnrb.get_settings)
300
- assert_equal('/fr/hello/index.html', lang.add_lang_code('index.html', 'path', headers))
301
- end
302
-
303
- def test_add_lang_code_relative_path_without_leading_slash_different_pathname2
304
- lang = Lang.new('fr')
305
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/hello/tab.html'), Wovnrb.get_settings)
306
- assert_equal('/fr/hello/hey/index.html', lang.add_lang_code('hey/index.html', 'path', headers))
307
- end
308
-
309
- def test_add_lang_code_relative_path_at_root
310
- lang = Lang.new('fr')
311
- headers = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://google.com/'), Wovnrb.get_settings)
312
- assert_equal('/fr/index.html', lang.add_lang_code('index.html', 'path', headers))
313
- end
314
-
315
- def test_get_code_from_custom_lang
316
- store = Store.instance
317
- store.settings['custom_lang_aliases'] = { 'ja' => 'staging-ja' }
318
- assert_equal('ja', Wovnrb::Lang.get_code('staging-ja'))
319
- end
320
-
321
- def test_add_lang_code_with_custom_lang_aliases
322
- lang = Lang.new('fr')
323
- Store.instance.update_settings('custom_lang_aliases' => { 'fr' => 'staging-fr' })
324
- h = Wovnrb::Headers.new(Wovnrb.get_env('url' => 'http://wovn.io'), Wovnrb.get_settings('url_pattern' => 'subdomain', 'url_pattern_reg' => '^(?<lang>[^.]+).'))
325
- assert_equal('http://staging-fr.wovn.io/topics/50', lang.add_lang_code('/topics/50', 'subdomain', h))
326
- end
327
62
  end
328
63
  end