in verifiers/addressDataMatch.py [0:0]
def verify(self, manager, uri, response, respdata, args, is_json=False): # @UnusedVariable
# Get arguments
files = args.get("filepath", [])
if manager.data_dir:
files = map(lambda x: os.path.join(manager.data_dir, x), files)
carddata = args.get("data", [])
filters = args.get("filter", [])
# Always remove these
filters.extend(manager.server_info.addressdatafilters)
# status code must be 200, 201, 207
if response.status not in (200, 201, 207):
return False, " HTTP Status Code Wrong: %d" % (response.status,)
# look for response data
if not respdata:
return False, " No response body"
# look for one file
if len(files) != 1 and len(carddata) != 1:
return False, " No file to compare response to"
# read in all data from specified file or use provided data
if len(files):
fd = open(files[0], "r")
try:
try:
data = fd.read()
finally:
fd.close()
except:
data = None
else:
data = carddata[0] if len(carddata) else None
if data is None:
return False, " Could not read data file"
data = manager.server_info.subs(data)
def removePropertiesParameters(component):
allProps = []
for properties in component.getProperties().itervalues():
allProps.extend(properties)
for property in allProps:
for filter in filters:
if ":" in filter:
propname, parameter = filter.split(":")
if property.getName() == propname:
if property.hasParameter(parameter):
property.removeParameters(parameter)
else:
if "=" in filter:
filter_name, filter_value = filter.split("=")
if property.getName() == filter_name and property.getValue().getValue() == filter_value:
component.removeProperty(property)
else:
if property.getName() == filter:
component.removeProperty(property)
try:
format = Card.sFormatJSON if is_json else Card.sFormatText
resp_adbk = Card.parseData(respdata, format=format)
removePropertiesParameters(resp_adbk)
respdata = resp_adbk.getText(format=format)
data_adbk = Card.parseData(data, format=format)
removePropertiesParameters(data_adbk)
data = data_adbk.getText(format=format)
result = resp_adbk == data_adbk
if result:
return True, ""
else:
error_diff = "\n".join([line for line in unified_diff(data.split("\n"), respdata.split("\n"))])
return False, " Response data does not exactly match file data%s" % (error_diff,)
except Exception, e:
return False, " Response data is not address data: %s" % (e,)