Forum: Ruby on Rails assert XSD validity

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Jarl F. (Guest)
on 2008-11-19 15:36
(Received via mailing list)
Hi.

I am working on a webservice producing xml content, In my rails
functional test I would like to assert that this generated xml
(@reponse.body) conforms to a specific XSD.

What is the best approach to do this?

Jarl
Frederick C. (Guest)
on 2008-11-19 16:40
(Received via mailing list)
On 19 Nov 2008, at 13:07, Jarl F. wrote:

>
> Hi.
>
> I am working on a webservice producing xml content, In my rails
> functional test I would like to assert that this generated xml
> (@reponse.body) conforms to a specific XSD.
>
> What is the best approach to do this?
>
Dunno about best approach but I recently did something along those
lines (in this particular case I was generating xml to send to a
webservice rather than your way round, but I don't think that's
relevant)
in the end I just popened xmllint and piped my xml in. The ruby libxml
bindings might allow you do stuff like that, I didn't look very
closely at that.

Fred
Jarl F. (Guest)
on 2008-11-20 12:57
(Received via mailing list)
Thanks for the reply.

Frederick C. <removed_email_address@domain.invalid> writes:

>>
> Dunno about best approach but I recently did something along those
> lines (in this particular case I was generating xml to send to a
> webservice rather than your way round, but I don't think that's
> relevant)
> in the end I just popened xmllint and piped my xml in.

Cool, but xmllint only validates against a DTD, right? I am interested
in (a more strict) validation against a XSD.

Jarl
Frederick C. (Guest)
on 2008-11-20 13:25
(Received via mailing list)
On 20 Nov 2008, at 10:56, Jarl F. wrote:

>>> I am working on a webservice producing xml content, In my rails
>
> Cool, but xmllint only validates against a DTD, right? I am interested
> in (a more strict) validation against a XSD.

Does both as far as I know ( I only had an xsd anyway)

Fred
Jarl F. (Guest)
on 2008-11-21 13:14
(Received via mailing list)
Frederick C. <removed_email_address@domain.invalid> writes:

> Does both as far as I know ( I only had an xsd anyway)

Thanks. the xmllint help says
--schema schema : do validation against the WXS schema

I have never seen "WXS" as an abreviation for XML Schema Definition
files.

I now made a small rails test helper like this:

require 'open3'
class ActionController::TestCase
  def assert_xsd_validity(xsd, xml = @response.body )
    assert test(?e, xsd), "#{xsd} does not exist"
    xml_temp_file = Tempfile.new("xsd_helper_tempfile")
    xml_temp_file.write xml
    xml_temp_file.close
    command_line = "/usr/bin/env xmllint -noout --schema #{xsd}
#{xml_temp_file.path}"
    err = ""
    Open3.popen3(command_line){|stdin, stdout, stderr|
      stdin.close
      out = stdout.read
      err = stderr.read
    }
    assert_equal "#{xml_temp_file.path} validates\n", err
  end
end


Jarl
Frederick C. (Guest)
on 2008-11-21 13:21
(Received via mailing list)
On 21 Nov 2008, at 11:13, Jarl F. wrote:

>
stands for W3C XML schema apparently :-)

Fred
This topic is locked and can not be replied to.