You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.7 KiB
Python
88 lines
3.7 KiB
Python
import requests
|
|
import urllib.parse
|
|
import json
|
|
from typing import List, Tuple
|
|
|
|
from tests.createAPI.create_delete_artist import test_artist_entries, list_artists, create_artist_entries, delete_artist_entries
|
|
|
|
test_presence_entries = [
|
|
{"name": "presence_name1", "domain": "presence_domain1", "artist_id": 0},
|
|
{"name": "presence_name2", "domain": "presence_domain1", "artist_id": 1},
|
|
{"name": "presence_name3", "domain": "presence_domain2", "artist_id": 1},
|
|
]
|
|
|
|
|
|
def create_presence_entries(url: str, port: int):
|
|
for i in range(len(test_presence_entries)):
|
|
r = create_presence(url, port, name=test_presence_entries[i]["name"], domain=test_presence_entries[i]["domain"],
|
|
artist_id=test_artist_entries[test_presence_entries[i]["artist_id"]]["id"])
|
|
if r.status_code != 200:
|
|
print(f"Tried to create presence with name:{test_presence_entries[i]['name']} "
|
|
f"domain:{test_presence_entries[i]['domain']} artist_id:{test_presence_entries[i]['artist_id']}")
|
|
print(f"Create Presence failed with {r.status_code} and reason {r.text}!")
|
|
raise Exception("Create Presence Entry Test: Failed")
|
|
|
|
|
|
def create_presence(url: str, port: int, name: str, domain: str, artist_id: int):
|
|
r = requests.post(f"http://{url}:{port}/artnet/metadata/presence",
|
|
json={"name": name, "domain": domain, "artist_id": artist_id})
|
|
|
|
return r
|
|
|
|
|
|
def delete_presence(url: str, port: int, name: str, domain: str):
|
|
r = requests.delete(f"http://{url}:{port}/artnet/metadata/presence?name={urllib.parse.quote(name)}"
|
|
f"&domain={urllib.parse.quote(domain)}")
|
|
|
|
if r.status_code != 200:
|
|
print(f"Deleting Presence entry {name}@{domain}: FAILED")
|
|
return False
|
|
else:
|
|
print(f"Deleting Presence entry {name}@{domain}: SUCCESS")
|
|
return True
|
|
|
|
|
|
def list_presences(url: str, port: int):
|
|
"""
|
|
Return a list of all presences known to the database
|
|
:param url:
|
|
:param port:
|
|
:return:
|
|
"""
|
|
r = requests.get(f"http://{url}:{port}/artnet/metadata/presence")
|
|
if r.status_code != 200:
|
|
raise Exception("Failed querying for presences!")
|
|
presences = json.loads(r.text)
|
|
return presences
|
|
|
|
|
|
def run_presence_test(url: str, port: int):
|
|
print()
|
|
print("----------------")
|
|
print(f"Starting presence test with "
|
|
f"({len(list_artists(url, port))}) artists, ({len(list_presences(url, port))}) presences!")
|
|
print("Setting up artists for the presence test ...")
|
|
create_artist_entries(url, port)
|
|
|
|
print("Starting the presence test ...")
|
|
print(f"Creating {len(test_presence_entries)} presences ...")
|
|
create_presence_entries(url, port)
|
|
create_presence_result = False if not len(list_presences(url, port)) == 3 else True
|
|
print(f"Found {len(list_presences(url, port))} presence entries!")
|
|
|
|
print(f"Deleting (1) specific presence entry ({test_presence_entries[0]['name']}, "
|
|
f"{test_presence_entries[0]['domain']}) ...")
|
|
delete_presence_result = delete_presence(url, port, test_presence_entries[0]["name"],
|
|
test_presence_entries[0]["domain"])
|
|
print(f"Found {len(list_presences(url, port))} presence entries!")
|
|
|
|
print(f"Deleting leftover presences ({len(list_presences(url, port))}) via cascading ...")
|
|
delete_artist_entries(url, port) # artist deletion should cascade into the presences
|
|
print(f"Found {len(list_presences(url, port))} presence entries!")
|
|
cascade_delete_presence_result = False if not len(list_presences(url, port)) == 0 else True
|
|
print("Completed the presence test!")
|
|
print("----------------")
|
|
print()
|
|
|
|
return create_presence_result, delete_presence_result, cascade_delete_presence_result
|