diff options
author | ot <ot@localhost> | 2008-02-27 20:20:47 +0000 |
---|---|---|
committer | ot <ot@localhost> | 2008-02-27 20:20:47 +0000 |
commit | 3e299500dc7664b5aa8a813a986c410d0974e5c0 (patch) | |
tree | 17e4853cfec688d7f690a83fd82a8e9e8956e77f /misc/testsuite/lib/ValidatorsAPIs.py | |
parent | 843bdaa7a00c4710bef571a194eb6d7f52b7e272 (diff) | |
download | markup-validator-3e299500dc7664b5aa8a813a986c410d0974e5c0.zip markup-validator-3e299500dc7664b5aa8a813a986c410d0974e5c0.tar.gz markup-validator-3e299500dc7664b5aa8a813a986c410d0974e5c0.tar.bz2 |
simple python code to access the markup validator via its HTTP headers response
Diffstat (limited to 'misc/testsuite/lib/ValidatorsAPIs.py')
-rw-r--r-- | misc/testsuite/lib/ValidatorsAPIs.py | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/misc/testsuite/lib/ValidatorsAPIs.py b/misc/testsuite/lib/ValidatorsAPIs.py new file mode 100644 index 0000000..582d990 --- /dev/null +++ b/misc/testsuite/lib/ValidatorsAPIs.py @@ -0,0 +1,95 @@ +#!/usr/bin/env python +# encoding: utf-8 +""" +W3CLikCheckerClient.py +Simple client lib to interact with the W3C Link Checker + +Created by olivier Thereaux on 2008-01-22. +Copyright (c) 2008 W3C. Licensed under the W3C Software License +http://www.w3.org/Consortium/Legal/copyright-software +""" + +import sys +import os +import re +import unittest +import urllib, urllib2 +import xml.etree.cElementTree as ET + +class W3CValidatorHTTP(): + """Fetch and parse results from a validator using the W3C Validator SOAP API""" + def __init__(self, check_URI=None): + if check_URI != None: + self.check_URI= check_URI+'?uri=%(URI)s' + else: + self.check_URI= 'http://qa-dev.w3.org/wmvs/HEAD/check?uri=%(URI)s' + + + def call_check(self, TC_uri): + """Make a request to the checker and store its response""" + data = urllib.quote(TC_uri, "") + final_checker_URI = self.check_URI % {"URI": TC_uri } + try: + response = urllib2.urlopen(final_checker_URI) + return response + except (urllib2.HTTPError, urllib2.URLError): + return None + + def parse_response(self, response): + """Parse a W3C Markup Validator Response via its HTTP headers""" + response_headers = response.info() + results = dict() + results["NumErrors"] = response_headers.getheader("x-w3c-validator-errors") + results["NumWarnings"] = response_headers.getheader("x-w3c-validator-warnings") + results["Validity"] = response_headers.getheader("x-w3c-validator-status") + if results["Validity"] == "Valid": + results["Validity"] = "Pass" + if results["Validity"] == "Invalid": + results["Validity"] = "Fail" + return results + +class W3CValidatorHTTP_test(unittest.TestCase): + """Unit testing for sanity of W3CValidatorAPI code""" + def setUp(self): + pass + + def test_init(self): + """Test initializing a client to W3C validator HTTP results""" + default_checker = W3CValidatorHTTP() + self.assertEqual(default_checker.check_URI, 'http://qa-dev.w3.org/wmvs/HEAD/check?uri=%(URI)s;output=soap12') + + def test_contact_default(self): + """Test Contacting the default validator instance""" + default_checker = W3CValidatorHTTP() + checked = default_checker.call_check("http://www.w3.org") + self.assertNotEqual(checked, None) + + def test_contact_vwo(self): + """Test Contacting the main W3C validator instance""" + default_checker = W3CValidatorHTTP("http://validator.w3.org/check?uri=%(URI)s") + checked = default_checker.call_check("http://www.w3.org") + self.assertNotEqual(checked, None) + + def test_parse_response(self): + """Test parsing response from default validator instance""" + default_checker = W3CValidatorHTTP() + checked = default_checker.call_check("http://www.w3.org") + results = default_checker.parse_response(checked) + self.assert_(isinstance(results,dict)) + + def test_parse_response_invalid(self): + """Test parsing response for a known invalid resource""" + default_checker = W3CValidatorHTTP() + checked = default_checker.call_check("http://qa-dev.w3.org/wmvs/HEAD/dev/tests/xhtml1-bogus-element.html") + results = default_checker.parse_response(checked) + self.assertNotEquals(results["NumErrors"], 0) + + def test_parse_response_valid(self): + """Test parsing response for a known valid HTML resource""" + default_checker = W3CValidatorHTTP() + checked = default_checker.call_check("http://qa-dev.w3.org/wmvs/HEAD/dev/tests/html20.html") + results = default_checker.parse_response(checked) + self.assertNotEquals([results["NumErrors"], results["Validity"]], [0, "Valid"]) + +if __name__ == '__main__': + unittest.main()
\ No newline at end of file |