self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(self.page)]
+class StatusResponse(GenericResponse):
+
+ def __init__(self, page, fmt='text', errorcode=200):
+ self.page = page
+ self.format = fmt
+ self.errorcode = errorcode
+
+ if errorcode == 200 and fmt != 'text':
+ getattr(self, 'parse_' + fmt)()
+
+ def parse_json(self):
+ self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(self.page)]
+
+
@when(u'searching for "(?P<query>.*)"(?P<dups> with dups)?')
def query_cmd(context, query, dups):
""" Query directly via PHP script.
(outp, err) = proc.communicate()
outp = outp.decode('utf-8')
+ err = err.decode("utf-8")
logger.debug("Result: \n===============================\n"
+ outp + "\n===============================\n")
assert_equals(0, proc.returncode,
- "%s failed with message: %s\noutput: %s" % (env['SCRIPT_FILENAME'], err, outp))
+ "%s failed with message: %s" % (
+ os.path.basename(env['SCRIPT_FILENAME']),
+ err))
assert_equals(0, len(err), "Unexpected PHP error: %s" % (err))
context.response = SearchResponse(outp, outfmt, status)
+@when(u'sending (?P<fmt>\S+ )?status query')
+def website_status_request(context, fmt):
+ params = {}
+ outp, status = send_api_query('status', params, fmt, context)
+
+ if fmt is None:
+ outfmt = 'text'
+ else:
+ outfmt = fmt.strip()
+
+ context.response = StatusResponse(outp, outfmt, status)
+
@step(u'(?P<operator>less than|more than|exactly|at least|at most) (?P<number>\d+) results? (?:is|are) returned')
def validate_result_number(context, operator, number):
eq_(context.response.errorcode, 200)
def check_http_return_status(context, status):
eq_(context.response.errorcode, int(status))
+@then(u'the page contents equals "(?P<text>.+)"')
+def check_page_content_equals(context, text):
+ eq_(context.response.page, text)
+
@then(u'the result is valid (?P<fmt>\w+)')
def step_impl(context, fmt):
context.execute_steps("Then a HTTP 200 is returned")