diff --git a/lib/xsd/schema.rb b/lib/xsd/schema.rb index 12a0cd6d9..03bb984f1 100644 --- a/lib/xsd/schema.rb +++ b/lib/xsd/schema.rb @@ -3,6 +3,22 @@ module Xsd SCHEMA_PATH = 'lib/schemas/'.freeze BASE_URL = 'https://epp.tld.ee/schema/'.freeze + PREFIXES = %w[ + domain-eis + all-ee + changePoll + airport + contact + contact-ee + contact-eis + eis + epp + epp-ee + eppcom + host + secDNS + ].freeze + attr_reader :xsd_schemas, :for_prefix def initialize(params) diff --git a/test/integration/epp/domain/info/base_test.rb b/test/integration/epp/domain/info/base_test.rb index 5f44248aa..80a84b754 100644 --- a/test/integration/epp/domain/info/base_test.rb +++ b/test/integration/epp/domain/info/base_test.rb @@ -26,10 +26,8 @@ class EppDomainInfoBaseTest < EppTestCase response_xml = Nokogiri::XML(response.body) - schema_version = return_xml_domain_schema_version(response_xml) - assert_epp_response :completed_successfully - assert schema_version >= 1.1 + assert assert_schema_is_bigger(response_xml, 'domain-eis', 1.1) assert_equal 'shop.test', response_xml.at_xpath('//domain:name', 'domain' => "#{Xsd::Schema.filename(for_prefix: 'domain-eis')}").text assert_equal 'ok', response_xml.at_xpath('//domain:status', 'domain' => "#{Xsd::Schema.filename(for_prefix: 'domain-eis')}")['s'] assert_equal 'john-001', response_xml.at_xpath('//domain:registrant', 'domain' => "#{Xsd::Schema.filename(for_prefix: 'domain-eis')}").text diff --git a/test/lib/xsd_schema/xsd_schema_test.rb b/test/lib/xsd_schema/xsd_schema_test.rb index ac5868746..0d3e30103 100644 --- a/test/lib/xsd_schema/xsd_schema_test.rb +++ b/test/lib/xsd_schema/xsd_schema_test.rb @@ -18,5 +18,4 @@ class XsdSchemaTest < ActiveSupport::TestCase assert_equal Xsd::Schema::BASE_URL + 'abcde-fghij-1.3.xsd', filename end - end diff --git a/test/test_helper.rb b/test/test_helper.rb index addeede90..a8ed1a3ca 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -69,12 +69,23 @@ end class EppTestCase < ActionDispatch::IntegrationTest include Assertions::EppAssertions - def return_xml_domain_schema_version(response_xml) - version_regex = /-\d+\S\d+/ - domain_schema_tag = response_xml.to_s.scan(/xmlns:domain\S+/) - schema_path = domain_schema_tag.to_s.match(%r{https?://\S+})[0] - version = schema_path.to_s.match(version_regex)[0] + def assert_schema_is_bigger(response_xml, prefix, version) + schema_version = prefix_schema_tag(prefix, response_xml) - -version.to_f + assert schema_version >= version + end + + private + + def prefix_schema_tag(prefix, response_xml) + if Xsd::Schema::PREFIXES.include? prefix + version_regex = /-\d+\S\d+/ + domain_schema_tag = response_xml.to_s.scan(%r{https://epp.tld.ee/schema/#{prefix}\S+}) + version = domain_schema_tag.to_s.match(version_regex)[0] + + -version.to_f + else + raise Exception.new('Wrong prefix') + end end end