wovnrb 3.0.3 → 3.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ceba766ab6d122f9c54e48ab267ada742f7efabb4fc19e1f9c0a7f5e5ba47983
4
- data.tar.gz: dfde93503c625a1bed27cd4b65b44a5cff3adff0d883a0f0824546eb02bd111f
3
+ metadata.gz: '06193b75ac22b47169f8d766af6fefbd2313ab08d064bb375f5f0966c7545f8a'
4
+ data.tar.gz: 58dc13795166410b91a33a8de5c13ecbf44f2cc777c6b0696475ef1d938449b5
5
5
  SHA512:
6
- metadata.gz: b0af38a90017f6e69f344fa9304c5c79dcf242796d57de31b44900534263673e94910109535783272ba7ad8ebfac399389ca20894d8f1a0e50d6ecd99e921b1b
7
- data.tar.gz: adfce2cdbb1b99aeeb2612d68eda7e115018186d1cea1d602dd16754532326288610cf1c5db8f1b77a44c044b2a52d35e398135f7a07cef9c19a836c627bb74e
6
+ metadata.gz: f696a3e0078b1c51eee646143b90cd9cbb20ddfa95406f652db770ba28b9c655e76d6e907736dd35919089bb27671af792f938ceb4da20de46ddddfa4d122f06
7
+ data.tar.gz: 4ef3a31120a8052f5ac5a0b8fe8e289b269cd5ec85640eb677e1792f202d1dfdf396787be38876442be8f10ca33987cb8a472e1b9fb4b611ea36b3e759a9d544
data/README.en.md CHANGED
@@ -39,8 +39,8 @@ Insert the following into either config/application.rb or config/environments/.
39
39
 
40
40
  config.wovnrb = {
41
41
  :project_token => 'EnS!t3',
42
- :default_lang => 'en',
43
- :supported_langs => ['en'],
42
+ :default_lang => 'ja',
43
+ :supported_langs => ['ja', en'],
44
44
  :url_pattern => 'path'
45
45
  }
46
46
 
@@ -60,8 +60,8 @@ require 'wovnrb'
60
60
 
61
61
  use Wovnrb::Interceptor, {
62
62
  :project_token => 'EnS!t3',
63
- :default_lang => 'en',
64
- :supported_langs => ['en'],
63
+ :default_lang => 'ja',
64
+ :supported_langs => ['ja', 'en'],
65
65
  :url_pattern => 'path'
66
66
  }
67
67
 
@@ -74,18 +74,19 @@ After completing setup, start the Ruby Application, and make sure the WOVN.io li
74
74
 
75
75
  The following is a list of the WOVN.io Ruby Library's valid parameters.
76
76
 
77
- Parameter Name | Required | Default Setting
78
- ------------------ | -------- | ----------------
79
- project_token | yes | ''
80
- default_lang | yes | 'en'
81
- supported_langs | yes | ['en']
82
- url_pattern | yes | 'path'
83
- lang_param_name | | 'wovn'
84
- query | | []
85
- ignore_class | | []
86
- translate_fragment | | true
87
- ignore_paths | | []
88
- install_middleware | | true
77
+ Parameter Name | Required | Default Setting
78
+ ----------------------| -------- | ----------------
79
+ project_token | yes | ''
80
+ default_lang | yes | 'ja'
81
+ supported_langs | yes | ['ja', 'en']
82
+ url_pattern | yes | 'path'
83
+ lang_param_name | | 'wovn'
84
+ query | | []
85
+ ignore_class | | []
86
+ translate_fragment | | true
87
+ ignore_paths | | []
88
+ install_middleware | | true
89
+ compress_api_requests | | true
89
90
 
90
91
  ### 2.1. project_token
91
92
 
@@ -196,3 +197,7 @@ WOVN.rb needs to be added after any compression middleware.
196
197
  :install_middleware => false
197
198
  }
198
199
  ```
200
+
201
+ ### 2.11 compress_api_requests
202
+
203
+ By default, requests to the translation API will be sent with gzip compression. Set to false to disable compression.
data/README.ja.md CHANGED
@@ -44,8 +44,8 @@ bundle install
44
44
 
45
45
  config.wovnrb = {
46
46
  :project_token => 'EnS!t3',
47
- :default_lang => 'en',
48
- :supported_langs => ['en'],
47
+ :default_lang => 'ja',
48
+ :supported_langs => ['ja', en'],
49
49
  :url_pattern => 'path'
50
50
  }
51
51
 
@@ -63,8 +63,8 @@ require 'wovnrb'
63
63
 
64
64
  use Wovnrb::Interceptor, {
65
65
  :project_token => 'EnS!t3',
66
- :default_lang => 'en',
67
- :supported_langs => ['en'],
66
+ :default_lang => 'ja',
67
+ :supported_langs => ['ja', 'en'],
68
68
  :url_pattern => 'path'
69
69
  }
70
70
 
@@ -80,8 +80,8 @@ use Wovnrb::Interceptor, {
80
80
  パラメータ名 | 必須 | デフォルト設定
81
81
  ------------------ | -------- | ----------------
82
82
  project_token | yes | ''
83
- default_lang | yes | 'en'
84
- supported_langs | yes | ['en']
83
+ default_lang | yes | 'ja'
84
+ supported_langs | yes | ['ja', 'en']
85
85
  url_pattern | yes | 'path'
86
86
  lang_param_name | | 'wovn'
87
87
  query | | []
@@ -5129,9 +5129,9 @@ path-key@^2.0.0, path-key@^2.0.1:
5129
5129
  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=
5130
5130
 
5131
5131
  path-parse@^1.0.6:
5132
- version "1.0.6"
5133
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
5134
- integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
5132
+ version "1.0.7"
5133
+ resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
5134
+ integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
5135
5135
 
5136
5136
  path-to-regexp@0.1.7:
5137
5137
  version "0.1.7"
@@ -7269,9 +7269,9 @@ urix@^0.1.0:
7269
7269
  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
7270
7270
 
7271
7271
  url-parse@^1.4.3, url-parse@^1.5.1:
7272
- version "1.5.1"
7273
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.1.tgz#d5fa9890af8a5e1f274a2c98376510f6425f6e3b"
7274
- integrity sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==
7272
+ version "1.5.3"
7273
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.3.tgz#71c1303d38fb6639ade183c2992c8cc0686df862"
7274
+ integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==
7275
7275
  dependencies:
7276
7276
  querystringify "^2.1.1"
7277
7277
  requires-port "^1.0.0"
@@ -5,9 +5,10 @@ require 'zlib'
5
5
 
6
6
  module Wovnrb
7
7
  class ApiTranslator
8
- def initialize(store, headers)
8
+ def initialize(store, headers, uuid)
9
9
  @store = store
10
10
  @headers = headers
11
+ @uuid = uuid
11
12
  end
12
13
 
13
14
  def translate(body)
@@ -23,18 +24,19 @@ module Wovnrb
23
24
 
24
25
  case response
25
26
  when Net::HTTPSuccess
26
- if response.header['Content-Encoding'] == 'gzip'
27
- response_body = Zlib::GzipReader.new(StringIO.new(response.body)).read
28
-
29
- JSON.parse(response_body)['body'] || body
30
- elsif @store.dev_mode?
31
- JSON.parse(response.body)['body'] || body
32
- else
33
- WovnLogger.error("Received invalid content (\"#{response.header['Content-Encoding']}\") from WOVNio translation API.")
27
+ begin
28
+ raw_response_body = @store.dev_mode? ? response.body : Zlib::GzipReader.new(StringIO.new(response.body)).read
29
+ rescue Zlib::GzipFile::Error
30
+ raw_response_body = response.body
31
+ end
32
+
33
+ begin
34
+ JSON.parse(raw_response_body)['body'] || body
35
+ rescue JSON::JSONError
34
36
  body
35
37
  end
36
38
  else
37
- WovnLogger.error("Received \"#{response.message}\" from WOVNio translation API.")
39
+ WovnLogger.error("HTML-swapper call failed. Received \"#{response.message}\" from WOVNio translation API.")
38
40
  body
39
41
  end
40
42
  end
@@ -51,24 +53,45 @@ module Wovnrb
51
53
  end
52
54
 
53
55
  def prepare_request(body)
54
- data = compress_request_data(generate_request_data(body))
55
- headers = {
56
- 'Accept-Encoding' => 'gzip',
57
- 'Content-Type' => 'application/octet-stream',
58
- 'Content-Length' => data.bytesize.to_s
59
- }
60
- request = Net::HTTP::Post.new(generate_request_path(body), headers)
56
+ if @store.compress_api_requests?
57
+ gzip_request(body)
58
+ else
59
+ json_request(body)
60
+ end
61
+ end
62
+
63
+ def gzip_request(html_body)
64
+ api_params = build_api_params(html_body)
65
+ compressed_body = compress_request_data(api_params)
66
+ request = Net::HTTP::Post.new(request_path(html_body), {
67
+ 'Accept-Encoding' => 'gzip',
68
+ 'Content-Type' => 'application/octet-stream',
69
+ 'Content-Encoding' => 'gzip',
70
+ 'Content-Length' => compressed_body.bytesize.to_s,
71
+ 'X-Request-Id' => @uuid
72
+ })
73
+ request.body = compressed_body
74
+
75
+ request
76
+ end
61
77
 
62
- request.body = data
78
+ def json_request(html_body)
79
+ api_params = build_api_params(html_body)
80
+ request = Net::HTTP::Post.new(request_path(html_body), {
81
+ 'Accept-Encoding' => 'gzip',
82
+ 'Content-Type' => 'application/json',
83
+ 'X-Request-Id' => @uuid
84
+ })
85
+ request.body = api_params.to_json
63
86
 
64
87
  request
65
88
  end
66
89
 
67
- def generate_request_path(body)
68
- "#{api_uri.path.sub(/\/$/, '')}/translation?cache_key=#{generate_cache_key(body)}"
90
+ def request_path(body)
91
+ "#{api_uri.path}/translation?cache_key=#{cache_key(body)}"
69
92
  end
70
93
 
71
- def generate_cache_key(body)
94
+ def cache_key(body)
72
95
  cache_key_components = {
73
96
  'token' => token,
74
97
  'settings_hash' => settings_hash,
@@ -81,8 +104,8 @@ module Wovnrb
81
104
  CGI.escape("(#{cache_key_components})")
82
105
  end
83
106
 
84
- def generate_request_data(body)
85
- data = {
107
+ def build_api_params(body)
108
+ result = {
86
109
  'url' => page_url,
87
110
  'token' => token,
88
111
  'lang_code' => lang_code,
@@ -93,9 +116,9 @@ module Wovnrb
93
116
  'body' => body
94
117
  }
95
118
 
96
- data['custom_lang_aliases'] = JSON.dump(custom_lang_aliases) unless custom_lang_aliases.empty?
119
+ result['custom_lang_aliases'] = JSON.dump(custom_lang_aliases) unless custom_lang_aliases.empty?
97
120
 
98
- data
121
+ result
99
122
  end
100
123
 
101
124
  def compress_request_data(data_hash)
@@ -109,7 +132,7 @@ module Wovnrb
109
132
  end
110
133
 
111
134
  def api_uri
112
- Addressable::URI.parse("#{@store.settings['api_url']}/v0/")
135
+ Addressable::URI.parse("#{@store.settings['api_url']}/v0")
113
136
  end
114
137
 
115
138
  def api_timeout
@@ -155,7 +155,7 @@ module Wovnrb
155
155
  return unless parent_node
156
156
 
157
157
  insert_node = Nokogiri::XML::Node.new('script', @dom)
158
- insert_node['src'] = "//j.#{@store.wovn_host}/1"
158
+ insert_node['src'] = @store.widget_url
159
159
  insert_node['async'] = true
160
160
  insert_node['data-wovnio'] = data_wovnio
161
161
  insert_node['data-wovnio-type'] = 'fallback_snippet' if adds_backend_error_mark
@@ -3,15 +3,22 @@ require 'logger' unless defined?(Logger)
3
3
 
4
4
  module Wovnrb
5
5
  class WovnLogger
6
+ attr_reader :uuid
7
+
6
8
  include Singleton
7
9
 
8
10
  class << self
9
11
  def error(message)
10
12
  instance.error(message)
11
13
  end
14
+
15
+ def uuid
16
+ instance.uuid
17
+ end
12
18
  end
13
19
 
14
20
  def initialize
21
+ @uuid = SecureRandom.uuid
15
22
  path = Store.instance.settings['log_path']
16
23
  if path
17
24
  begin
@@ -40,9 +47,9 @@ module Wovnrb
40
47
 
41
48
  def error(message)
42
49
  if @logger == $stderr
43
- @logger.puts "Wovnrb Error: #{message}"
50
+ @logger.puts "[#{@uuid}] Wovnrb Error: #{message}"
44
51
  else
45
- @logger.error message
52
+ @logger.error "[#{@uuid}] #{message}"
46
53
  end
47
54
  end
48
55
  end
data/lib/wovnrb/store.rb CHANGED
@@ -25,8 +25,8 @@ module Wovnrb
25
25
  'ignore_class' => [],
26
26
  'api_url' => 'https://wovn.global.ssl.fastly.net',
27
27
  'api_timeout_seconds' => 1.0,
28
- 'default_lang' => 'en',
29
- 'supported_langs' => ['en'],
28
+ 'default_lang' => 'ja',
29
+ 'supported_langs' => %w[en ja],
30
30
  'test_mode' => false,
31
31
  'test_url' => '',
32
32
  'cache_megabytes' => nil,
@@ -34,7 +34,9 @@ module Wovnrb
34
34
  'use_proxy' => false, # use env['HTTP_X_FORWARDED_HOST'] instead of env['HTTP_HOST'] and env['SERVER_NAME'] when this setting is true.
35
35
  'custom_lang_aliases' => {},
36
36
  'translate_fragment' => true,
37
- 'wovn_dev_mode' => false
37
+ 'widget_url' => 'https://j.wovn.io/1',
38
+ 'wovn_dev_mode' => false,
39
+ 'compress_api_requests' => true
38
40
  )
39
41
  end
40
42
 
@@ -180,12 +182,12 @@ module Wovnrb
180
182
  @settings['supported_langs'] || []
181
183
  end
182
184
 
183
- def wovn_host
184
- if @settings['wovn_dev_mode']
185
- 'dev-wovn.io'
186
- else
187
- 'wovn.io'
188
- end
185
+ def compress_api_requests?
186
+ @settings['compress_api_requests']
187
+ end
188
+
189
+ def widget_url
190
+ @settings['widget_url'] || 'https://j.wovn.io/1'
189
191
  end
190
192
 
191
193
  def dev_mode?
@@ -1,3 +1,3 @@
1
1
  module Wovnrb
2
- VERSION = '3.0.3'.freeze
2
+ VERSION = '3.4.0'.freeze
3
3
  end
data/lib/wovnrb.rb CHANGED
@@ -80,7 +80,7 @@ module Wovnrb
80
80
 
81
81
  if needs_api?(html_body, headers)
82
82
  converted_html, marker = html_converter.build_api_compatible_html
83
- translated_content = ApiTranslator.new(@store, headers).translate(converted_html)
83
+ translated_content = ApiTranslator.new(@store, headers, WovnLogger.uuid).translate(converted_html)
84
84
  translated_body.push(marker.revert(translated_content))
85
85
  else
86
86
  string_body = html_converter.build if html_body.html?
@@ -1,6 +1,8 @@
1
1
  require 'test_helper'
2
2
 
3
3
  module Wovnrb
4
+ REQUEST_UUID = 'ABCD'.freeze
5
+
4
6
  class ApiTranslatorTest < WovnMiniTest
5
7
  def test_translate
6
8
  assert_translation('test.html', 'test_translated.html', true)
@@ -8,28 +10,64 @@ module Wovnrb
8
10
 
9
11
  def test_translate_falls_back_to_original_body_if_exception
10
12
  Net::HTTP.any_instance.expects(:request).raises
11
- assert_translation('test.html', 'test_translated.html', false, nil)
13
+ assert_translation('test.html', 'test_translated.html', false, response: nil)
12
14
  end
13
15
 
14
16
  def test_translate_falls_back_to_original_body_if_api_error
15
- assert_translation('test.html', 'test_translated.html', false, status_code: 500)
17
+ assert_translation('test.html', 'test_translated.html', false, response: { encoding: 'text/json', status_code: 500 })
18
+ end
19
+
20
+ def test_translate_continues_if_api_response_is_not_compressed
21
+ assert_translation('test.html', 'test_translated.html', true, response: { encoding: 'unknown', status: 200 }, compress_data: false)
16
22
  end
17
23
 
18
- def test_translate_falls_back_to_original_body_if_api_response_is_not_compressed
19
- assert_translation('test.html', 'test_translated.html', false, encoding: 'unknown')
24
+ def test_translate_continues_if_api_response_is_compressed
25
+ assert_translation('test.html', 'test_translated.html', true, response: { encoding: 'unknown', status: 200 })
20
26
  end
21
27
 
22
28
  def test_translate_accepts_uncompressed_response_from_api_in_dev_mode
23
29
  Wovnrb::Store.instance.update_settings('wovn_dev_mode' => true)
24
- assert_translation('test.html', 'test_translated.html', true, encoding: 'text/json')
30
+ assert_translation('test.html', 'test_translated.html', true, response: { encoding: 'text/json', status: 200 }, compress_data: false)
31
+ end
32
+
33
+ def test_translate_without_api_compression_sends_json
34
+ Wovnrb::Store.instance.update_settings('compress_api_requests' => false)
35
+ sut, _store, _headers = create_sut
36
+ html_body = 'foo'
37
+
38
+ stub_request(:post, %r{http://wovn\.global\.ssl\.fastly\.net/v0/translation\?cache_key=.*})
39
+ .to_return(status: 200, body: { 'body' => 'translated_body' }.to_json)
40
+
41
+ sut.translate(html_body)
42
+
43
+ assert_requested :post, %r{http://wovn\.global\.ssl\.fastly\.net/v0/translation\?cache_key=.*},
44
+ headers: {
45
+ 'Accept' => '*/*',
46
+ 'Accept-Encoding' => 'gzip',
47
+ 'Content-Type' => 'application/json',
48
+ 'User-Agent' => 'Ruby',
49
+ 'X-Request-Id' => REQUEST_UUID
50
+ },
51
+ body: {
52
+ 'url' => 'http://wovn.io/test',
53
+ 'token' => '123456',
54
+ 'lang_code' => 'fr',
55
+ 'url_pattern' => 'subdomain',
56
+ 'lang_param_name' => 'lang',
57
+ 'product' => 'WOVN.rb',
58
+ 'version' => VERSION,
59
+ 'body' => 'foo',
60
+ 'custom_lang_aliases' => { 'ja' => 'Japanese' }.to_json
61
+ }.to_json,
62
+ times: 1
25
63
  end
26
64
 
27
65
  private
28
66
 
29
- def assert_translation(original_html_fixture, translated_html_fixture, success_expected, response = { encoding: 'gzip', status_code: 200 })
67
+ def assert_translation(original_html_fixture, translated_html_fixture, success_expected, response: { encoding: 'gzip', status_code: 200 }, compress_data: true)
30
68
  original_html = File.read("test/fixtures/html/#{original_html_fixture}")
31
69
  translated_html = File.read("test/fixtures/html/#{translated_html_fixture}")
32
- actual_translated_html = translate(original_html, translated_html, response)
70
+ actual_translated_html = translate(original_html, translated_html, response, compress_data: compress_data)
33
71
 
34
72
  if success_expected
35
73
  assert_equal(actual_translated_html, translated_html)
@@ -38,7 +76,16 @@ module Wovnrb
38
76
  end
39
77
  end
40
78
 
41
- def translate(original_html, translated_html, response)
79
+ def translate(original_html, translated_html, response, compress_data: true)
80
+ api_translator, store, _headers = create_sut
81
+ translation_request_stub = stub_translation_api_request(store, original_html, translated_html, response, compress_data: compress_data)
82
+
83
+ actual_translated_html = api_translator.translate(original_html)
84
+ assert_requested(translation_request_stub, times: 1) if translation_request_stub
85
+ actual_translated_html
86
+ end
87
+
88
+ def create_sut
42
89
  settings = {
43
90
  'project_token' => '123456',
44
91
  'custom_lang_aliases' => { 'ja' => 'Japanese' },
@@ -53,15 +100,12 @@ module Wovnrb
53
100
  Wovnrb.get_env('url' => 'http://fr.wovn.io/test'),
54
101
  Wovnrb.get_settings(settings)
55
102
  )
56
- api_translator = ApiTranslator.new(store, headers)
57
- translation_request_stub = stub_translation_api_request(store, headers, original_html, translated_html, response)
103
+ api_translator = ApiTranslator.new(store, headers, REQUEST_UUID)
58
104
 
59
- actual_translated_html = api_translator.translate(original_html)
60
- assert_requested(translation_request_stub, times: 1) if translation_request_stub
61
- actual_translated_html
105
+ [api_translator, store, headers]
62
106
  end
63
107
 
64
- def stub_translation_api_request(store, headers, original_html, translated_html, response)
108
+ def stub_translation_api_request(store, original_html, translated_html, response, compress_data: true)
65
109
  if response
66
110
  cache_key = generate_cache_key(store, original_html)
67
111
  api_host = if store.dev_mode?
@@ -79,10 +123,10 @@ module Wovnrb
79
123
  'User-Agent' => 'Ruby'
80
124
  }
81
125
  stub_response_json = "{\"body\":\"#{translated_html.gsub("\n", '\n')}\"}"
82
- stub_response = if store.dev_mode?
83
- stub_response_json
84
- else
126
+ stub_response = if compress_data
85
127
  compress(stub_response_json)
128
+ else
129
+ stub_response_json
86
130
  end
87
131
  response_headers = { 'Content-Encoding' => response[:encoding] || 'gzip' }
88
132
  stub_request(:post, api_url)
@@ -170,7 +170,7 @@ module Wovnrb
170
170
  Wovnrb.get_env('url' => 'http://wovn.io/contact', 'HTTP_X_FORWARDED_HOST' => 'wovn.io'),
171
171
  Store.instance.settings
172
172
  )
173
- assert_equal('http://wovn.io/contact?wovn=ja', sut.redirect_location('ja'))
173
+ assert_equal('http://wovn.io/contact?wovn=en', sut.redirect_location('en'))
174
174
  end
175
175
 
176
176
  def test_redirect_location_with_lang_param_name
@@ -179,7 +179,7 @@ module Wovnrb
179
179
  Wovnrb.get_env('url' => 'http://wovn.io/contact', 'HTTP_X_FORWARDED_HOST' => 'wovn.io'),
180
180
  Store.instance.settings
181
181
  )
182
- assert_equal('http://wovn.io/contact?lang=ja', sut.redirect_location('ja'))
182
+ assert_equal('http://wovn.io/contact?lang=en', sut.redirect_location('en'))
183
183
  end
184
184
 
185
185
  #########################
@@ -6,7 +6,7 @@ module Wovnrb
6
6
  converter = prepare_html_converter('<html><body><a class="test">hello</a></body></html>', supported_langs: %w[en vi])
7
7
  converted_html, = converter.build_api_compatible_html
8
8
 
9
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a class=\"test\">hello</a></body></html>"
9
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a class=\"test\">hello</a></body></html>"
10
10
  assert_equal(expected_html, converted_html)
11
11
  end
12
12
 
@@ -19,7 +19,7 @@ module Wovnrb
19
19
  converter = prepare_html_converter('<html><body><a class="test">hello</a></body></html>', settings)
20
20
  converted_html, = converter.build_api_compatible_html
21
21
 
22
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=lang&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?lang=vi\"></head><body><a class=\"test\">hello</a></body></html>"
22
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=lang&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?lang=vi\"></head><body><a class=\"test\">hello</a></body></html>"
23
23
  assert_equal(expected_html, converted_html)
24
24
  end
25
25
 
@@ -28,7 +28,7 @@ module Wovnrb
28
28
  converter = prepare_html_converter("<html><body><p>#{long_string}</p></body></html>", supported_langs: %w[en vi])
29
29
  converted_html, = converter.build_api_compatible_html
30
30
 
31
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>#{long_string}</p></body></html>"
31
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>#{long_string}</p></body></html>"
32
32
  assert_equal(expected_html, converted_html)
33
33
  end
34
34
 
@@ -45,7 +45,7 @@ module Wovnrb
45
45
  converter = prepare_html_converter(html, ignore_class: ['ignore-me'])
46
46
  converted_html, = converter.build_api_compatible_html
47
47
 
48
- expected_convert_html = "<html lang=\"en\"><head><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
48
+ expected_convert_html = "<html lang=\"en\"><head><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><p>Hello <span wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-0 --></span></p><p></p><p>Hello <span data-wovn-ignore=\"\"><!-- __wovn-backend-ignored-key-1 --></span></p><p></p><div><span class=\"ignore-me\"><!-- __wovn-backend-ignored-key-2 --></span></div><span>Have a nice day!</span></body></html>"
49
49
  assert_equal(expected_convert_html, converted_html)
50
50
  end
51
51
 
@@ -62,7 +62,7 @@ module Wovnrb
62
62
  converter = prepare_html_converter(html, ignore_class: [])
63
63
  converted_html, = converter.build_api_compatible_html
64
64
 
65
- expected_convert_html = "<html lang=\"en\"><head><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
65
+ expected_convert_html = "<html lang=\"en\"><head><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><form action=\"/test\" method=\"POST\"><!-- __wovn-backend-ignored-key-0 --></form></body></html>"
66
66
  assert_equal(expected_convert_html, converted_html)
67
67
  end
68
68
 
@@ -81,7 +81,7 @@ module Wovnrb
81
81
 
82
82
  expected_convert_html = [
83
83
  '<html lang="en"><head>',
84
- "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>",
84
+ "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"fr\" href=\"http://my-site.com/?wovn=fr\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>",
85
85
  '<input id="user-id" type="hidden" value="__wovn-backend-ignored-key-0">',
86
86
  '<input id="password" type="hidden" value="__wovn-backend-ignored-key-1">',
87
87
  '<input id="something" type="hidden" value="__wovn-backend-ignored-key-2">',
@@ -95,7 +95,7 @@ module Wovnrb
95
95
  converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: %w[en vi])
96
96
  translated_html = converter.build
97
97
 
98
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
98
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
99
99
  assert_equal(expected_html, translated_html)
100
100
  end
101
101
 
@@ -103,7 +103,7 @@ module Wovnrb
103
103
  converter = prepare_html_converter('<html><body><a>hello</a></body></html>', supported_langs: [])
104
104
  translated_html = converter.build
105
105
 
106
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body><a>hello</a></body></html>"
106
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body><a>hello</a></body></html>"
107
107
  assert_equal(expected_html, translated_html)
108
108
  end
109
109
 
@@ -111,7 +111,7 @@ module Wovnrb
111
111
  converter = prepare_html_converter('<html><head><title>TITLE</title></head><body><a>hello</a></body></html>', supported_langs: %w[en vi])
112
112
  translated_html = converter.build
113
113
 
114
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><title>TITLE</title><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
114
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><title>TITLE</title><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body><a>hello</a></body></html>"
115
115
  assert_equal(expected_html, translated_html)
116
116
  end
117
117
 
@@ -119,7 +119,7 @@ module Wovnrb
119
119
  converter = prepare_html_converter('<html>hello<a>world</a></html>', supported_langs: [])
120
120
  translated_html = converter.build
121
121
 
122
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body>hello<a>world</a></body></html>"
122
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script></head><body>hello<a>world</a></body></html>"
123
123
  assert_equal(expected_html, translated_html)
124
124
  end
125
125
 
@@ -134,7 +134,7 @@ module Wovnrb
134
134
  converter = HtmlConverter.new(dom, store, headers)
135
135
  translated_html = converter.build
136
136
 
137
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>hello<a>world</a></body></html>"
137
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/?wovn=ja\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/?wovn=vi\"></head><body>hello<a>world</a></body></html>"
138
138
  assert_equal(expected_html, translated_html)
139
139
  end
140
140
 
@@ -149,7 +149,7 @@ module Wovnrb
149
149
  converter = HtmlConverter.new(dom, store, headers)
150
150
  translated_html = converter.build
151
151
 
152
- expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body>hello<a>world</a></body></html>"
152
+ expected_html = "<html lang=\"en\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://my-site.com/\"><link rel=\"alternate\" hreflang=\"ja\" href=\"http://my-site.com/ja/\"><link rel=\"alternate\" hreflang=\"vi\" href=\"http://my-site.com/vi/\"></head><body>hello<a>world</a></body></html>"
153
153
  assert_equal(expected_html, translated_html)
154
154
  end
155
155
 
@@ -163,7 +163,7 @@ module Wovnrb
163
163
  </head></html>')
164
164
  converter.send(:replace_snippet)
165
165
 
166
- expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><script src=\"/a\"></script></head><body></body></html>"
166
+ expected_html = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=en&amp;defaultLang=en&amp;urlPattern=query&amp;langCodeAliases={}&amp;langParamName=wovn&amp;version=WOVN.rb_#{VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><script src=\"/a\"></script></head><body></body></html>"
167
167
  assert_equal(expected_html.gsub(/\s+/, ''), converter.send(:html).gsub(/\s+/, ''))
168
168
  end
169
169
 
@@ -31,9 +31,11 @@ module Wovnrb
31
31
  end
32
32
 
33
33
  def test_error
34
- mock = LogMock.mock_log
35
- WovnLogger.instance.error('aaa')
36
- assert_equal(['aaa'], mock.errors)
34
+ SecureRandom.stub(:uuid, 'a') do
35
+ mock = LogMock.mock_log
36
+ WovnLogger.instance.error('aaa')
37
+ assert_equal(['[a] aaa'], mock.errors)
38
+ end
37
39
  end
38
40
  end
39
41
  end
@@ -78,12 +78,14 @@ module Wovnrb
78
78
  end
79
79
 
80
80
  def test_invalid_settings
81
- mock = LogMock.mock_log
82
- store = Wovnrb::Store.instance
83
- valid = store.valid_settings?
81
+ SecureRandom.stub(:uuid, 'a') do
82
+ mock = LogMock.mock_log
83
+ store = Wovnrb::Store.instance
84
+ valid = store.valid_settings?
84
85
 
85
- assert_equal(false, valid)
86
- assert_equal(['Project token is not valid.'], mock.errors)
86
+ assert_equal(false, valid)
87
+ assert_equal(['[a] Project token is not valid.'], mock.errors)
88
+ end
87
89
  end
88
90
 
89
91
  def test_settings_ignore_paths
@@ -110,12 +112,14 @@ module Wovnrb
110
112
  end
111
113
 
112
114
  def test_settings_invalid_ignore_paths
113
- mock = LogMock.mock_log
114
- store = Wovnrb::Store.instance
115
- store.update_settings('ignore_paths' => 'aaaa')
115
+ SecureRandom.stub(:uuid, 'a') do
116
+ mock = LogMock.mock_log
117
+ store = Wovnrb::Store.instance
118
+ store.update_settings('ignore_paths' => 'aaaa')
116
119
 
117
- assert_equal(false, store.valid_settings?)
118
- assert_equal(['Project token is not valid.', 'Ignore Paths aaaa should be Array.'], mock.errors)
120
+ assert_equal(false, store.valid_settings?)
121
+ assert_equal(['[a] Project token is not valid.', '[a] Ignore Paths aaaa should be Array.'], mock.errors)
122
+ end
119
123
  end
120
124
 
121
125
  def test_settings_ignore_glob_injection
@@ -126,15 +130,17 @@ module Wovnrb
126
130
  assert_equal([], s.settings['ignore_globs'])
127
131
  end
128
132
 
129
- def test_default_dev_mode_settings
133
+ def test_widget_url_settings
130
134
  store = Wovnrb::Store.instance
131
135
 
132
- store.update_settings('wovn_dev_mode' => true)
136
+ store.update_settings('widget_url' => nil)
137
+ assert_equal('https://j.wovn.io/1', store.widget_url)
133
138
 
134
- assert(store.dev_mode?)
135
- assert_equal('dev-wovn.io', store.wovn_host)
136
- assert_equal('http://dev-wovn.io:3001', store.settings['api_url'])
137
- assert_equal(3, store.settings['api_timeout_seconds'])
139
+ store.update_settings('widget_url' => 'https://j.wovn.io/1')
140
+ assert_equal('https://j.wovn.io/1', store.widget_url)
141
+
142
+ store.update_settings('widget_url' => 'http://j.dev-wovn.io:3000/1')
143
+ assert_equal('http://j.dev-wovn.io:3000/1', store.widget_url)
138
144
  end
139
145
 
140
146
  def test_dev_mode_not_overriding_settings
@@ -16,7 +16,7 @@ class WovnrbTest < Minitest::Test
16
16
 
17
17
  expected_body = [
18
18
  '<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">',
19
- "<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;version=#{Wovnrb::VERSION}\"> </script>",
19
+ "<script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;version=#{Wovnrb::VERSION}\"> </script>",
20
20
  '<link rel="alternate" hreflang="ja" href="http://ja.page.com/">',
21
21
  '<link rel="alternate" hreflang="en" href="http://page.com/"></head>',
22
22
  '<body><h1><!--wovn-src:Mr. Belvedere Fan Club-->ベルベデアさんファンクラブ</h1>',
@@ -40,7 +40,7 @@ class WovnrbTest < Minitest::Test
40
40
 
41
41
  expected_body = [
42
42
  '<html lang="ja"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">',
43
- "<script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script>",
43
+ "<script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&backend=true&currentLang=ja&defaultLang=en&urlPattern=path&langCodeAliases={}&version=#{Wovnrb::VERSION}\"> </script>",
44
44
  '<link rel="alternate" hreflang="ja" href="http://ja.page.com/">',
45
45
  '<link rel="alternate" hreflang="en" href="http://page.com/"></head>',
46
46
  '<body>',
@@ -66,7 +66,7 @@ class WovnrbTest < Minitest::Test
66
66
  bodies = ['<html><body><h1>Mr. Belvedere Fan Club</h1>',
67
67
  '<div><p>Hello</p></div>',
68
68
  '</body></html>'].join
69
- expected_bodies = ["<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=subdomain&amp;langCodeAliases={}&amp;version=WOVN.rb_#{Wovnrb::VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body><h1>Mr. Belvedere Fan Club</h1><div><p>Hello</p></div></body></html>"].join
69
+ expected_bodies = ["<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=123456&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=subdomain&amp;langCodeAliases={}&amp;version=WOVN.rb_#{Wovnrb::VERSION}\" data-wovnio-type=\"fallback_snippet\"></script><link rel=\"alternate\" hreflang=\"en\" href=\"http://page.com/\"></head><body><h1>Mr. Belvedere Fan Club</h1><div><p>Hello</p></div></body></html>"].join
70
70
 
71
71
  assert_switch_lang('en', 'ja', bodies, expected_bodies, api_expected: true)
72
72
  end
@@ -83,7 +83,7 @@ class WovnrbTest < Minitest::Test
83
83
  body = "<html><body><h1>Mr. Belvedere Fan Club</h1>
84
84
  <div><p>Hello</p></div>
85
85
  </body></html>"
86
- expected_body = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"//j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;version=#{Wovnrb::VERSION}\"> </script></head><body><h1>Mr. Belvedere Fan Club</h1>
86
+ expected_body = "<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"><script src=\"https://j.wovn.io/1\" async=\"true\" data-wovnio=\"key=&amp;backend=true&amp;currentLang=ja&amp;defaultLang=en&amp;urlPattern=path&amp;langCodeAliases={}&amp;version=#{Wovnrb::VERSION}\"> </script></head><body><h1>Mr. Belvedere Fan Club</h1>
87
87
  <div><p>Hello</p></div>
88
88
  </body></html>
89
89
  "
data/wovnrb.gemspec CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'activesupport'
24
24
  spec.add_dependency 'addressable'
25
25
  spec.add_dependency 'lz4-ruby'
26
- spec.add_dependency 'nokogiri', '>= 1.8.1'
26
+ spec.add_dependency 'nokogiri', '>= 1.8.1', '<= 1.11'
27
27
  spec.add_dependency 'nokogumbo', '>= 1.4.0', '< 2.0.0'
28
28
  spec.add_dependency 'rack'
29
29
 
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.0.3
4
+ version: 3.4.0
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: 2021-07-28 00:00:00.000000000 Z
11
+ date: 2021-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -59,6 +59,9 @@ dependencies:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.8.1
62
+ - - "<="
63
+ - !ruby/object:Gem::Version
64
+ version: '1.11'
62
65
  type: :runtime
63
66
  prerelease: false
64
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +69,9 @@ dependencies:
66
69
  - - ">="
67
70
  - !ruby/object:Gem::Version
68
71
  version: 1.8.1
72
+ - - "<="
73
+ - !ruby/object:Gem::Version
74
+ version: '1.11'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: nokogumbo
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -546,7 +552,7 @@ homepage: https://wovn.io
546
552
  licenses:
547
553
  - MIT
548
554
  metadata: {}
549
- post_install_message:
555
+ post_install_message:
550
556
  rdoc_options: []
551
557
  require_paths:
552
558
  - lib
@@ -561,8 +567,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
561
567
  - !ruby/object:Gem::Version
562
568
  version: '0'
563
569
  requirements: []
564
- rubygems_version: 3.1.4
565
- signing_key:
570
+ rubygems_version: 3.0.3
571
+ signing_key:
566
572
  specification_version: 4
567
573
  summary: Gem for WOVN.io
568
574
  test_files: