add: foreign key support in database
add: more tests fix: bad tag handling when finding 0 in column
This commit is contained in:
parent
7f3182ee96
commit
1475f605aa
14 changed files with 214 additions and 276 deletions
tests
|
@ -7,18 +7,12 @@ stages:
|
|||
url: "http://localhost:5000/api/v1/controllers/discover/"
|
||||
response:
|
||||
status_code: 200
|
||||
json:
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
relay_count: !anyint
|
||||
relays: !anystr
|
||||
active: !anybool
|
||||
port: !anyint
|
||||
ip: !anystr
|
||||
relays: !anylist
|
||||
verify_response_with:
|
||||
function: validate_controller:multiple
|
||||
save:
|
||||
json:
|
||||
returned_id: "[0].id"
|
||||
returned_relay_count: "[0].relay_count"
|
||||
|
||||
- name: "[controller_relays_basic] get controller relays, check length"
|
||||
request:
|
||||
|
@ -26,71 +20,11 @@ stages:
|
|||
url: "http://localhost:5000/api/v1/controllers/{returned_id}/relays"
|
||||
response:
|
||||
status_code: 200
|
||||
json:
|
||||
- name: !anystr
|
||||
number: 0
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule:
|
||||
id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 1
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 2
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 3
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 4
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 5
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 6
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 7
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 8
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
- name: !anystr
|
||||
number: 9
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule: !anydict
|
||||
schedules: !anylist
|
||||
tags: !anylist
|
||||
verify_response_with:
|
||||
function: validate_relay:multiple
|
||||
function: validate_relay:relay_count
|
||||
extra_kwargs:
|
||||
relay_count: !int "{returned_relay_count:d}"
|
||||
|
||||
- name: "[controller_relays_basic] get controller relays, check length"
|
||||
request:
|
||||
|
@ -98,42 +32,11 @@ stages:
|
|||
url: "http://localhost:5000/api/v1/controllers/{returned_id}/relays/5"
|
||||
response:
|
||||
status_code: 200
|
||||
json:
|
||||
name: !anystr
|
||||
number: 5
|
||||
controller_id: "{returned_id}"
|
||||
active_schedule:
|
||||
id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
schedules:
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
- id: !anystr
|
||||
name: !anystr
|
||||
periods: !anylist
|
||||
tags: !anylist
|
||||
tags: !anylist
|
||||
verify_response_with:
|
||||
function: validate_relay:single
|
||||
function: validate_relay:check_controller_id
|
||||
extra_kwargs:
|
||||
name: "{returned_id}"
|
||||
function: validate_relay:check_number
|
||||
extra_kwargs:
|
||||
number: 5
|
||||
|
|
|
@ -44,3 +44,56 @@ stages:
|
|||
id: "{returned_id}"
|
||||
name: "{returned_name}"
|
||||
periods: "{returned_periods}"
|
||||
|
||||
- name: "[tags] discover controllers"
|
||||
request:
|
||||
method: POST
|
||||
url: "http://localhost:5000/api/v1/controllers/discover/"
|
||||
response:
|
||||
status_code: 200
|
||||
verify_response_with:
|
||||
function: validate_controller:multiple
|
||||
save:
|
||||
json:
|
||||
returned_id: "[0].id"
|
||||
|
||||
- name: "[tags] set relay tag"
|
||||
request:
|
||||
method: PUT
|
||||
url: "http://localhost:5000/api/v1/controllers/{returned_id}/relays/3"
|
||||
json:
|
||||
tags:
|
||||
- "test_tag_1"
|
||||
response:
|
||||
status_code: 200
|
||||
verify_response_with:
|
||||
function: validate_relay:single
|
||||
function: validate_relay:check_controller_id
|
||||
extra_kwargs:
|
||||
name: "{returned_id}"
|
||||
function: validate_relay:check_number
|
||||
extra_kwargs:
|
||||
number: 3
|
||||
function: validate_relay:check_tag
|
||||
extra_kwargs:
|
||||
tag: "{tavern.request_vars.json.tags[0]}"
|
||||
save:
|
||||
json:
|
||||
returned_name: "name"
|
||||
returned_number: "number"
|
||||
returned_tag: "tags[0]"
|
||||
|
||||
- name: "[tags] get relay, check name and number"
|
||||
request:
|
||||
method: GET
|
||||
url: "http://localhost:5000/api/v1/relays/tag/{returned_tag}"
|
||||
response:
|
||||
status_code: 200
|
||||
verify_response_with:
|
||||
function: validate_relay:multiple
|
||||
function: validate_relay:find
|
||||
extra_kwargs:
|
||||
name: "{returned_name}"
|
||||
number: !int "{returned_number:d}"
|
||||
controller_id: "{returned_id}"
|
||||
tag: "{returned_tag}"
|
||||
|
|
Binary file not shown.
BIN
tests/tavern_utils/__pycache__/validate_relay.cpython-38.pyc
Normal file
BIN
tests/tavern_utils/__pycache__/validate_relay.cpython-38.pyc
Normal file
Binary file not shown.
41
tests/tavern_utils/validate_controller.py
Normal file
41
tests/tavern_utils/validate_controller.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
import json
|
||||
import validate_relay
|
||||
|
||||
def _verify_single(controller):
|
||||
assert isinstance(controller.get("id"), str), "controller id is not a string"
|
||||
assert isinstance(controller.get("name"), str), "controller name is not a string"
|
||||
assert isinstance(controller.get("relay_count"), int), "controller relay_count is not an integer"
|
||||
|
||||
assert isinstance(controller.get("relays"), list), "controller relays is not a list"
|
||||
assert len(controller.get("relays")) == controller.get("relay_count"), "controller relay have a length unequal to relay_count"
|
||||
for relay in controller.get("relays"):
|
||||
assert isinstance(relay, dict), "controller relays contain a relay which is not a dict"
|
||||
validate_relay._verify_single(relay)
|
||||
assert relay.get("controller_id") == controller.get("id")
|
||||
|
||||
def single(response):
|
||||
_verify_single(response.json())
|
||||
|
||||
def multiple(response):
|
||||
assert isinstance(response.json(), list), "response is not a list"
|
||||
for controller in response.json():
|
||||
_verify_single(controller)
|
||||
|
||||
def check_id(response, id):
|
||||
assert response.json().get("id") == id, "controller id check failed"
|
||||
|
||||
def check_name(response, name):
|
||||
assert response.json().get("name") == name, "controller name check failed"
|
||||
|
||||
def find(response, id=None, name=None):
|
||||
for controller in response.json():
|
||||
if id != None and id != schedule.get("id"):
|
||||
print(schedule.get("id"))
|
||||
continue
|
||||
|
||||
if name != None and name != schedule.get("name"):
|
||||
print(schedule.get("name"))
|
||||
continue
|
||||
return
|
||||
assert False, "controller not found in list"
|
||||
|
|
@ -1,2 +1,68 @@
|
|||
import json
|
||||
import validate_schedule
|
||||
|
||||
def _verify_single(relay):
|
||||
assert isinstance(relay.get("number"), int), "relay number is not an integer"
|
||||
assert isinstance(relay.get("name"), str), "relay name is not a string"
|
||||
assert isinstance(relay.get("controller_id"), str), "relay controller_id is not a string"
|
||||
|
||||
assert isinstance(relay.get("active_schedule"), dict), "relay active_schedule is not a dict"
|
||||
validate_schedule._verify_single(relay.get("active_schedule"))
|
||||
|
||||
assert isinstance(relay.get("schedules"), list), "relay schedules is not a list"
|
||||
assert len(relay.get("schedules")) == 7, "relay schedule have a length unequal to 7"
|
||||
for schedule in relay.get("schedules"):
|
||||
assert isinstance(relay, dict), "relay schedules contain a schedule which is not a dict"
|
||||
validate_schedule._verify_single(schedule)
|
||||
|
||||
assert isinstance(relay.get("tags"), list), "relay tags is not a list"
|
||||
for tag in relay.get("tags"):
|
||||
assert isinstance(tag, str), "relay tags contain a tag which is not a string"
|
||||
|
||||
def single(response):
|
||||
assert response.json().get("number") >= 0
|
||||
_verify_single(response.json())
|
||||
|
||||
def multiple(response):
|
||||
assert isinstance(response.json(), list), "response is not a list"
|
||||
for relay in response.json():
|
||||
_verify_single(relay)
|
||||
|
||||
def relay_count(response, relay_count):
|
||||
assert len(response.json()) == relay_count, "response has invalid length"
|
||||
|
||||
def check_number(response, number):
|
||||
assert response.json().get("number") == number, "relay number check failed"
|
||||
|
||||
def check_name(response, name):
|
||||
assert response.json().get("name") == name, "relay name check failed"
|
||||
|
||||
def check_controller_id(response, controller_id):
|
||||
assert response.json().get("controller_id") == controller_id, "relay controller_id check failed"
|
||||
|
||||
def check_tag(response, tag):
|
||||
for response_tag in response.json().get("tags"):
|
||||
if response_tag == tag:
|
||||
return
|
||||
assert False, "tag not found in relay,"
|
||||
|
||||
def find(response, name=None, number=None, controller_id=None, tag=None):
|
||||
print(response.json())
|
||||
for relay in response.json():
|
||||
if number != None and number != relay.get("number"):
|
||||
continue
|
||||
|
||||
if name != None and name != relay.get("name"):
|
||||
continue
|
||||
|
||||
if controller_id != None and controller_id != relay.get("controller_id"):
|
||||
continue
|
||||
|
||||
if tag != None:
|
||||
found_in_response = False
|
||||
for response_tag in relay.get("tags"):
|
||||
if response_tag == tag:
|
||||
found_in_response = True
|
||||
if not found_in_response:
|
||||
continue
|
||||
return
|
||||
assert False, "relay not found in list"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue