def testSyncWavelengthForHeadRequest(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE RadTransWavelength > 0 AND RadTransWavelength < 4000" self.queryDict["QUERY"] = sql self.request.method = 'HEAD' self.request.REQUEST = self.queryDict response = views.sync(self.request) headers = response.items() headers.pop(1) self.assertEquals(200, response.status_code) expected_headers = [ ('VAMDC-COUNT-SPECIES', '1'), ('VAMDC-COUNT-STATES', '133'), ('Access-Control-Expose-Headers', 'VAMDC-COUNT-SOURCES, VAMDC-COUNT-MOLECULES, VAMDC-COUNT-SPECIES, VAMDC-COUNT-STATES, VAMDC-COUNT-RADIATIVE, VAMDC-TRUNCATED, VAMDC-APPROX-SIZE'), ('VAMDC-COUNT-MOLECULES', '1'), ('VAMDC-COUNT-SOURCES', '3'), ('Access-Control-Allow-Origin', '*'), ('Last-Modified', 'Thu, 05 Nov 2015 18:00:00 GMT'), ('VAMDC-APPROX-SIZE', '0.110'), ('VAMDC-COUNT-RADIATIVE', '168'), ('Content-Type', 'text/xml'), ('VAMDC-TRUNCATED', '100') ] self.assertSequenceEqual(expected_headers, headers) self.assertEquals('', response.content)
def testAddRules(self): rulesParser = RulesParser() # 2.6 set([]) ; 2.7 {} rulesParser.addRules = set([ Rule(NODEID, "abs(nltcs:J + nltcs:Ka) <= 11"), Rule(NODEID, "abs(nltcs:Ka + nltcs:v1) <= pow(nltcs:v2, nltcs:Kc)") ]) queryfunc.rules = rulesParser.getRules() self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) verificationXSD.assertValid(objTree) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule', namespaces={"xsams": XSAMS_NS}) self.assertEquals(5, len(numberElements)) numberElements = objTree.xpath( '//xsams:NumberOfVerificationByRule[@name = "' + NODEID + 'RuleS01" or @name = "' + NODEID + 'RuleS02"]', namespaces={"xsams": XSAMS_NS}) self.assertEquals(2, len(numberElements)) for numberElement in numberElements: self.assertEquals("1", numberElement.attrib["correct"]) self.assertEquals("2", numberElement.attrib["incorrect"])
def testSyncSelectSaga2_nh3(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/H3N/h1H3' AND RadTransWavenumber > 4300 AND RadTransWavenumber < 4301) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) xsamsXSD.assertValid(objTree)
def testSyncSelectSaga2_nh3(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/H3N/h1H3' AND RadTransWavenumber > 4300 AND RadTransWavenumber < 4301) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict response = views.sync(self.request) self.assertEquals(204, response.status_code) self.assertEquals('', response.content)
def testNoData(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE RadTransWavelength > 0 AND RadTransWavelength < 0" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict response = views.sync(self.request) self.assertEquals(204, response.status_code) self.assertEquals('', response.content)
def testSyncWavelength(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE RadTransWavelength > 0 AND RadTransWavelength < 4000" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree)
def getBigFile(): settings.DEBUG = True query = 'LANG=VSS1&FORMAT=VERIFICATION&QUERY=SELECT All WHERE InChI =\'InChI=1S/H2O/h1H2/i/hD\'' request = HttpRequest() request.META["SERVER_NAME"] = 'localhost' request.META["SERVER_PORT"] = '80' request.META["REMOTE_ADDR"] = '127.0.0.1' request.META["QUERY_STRING"] = query request.REQUEST = toDict(QueryDict(query)) return views.sync(request).content
def testGOOD(self): settings.DEBUG = DEBUG self.queryDict["RETURN"] = 'GOOD' self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) verificationXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring(open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/verGOOD.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testDelRules(self): rulesParser = RulesParser() rulesParser.delRules = set([Rule("nltcsRuleS01", None), Rule("nltcsRuleT02", None)]) queryfunc.rules = rulesParser.getRules() self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) verificationXSD.assertValid(objTree) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule', namespaces={"xsams":XSAMS_NS}) self.assertEquals(1, len(numberElements))
def testSelectSpecies(self): settings.DEBUG = DEBUG sql = "SELECT SPECIES" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) # print(actual) xsamsXSD.assertValid(objTree)
def testUseOnlyRules(self): rulesParser = RulesParser() rulesParser.useRules = {Rule("nltcsRuleT02", None), Rule(NODEID, "abs(nltcs:J + nltcs:Ka) <= 11")} queryfunc.rules = rulesParser.getRules() self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) verificationXSD.assertValid(objTree) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule', namespaces={"xsams":XSAMS_NS}) self.assertEquals(2, len(numberElements))
def testSyncSelectMoleculeInchiKey(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE (InchiKey='RWSOTUBLDIXVET-IQRQJSDFSA-N' AND RadTransWavenumber > 40 AND RadTransWavenumber < 45) OR (Inchi IN ('InChI=1S/H2O/h1H2') AND RadTransWavenumber > 1239.2185 AND RadTransWavenumber < 1239.2191)" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict objTree = objectify.fromstring(views.sync(self.request).content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring(open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/InchiKey.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectMoleculeEnergy(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE StateEnergy > 9895.327 AND StateEnergy < 9895.328" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring(open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/Energy.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectSaga2_co(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/CO/c1-2' AND RadTransWavenumber > 2135.3135 AND RadTransWavenumber < 2135.3137) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring(open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/co.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectMoleculeH_17OD_W_Int(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/H2O/h1H2/i1+1/hD' AND RadTransWavenumber > 1234.23 AND RadTransWavenumber < 1244.24 AND RadTransProbabilityIdealisedIntensity < 1) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring(open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/H_17OD_W_Int.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def getBigFile(): settings.DEBUG = True #query = 'LANG=VSS1&FORMAT=VERIFICATION&QUERY=SELECT All WHERE InChI =\'InChI=1S/H2O/h1H2/i/hD\'' #query = "LANG=VSS1&FORMAT=XSAMS&QUERY=select * where (RadTransWavenumber >= 1239.0 AND RadTransWavenumber <= 1240.0) AND ((InchiKey IN ('A', 'XLYOFNOQVPJJNP-DYCDLGHISA-N','XLYOFNOQVPJJNP-DQGQKLTASA-N')))" query = "LANG=VSS1&FORMAT=VERIFICATION&QUERY=select * where (RadTransWavenumber >= 1239.0 AND RadTransWavenumber <= 1240.0) AND ((InchiKey IN ('A', 'XLYOFNOQVPJJNP-DYCDLGHISA-N','XLYOFNOQVPJJNP-DQGQKLTASA-N')))" request = HttpRequest() request.META["SERVER_NAME"] = 'localhost' request.META["SERVER_PORT"] = '80' request.META["REMOTE_ADDR"] = '127.0.0.1' request.META["QUERY_STRING"] = query request.REQUEST = toDict(QueryDict(query)) return views.sync(request).content
def testGOOD(self): settings.DEBUG = DEBUG self.queryDict["RETURN"] = 'GOOD' self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) verificationXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring( open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/verGOOD.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testDelRules(self): rulesParser = RulesParser() rulesParser.delRules = set( [Rule("nltcsRuleS01", None), Rule("nltcsRuleT02", None)]) queryfunc.rules = rulesParser.getRules() self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) verificationXSD.assertValid(objTree) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule', namespaces={"xsams": XSAMS_NS}) self.assertEquals(1, len(numberElements))
def testSyncSelectMoleculeInchiKey(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE (InchiKey='RWSOTUBLDIXVET-IQRQJSDFSA-N' AND RadTransWavenumber > 40 AND RadTransWavenumber < 45) OR (Inchi IN ('InChI=1S/H2O/h1H2') AND RadTransWavenumber > 1239.2185 AND RadTransWavenumber < 1239.2191)" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict objTree = objectify.fromstring(views.sync(self.request).content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring( open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/InchiKey.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectMoleculeH_17OD_W_Int(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/H2O/h1H2/i1+1/hD' AND RadTransWavenumber > 1234.23 AND RadTransWavenumber < 1244.24 AND RadTransProbabilityIdealisedIntensity < 1) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring( open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/H_17OD_W_Int.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectMoleculeEnergy(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE StateEnergy > 9895.327 AND StateEnergy < 9895.328" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring( open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/Energy.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testSyncSelectSaga2_co(self): settings.DEBUG = DEBUG sql = "SELECT All WHERE ((Inchi='InChI=1S/CO/c1-2' AND RadTransWavenumber > 2135.3135 AND RadTransWavenumber < 2135.3137) AND MethodCategory = 'experiment')" self.queryDict["QUERY"] = sql self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) removeSelfSource(objTree) actual = etree.tostring(objTree, pretty_print=True) xsamsXSD.assertValid(objTree) expected = etree.tostring(objectify.fromstring( open(settings.BASE_PATH + "/nodes/" + settings.NODENAME + "/test/co.xml").read()), pretty_print=True) self.assertEquals(expected, actual)
def testAddRules(self): rulesParser = RulesParser() rulesParser.addRules = {Rule(NODEID, "abs(nltcs:J + nltcs:Ka) <= 11"), Rule(NODEID, "abs(nltcs:Ka + nltcs:v1) <= pow(nltcs:v2, nltcs:Kc)")} queryfunc.rules = rulesParser.getRules() self.request.REQUEST = self.queryDict content = views.sync(self.request).content objTree = objectify.fromstring(content) verificationXSD.assertValid(objTree) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule', namespaces={"xsams":XSAMS_NS}) self.assertEquals(5, len(numberElements)) numberElements = objTree.xpath('//xsams:NumberOfVerificationByRule[@name = "' + NODEID + 'RuleS01" or @name = "' + NODEID + 'RuleS02"]', namespaces={"xsams":XSAMS_NS}) self.assertEquals(2, len(numberElements)) for numberElement in numberElements: self.assertEquals("1", numberElement.attrib["correct"]) self.assertEquals("2", numberElement.attrib["incorrect"])