Coverage for portality / view / testdrive.py: 47%

34 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-05-05 00:09 +0100

1from flask import Blueprint, make_response, abort, url_for, request, render_template 

2from flask_login import current_user, login_required 

3from doajtest.testdrive.factory import TestFactory 

4from portality import util 

5from portality.core import app 

6import json 

7from urllib import parse 

8 

9# ~~Testdrive:Blueprint->$Testdrive:Feature~~ 

10blueprint = Blueprint('testdrive', __name__) 

11 

12@blueprint.route('/<test_id>') 

13@util.jsonp 

14@login_required 

15def testdrive(test_id): 

16 # if not app.config.get("DEBUG", False): 

17 # abort(404) 

18 test = TestFactory.get(test_id) 

19 if not test: 

20 abort(404) 

21 params = test.setup() 

22 teardown = app.config.get("BASE_URL") + url_for("testdrive.teardown", test_id=test_id) + "?d=" + parse.quote_plus(json.dumps(params)) 

23 params["teardown"] = teardown 

24 

25 if request.values.get("json"): 

26 resp = make_response(json.dumps(params)) 

27 resp.mimetype = "application/json" 

28 return resp 

29 

30 return render_template("dev/testdrive/testdrive.html", params=params, name=test_id) 

31 

32 

33@blueprint.route("/<test_id>/teardown") 

34@util.jsonp 

35@login_required 

36def teardown(test_id): 

37 test = TestFactory.get(test_id) 

38 if not test: 

39 abort(404) 

40 result = test.teardown(json.loads(request.values.get("d"))) 

41 resp = make_response(json.dumps(result)) 

42 resp.mimetype = "application/json" 

43 return resp