def my_get(url, **kwargs): urlspec = spec[url] if isinstance(urlspec, str): urlspec = {'file': urlspec} if 'charset' not in urlspec: urlspec['charset'] = 'utf-8' url_location = os.path.join(os.path.dirname(specfile), urlspec['file']) res = Mock() # load the .content property with open(url_location, "rb") as fp: res.content = fp.read() # but only load .text if a charset is present (note # default value of 'utf-8' above -- set 'charset': null in # the json file for binary files if urlspec['charset']: with codecs.open(url_location, "r", encoding=urlspec['charset']) as fp: res.text = fp.read() # FIXME: Using a defaultdict ensures that we'll never trip # over the non-existance of certain headers. WE should # specify only the most basic headers to make sure calling # code doesn't rely on eg. the etag header always being # there, because it won't res.headers = collections.defaultdict(lambda: None) res.headers['X-These-Headers-Are'] = 'Faked' res.status_code = 200 return res
def test_sesame_select(self, mock_get): store = TripleStore.connect("SESAME", "", "") rf = util.readfile want = rf("test/files/triplestore/select-results.xml").encode() got = store.select("the-query") self.assertEqual(want, got) self.assertEqual(mock_get.call_count, 1) want = rf("test/files/triplestore/select-results.json") got = store.select("the-query", format="json").decode() self.assertEqual(json.loads(want), json.loads(got)) self.assertEqual(mock_get.call_count, 2) want = json.loads( rf("test/files/triplestore/select-results-python.json"), object_hook=util.make_json_date_object_hook("issued")) got = store.select("the-query", format="python") self.assertEqual(want, got) self.assertEqual(mock_get.call_count, 3) with self.assertRaises(errors.TriplestoreError): mockresponse = Mock() mockresponse.text = "This is the actual error text" mock_get.side_effect = requests.exceptions.HTTPError( "Server error", response=mockresponse) got = store.select("the-query", format="python")
def _myget(self, url, **kwargs): res = Mock() res.headers = collections.defaultdict(lambda: None) res.headers['Content-type'] = "text/html" res.status_code = 200 res.encoding = 'utf-8' if url == "http://example.org/": res.content = b"<p><a href='doc/a_.html'>ID: a</a></p>" elif url == "http://example.org/doc/a_.html": res.content = b"<p>This is doc A</p>" else: raise ValueError("Unknown url %s" % url) res.text = res.content.decode() return res
def _myget(self, url, **kwargs): res = Mock() res.headers = collections.defaultdict(lambda:None) res.headers['Content-type'] = "text/html" res.status_code = 200 res.encoding = 'utf-8' if url == "http://example.org/": res.content = b"<p><a href='doc/a_.html'>ID: a</a></p>" elif url == "http://example.org/doc/a_.html": res.content = b"<p>This is doc A</p>" else: raise ValueError("Unknown url %s" % url) res.text = res.content.decode() return res
def makeresponse(*args, **kwargs): if len(returned) > len(responses): raise IndexError("Ran out of canned responses after %s calls" % len(returned)) resp = Mock() resp.status_code = responses[len(returned)][0] responsefile = responses[len(returned)][1] if responsefile: responsefile = "test/files/triplestore/" + responsefile resp.content = util.readfile(responsefile, "rb") resp.text = util.readfile(responsefile) if responsefile.endswith(".json"): data = json.loads(util.readfile(responsefile)) resp.json = Mock(return_value=data) returned.append(True) return resp
def test_sesame_select(self, mock_get): store = TripleStore.connect("SESAME", "", "") rf = util.readfile want = rf("test/files/triplestore/select-results.xml").encode() got = store.select("the-query") self.assertEqual(want, got) self.assertEqual(mock_get.call_count, 1) want = rf("test/files/triplestore/select-results.json") got = store.select("the-query", format="json").decode() self.assertEqual(json.loads(want), json.loads(got)) self.assertEqual(mock_get.call_count, 2) want = json.loads(rf("test/files/triplestore/select-results-python.json"), object_hook=util.make_json_date_object_hook("issued")) got = store.select("the-query", format="python") self.assertEqual(want, got) self.assertEqual(mock_get.call_count, 3) with self.assertRaises(errors.TriplestoreError): mockresponse = Mock() mockresponse.text = "This is the actual error text" mock_get.side_effect = requests.exceptions.HTTPError("Server error", response=mockresponse) got = store.select("the-query", format="python")
def get_sesame(url): if not 'openrdf-sesame' in url: raise requests.exceptions.HTTPError resp = Mock() resp.text = "ok" return resp