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
@@ -148,6 +148,8 @@ HTML
148
148
  'rack.input' => '',
149
149
  'rack.request.query_string' => '',
150
150
  'rack.request.query_hash' => {},
151
+ 'rack.request.form_input' => '',
152
+ 'rack.request.form_hash' => {},
151
153
  'HTTP_HOST' => 'test.com',
152
154
  'REQUEST_URI' => '/en/not_ignored',
153
155
  'PATH_INFO' => '/en/not_ignored'
@@ -168,6 +170,8 @@ HTML
168
170
  'rack.input' => '',
169
171
  'rack.request.query_string' => '',
170
172
  'rack.request.query_hash' => {},
173
+ 'rack.request.form_input' => '',
174
+ 'rack.request.form_hash' => {},
171
175
  'HTTP_HOST' => 'test.com',
172
176
  'REQUEST_URI' => '/ignored',
173
177
  'PATH_INFO' => '/ignored'
@@ -188,6 +192,8 @@ HTML
188
192
  'rack.input' => '',
189
193
  'rack.request.query_string' => '',
190
194
  'rack.request.query_hash' => {},
195
+ 'rack.request.form_input' => '',
196
+ 'rack.request.form_hash' => {},
191
197
  'HTTP_HOST' => 'test.com',
192
198
  'REQUEST_URI' => '/en/ignored',
193
199
  'PATH_INFO' => '/en/ignored'
@@ -208,6 +214,8 @@ HTML
208
214
  'rack.input' => '',
209
215
  'rack.request.query_string' => '',
210
216
  'rack.request.query_hash' => {},
217
+ 'rack.request.form_input' => '',
218
+ 'rack.request.form_hash' => {},
211
219
  'HTTP_HOST' => 'test.com',
212
220
  'REQUEST_URI' => '/ignored',
213
221
  'PATH_INFO' => '/ignored'
@@ -228,6 +236,8 @@ HTML
228
236
  'rack.input' => '',
229
237
  'rack.request.query_string' => '',
230
238
  'rack.request.query_hash' => {},
239
+ 'rack.request.form_input' => '',
240
+ 'rack.request.form_hash' => {},
231
241
  'HTTP_HOST' => 'test.com',
232
242
  'REQUEST_URI' => '/en/ignored',
233
243
  'PATH_INFO' => '/en/ignored'
@@ -256,7 +266,8 @@ HTML
256
266
  store, headers = store_headers_factory(subdomain, original_lang)
257
267
  if api_expected
258
268
  dom = Wovnrb::Helpers::NokogumboHelper.parse_html(body)
259
- converter = Wovnrb::HtmlConverter.new(dom, store, headers)
269
+ url_lang_switcher = Wovnrb::UrlLanguageSwitcher.new(store)
270
+ converter = Wovnrb::HtmlConverter.new(dom, store, headers, url_lang_switcher)
260
271
  apified_body, = converter.build_api_compatible_html
261
272
  mock_translation_api_response(apified_body, expected_body)
262
273
  end
@@ -272,7 +283,7 @@ HTML
272
283
  'custom_lang_aliases' => {},
273
284
  'default_lang' => original_lang,
274
285
  'url_pattern' => 'subdomain',
275
- 'url_pattern_reg' => '^(?<lang>[^.]+).'
286
+ 'url_pattern_reg' => '^(?<lang>[^.]+)\.'
276
287
  }
277
288
 
278
289
  store = Wovnrb::Store.instance
@@ -280,7 +291,8 @@ HTML
280
291
 
281
292
  headers = Wovnrb::Headers.new(
282
293
  Wovnrb.get_env('url' => "http://#{subdomain}page.com"),
283
- Wovnrb.get_settings(settings)
294
+ Wovnrb.get_settings(settings),
295
+ Wovnrb::UrlLanguageSwitcher.new(store)
284
296
  )
285
297
 
286
298
  [store, headers]
data/test/test_helper.rb CHANGED
@@ -2,8 +2,9 @@ require 'simplecov'
2
2
  require 'pry'
3
3
 
4
4
  # save to CircleCI's artifacts directory if we're on CircleCI
5
- if ENV['CIRCLE_ARTIFACTS']
6
- dir = File.join(ENV['CIRCLE_ARTIFACTS'], 'coverage')
5
+ circle_artifacts = ENV.fetch('CIRCLE_ARTIFACTS', nil)
6
+ if circle_artifacts
7
+ dir = File.join(circle_artifacts, 'coverage')
7
8
  SimpleCov.coverage_dir(dir)
8
9
  end
9
10
 
@@ -30,9 +31,11 @@ require 'wovnrb/store'
30
31
  require 'wovnrb/helpers/nokogumbo_helper'
31
32
  require 'wovnrb/services/html_converter'
32
33
  require 'wovnrb/services/html_replace_marker'
34
+ require 'wovnrb/url_language_switcher'
35
+ require 'wovnrb/services/url'
33
36
 
34
37
  module Wovnrb
35
- class WovnMiniTest < Minitest::Test
38
+ class WovnMiniTest < ActiveSupport::TestCase
36
39
  def before_setup
37
40
  super
38
41
  Wovnrb::Store.instance.reset
@@ -73,6 +76,13 @@ module Wovnrb
73
76
  Wovnrb::Settings.new.merge(settings.merge(options))
74
77
  end
75
78
 
79
+ def get_store(options = {})
80
+ settings = get_settings(options)
81
+ store = Store.instance
82
+ store.update_settings(settings)
83
+ store
84
+ end
85
+
76
86
  def get_env(options = {})
77
87
  env = {}
78
88
  env['rack.url_scheme'] = 'http'
@@ -81,6 +91,7 @@ module Wovnrb
81
91
  env['SERVER_NAME'] = 'wovn.io'
82
92
  env['HTTP_COOKIE'] = 'olfsk=olfsk021093478426337242; hblid=KB8AAMzxzu2DSxnB4X7BJ26rBGVeF0yJ; optimizelyEndUserId=oeu1426233718869r0.5398541854228824; __zlcmid=UFeZqrVo6Mv3Yl; wovn_selected_lang=en; optimizelySegments=%7B%7D; optimizelyBuckets=%7B%7D; _equalizer_session=eDFwM3M2QUZJZFhoby9JZlArckcvSUJwNFRINXhUeUxtNnltQXZhV0tqdGhZQjJMZ01URnZTK05ydFVWYmM3U0dtMVN0M0Z0UnNDVG8vdUNDTUtPc21jY0FHREgrZ05CUnBTb0hyUlkvYlBWQVhQR3RZdnhjMWsrRW5rOVp1Z3V3bkgyd3NpSlRZQWU1dlZvNmM1THp6aUZVeE83Y1pWWENRNTBUVFIrV05WeTdDMlFlem1tUzdxaEtndFZBd2dtUjU2ak5EUmJPa3RWWmMyT1pSVWdMTm8zOVZhUWhHdGQ3L1c5bm91RmNSdFRrcC90Tml4N2t3ZWlBaDRya2lLT1I0S0J2TURhUWl6Uk5rOTQ4Y1MwM3VKYnlLMUYraEt5clhRdFd1eGdEWXdZd3pFbWQvdE9vQndhdDVQbXNLcHBURm9CbnZKenU2YnNXRFdqRVl0MVV3bmRyYjhvMDExcGtUVU9tK1lqUGswM3p6M05tbVRnTjE3TUl5cEdpTTZ4a2gray8xK0FvTC9wUDVka1JSeE5GM1prZmRjWDdyVzRhWW5uS2Mxc1BxOEVVTTZFS3N5bTlVN2p5eE5YSjNZWGI2UHd3Vzc0bDM5QjIwL0l5Mm85NmQyWFAwdVQ3ZzJYYk1QOHY2NVJpY2c9LS1KNU96eHVycVJxSDJMbEc4Rm9KVXpBPT0%3D--17e47555d692fb9cde20ef78a09a5eabbf805bb3; mp_a0452663eb7abb7dfa9c94007ebb0090_mixpanel=%7B%22distinct_id%22%3A%20%2253ed9ffa4a65662e37000000%22%2C%22%24initial_referrer%22%3A%20%22http%3A%2F%2Fp.dev-wovn.io%3A8080%2Fhttp%3A%2F%2Fdev-wovn.io%3A3000%22%2C%22%24initial_referring_domain%22%3A%20%22p.dev-wovn.io%3A8080%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpap%22%3A%20%5B%5D%7D'
83
93
  env['HTTP_ACCEPT_LANGUAGE'] = 'ja,en-US;q=0.8,en;q=0.6'
94
+ env['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
84
95
  env['ORIGINAL_FULLPATH'] = '/dashboard?param=val&hey=you'
85
96
  # env['HTTP_REFERER'] =
86
97
  env['REQUEST_PATH'] = '/dashboard'
@@ -113,7 +124,7 @@ module Wovnrb
113
124
  to_dom("<html><body>#{inner_html}</body></html>")
114
125
  end
115
126
 
116
- module_function :get_env, :get_settings, :to_dom, :get_dom
127
+ module_function :get_env, :get_settings, :to_dom, :get_dom, :get_store
117
128
 
118
129
  def build_api_data(custom_page_values: {}, custom_project_data: {})
119
130
  page_values = default_page_values.merge(custom_page_values)
data/wovnrb.gemspec CHANGED
@@ -18,7 +18,6 @@ Gem::Specification.new do |spec|
18
18
  files.delete('BEFORE_PUSHING')
19
19
  spec.files = files
20
20
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
21
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
21
  spec.require_paths = ['lib']
23
22
 
24
23
  spec.add_dependency 'activesupport'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0
4
+ version: 3.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wovn Technologies, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-04 00:00:00.000000000 Z
11
+ date: 2022-11-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -407,13 +407,22 @@ files:
407
407
  - ".rubocop_todo.yml"
408
408
  - Gemfile
409
409
  - LICENSE.txt
410
+ - Makefile
410
411
  - PULL_REQUEST_TEMPLATE
411
412
  - README.en.md
412
413
  - README.ja.md
413
414
  - README.md
414
415
  - Rakefile
416
+ - build.sh
415
417
  - docker/docker-compose.yml
418
+ - docker/nginx/Dockerfile
419
+ - docker/nginx/README.md
420
+ - docker/nginx/build.sh
421
+ - docker/nginx/scripts/configure_sshd.sh
422
+ - docker/nginx/scripts/startup.sh
423
+ - docker/nginx/wovnrb.conf
416
424
  - docker/rails/Dockerfile
425
+ - docker/rails/Dockerfile.ECS
417
426
  - docker/rails/TestSite/.browserslistrc
418
427
  - docker/rails/TestSite/.gitignore
419
428
  - docker/rails/TestSite/Gemfile
@@ -500,6 +509,7 @@ files:
500
509
  - docker/rails/TestSite/public/testpage.html
501
510
  - docker/rails/TestSite/public/wovn_index.html
502
511
  - docker/rails/TestSite/start.sh
512
+ - docker/rails/TestSite/start_rails.sh
503
513
  - docker/rails/TestSite/storage/.keep
504
514
  - docker/rails/TestSite/test/application_system_test_case.rb
505
515
  - docker/rails/TestSite/test/channels/application_cable/connection_test.rb
@@ -515,6 +525,10 @@ files:
515
525
  - docker/rails/TestSite/test/system/.keep
516
526
  - docker/rails/TestSite/test/test_helper.rb
517
527
  - docker/rails/TestSite/yarn.lock
528
+ - docker/scripts/jenkins/build.sh
529
+ - docker/scripts/jenkins/tag_and_push_image.sh
530
+ - docker/scripts/jenkins/taskdef.json
531
+ - docker/scripts/jenkins/taskdef.json.bak
518
532
  - lib/wovnrb.rb
519
533
  - lib/wovnrb/api_translator.rb
520
534
  - lib/wovnrb/headers.rb
@@ -524,11 +538,12 @@ files:
524
538
  - lib/wovnrb/services/glob.rb
525
539
  - lib/wovnrb/services/html_converter.rb
526
540
  - lib/wovnrb/services/html_replace_marker.rb
541
+ - lib/wovnrb/services/url.rb
527
542
  - lib/wovnrb/services/wovn_logger.rb
528
543
  - lib/wovnrb/settings.rb
529
544
  - lib/wovnrb/store.rb
545
+ - lib/wovnrb/url_language_switcher.rb
530
546
  - lib/wovnrb/version.rb
531
- - makefile
532
547
  - test/fixtures/html/test.html
533
548
  - test/fixtures/html/test_translated.html
534
549
  - test/lib/api_translator_test.rb
@@ -537,8 +552,10 @@ files:
537
552
  - test/lib/services/glob_test.rb
538
553
  - test/lib/services/html_converter_test.rb
539
554
  - test/lib/services/html_replace_marker_test.rb
555
+ - test/lib/services/url_test.rb
540
556
  - test/lib/services/wovn_logger_test.rb
541
557
  - test/lib/store_test.rb
558
+ - test/lib/url_language_switcher_test.rb
542
559
  - test/lib/wovnrb_test.rb
543
560
  - test/test_helper.rb
544
561
  - wovnrb.gemspec
@@ -547,7 +564,7 @@ licenses:
547
564
  - MIT
548
565
  metadata:
549
566
  rubygems_mfa_required: 'true'
550
- post_install_message:
567
+ post_install_message:
551
568
  rdoc_options: []
552
569
  require_paths:
553
570
  - lib
@@ -562,20 +579,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
562
579
  - !ruby/object:Gem::Version
563
580
  version: '0'
564
581
  requirements: []
565
- rubygems_version: 3.2.3
566
- signing_key:
582
+ rubygems_version: 3.1.4
583
+ signing_key:
567
584
  specification_version: 4
568
585
  summary: Gem for WOVN.io
569
- test_files:
570
- - test/fixtures/html/test.html
571
- - test/fixtures/html/test_translated.html
572
- - test/lib/api_translator_test.rb
573
- - test/lib/headers_test.rb
574
- - test/lib/lang_test.rb
575
- - test/lib/services/glob_test.rb
576
- - test/lib/services/html_converter_test.rb
577
- - test/lib/services/html_replace_marker_test.rb
578
- - test/lib/services/wovn_logger_test.rb
579
- - test/lib/store_test.rb
580
- - test/lib/wovnrb_test.rb
581
- - test/test_helper.rb
586
+ test_files: []