Exemple #1
0
def execExchange(tracer, exchange, context):
    try:
        tracer.trace('create request')
        request = makeRequest(val(exchange,'request'), context)
        tracer.trace('log request')
        logYaml(tracer.requestLog(), request)
        tracer.trace('validate request')
        result = valid(request, val(exchange,'request','schema'))
        tracer.check('request valid', result)

        tracer.trace('send request')
        response = sendRequest(request)
        tracer.trace('log response')
        logYaml(tracer.responseLog(), response)
        tracer.trace('validate response')
        result = valid(response, val(exchange,'response','schema'))
        tracer.check('response valid', result)

        tracer.trace('normalize response')
        actual = normalize(response, lowerHeaders(val(exchange,'response')))
        tracer.trace('log actual')
        logYaml(tracer.actualLog(), actual)
        tracer.trace('load expected')
        expect = loadYaml(tracer.expectSource())
        tracer.trace('log expect')
        logYaml(tracer.expectLog(), expect)
        tracer.trace('compare actual to expected')
        result = compare(actual, tracer.expectLog())
        tracer.check('actual match', result)

        return {
            'request': request,
            'response': response
        }
    except Exception as e:
        tracer.fail(e)
        return {}
    finally:
        tracer.done()
Exemple #2
0
def compare(actual, expectPath):
    if os.path.exists(expectPath):
        expect = loadYaml(expectPath)
        if expect != actual:
            return "Did not match"
    return None
Exemple #3
0
        tracer.trace('compare actual to expected')
        result = compare(actual, tracer.expectLog())
        tracer.check('actual match', result)

        return {'request': request, 'response': response}
    except Exception as e:
        tracer.fail(e)
        return {}
    finally:
        tracer.done()


def execCase(tracer, case, context):
    for name, exchange in case.items():
        context[name] = execExchange(tracer.case(name), exchange, context)


#        print(json.dumps(context[name]))


def execSuite(suite, env, verbose):
    for name, case in suite.items():
        execCase(CaseTracer(name, verbose), case, {
            'env': env,
            'os': os.environ
        })


context = loadYaml(sys.argv[1])
execSuite(context['suite'], context['env'], context['verbose'])