spec/spec_helper.rb in deepl-rb-2.5.3 vs spec/spec_helper.rb in deepl-rb-3.0.0
- old
+ new
@@ -1,31 +1,88 @@
+# Copyright 2018 Daniel Herzog
+# Use of this source code is governed by an MIT
+# license that can be found in the LICENSE.md file.
# frozen_string_literal: true
# Coverage
require 'simplecov'
SimpleCov.start
-require 'codecov'
-SimpleCov.formatter = SimpleCov::Formatter::Codecov
+require 'simplecov-cobertura'
+SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
# Load lib
require_relative '../lib/deepl'
+require_relative 'integration_tests/integration_test_utils'
# Lib config
ENV['DEEPL_AUTH_KEY'] ||= 'TEST-TOKEN'
+# General helpers
+def build_deepl_api
+ DeepL::API.new(DeepL::Configuration.new)
+end
+
+uri_ignoring_deepl_api_subdomain = lambda do |request1, request2|
+ deepl_api_regexp = %r{https?://api.*\.deepl\.com/}
+ uri1 = request1.uri
+ uri2 = request2.uri
+ uri1_match = uri1.match(deepl_api_regexp)
+ uri2_match = uri2.match(deepl_api_regexp)
+ if uri1_match && uri2_match
+ uri1_without_deepl_domain = uri1.gsub(uri1_match[0], '')
+ uri2_without_deepl_domain = uri2.gsub(uri2_match[0], '')
+ uri1_without_deepl_domain == uri2_without_deepl_domain
+ else
+ uri1 == uri2
+ end
+end
+
+headers_ignoring_user_agent = lambda do |request1, request2|
+ user_agent_key = 'User-Agent'
+ # Pass by reference, so we need to use a copy of the headers
+ headers1 = request1.headers.dup
+ headers2 = request2.headers.dup
+ headers1_has_user_agent = headers1.key?(user_agent_key)
+ headers2_has_user_agent = headers2.key?(user_agent_key)
+ return false if headers1_has_user_agent != headers2_has_user_agent
+
+ headers1.delete(user_agent_key)
+ headers2.delete(user_agent_key)
+ headers1 == headers2
+end
+
# VCR tapes configuration
require 'vcr'
VCR.configure do |config|
config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
config.hook_into :webmock
config.filter_sensitive_data('VALID_TOKEN') { ENV.fetch('DEEPL_AUTH_KEY', nil) }
config.default_cassette_options = {
+ # Uncomment this line when adding new tests, run the tests once, then comment it again
# record: :new_episodes,
- match_requests_on: %i[method uri body headers]
+ match_requests_on: [:method, uri_ignoring_deepl_api_subdomain, :body,
+ headers_ignoring_user_agent]
}
end
-# General helpers
-def build_deepl_api
- DeepL::API.new(DeepL::Configuration.new(host: 'https://api-free.deepl.com'))
+# Test helpers
+
+def replace_env_preserving_deepl_vars
+ env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
+ env_server_url = ENV.fetch('DEEPL_SERVER_URL', false)
+ env_mock_server_port = ENV.fetch('DEEPL_MOCK_SERVER_PORT', false)
+ tmp_env = ENV.to_hash
+ ENV.clear
+ ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
+ ENV['DEEPL_SERVER_URL'] = (env_server_url || '')
+ ENV['DEEPL_MOCK_SERVER_PORT'] = (env_mock_server_port || '')
+ tmp_env
+end
+
+def replace_env_preserving_deepl_vars_except_mock_server
+ env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
+ tmp_env = ENV.to_hash
+ ENV.clear
+ ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
+ tmp_env
end