71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
import json
|
|
from PySide6.QtCore import QJsonDocument
|
|
|
|
import helpers.api.http_helper as request
|
|
from helpers.ConfigHelper import get_config
|
|
from helpers import UserHelper
|
|
from helpers.api.utils import url_join
|
|
|
|
|
|
created_groups = {}
|
|
created_users = {}
|
|
|
|
|
|
def get_graph_url():
|
|
return url_join(get_config("localBackendUrl"), "graph", "v1.0")
|
|
|
|
|
|
def create_user(username):
|
|
if username in UserHelper.test_users:
|
|
user = UserHelper.test_users[username]
|
|
else:
|
|
user = UserHelper.User(
|
|
username=username,
|
|
displayname=username,
|
|
email=f'{username}@mail.com',
|
|
password=UserHelper.get_default_password(),
|
|
)
|
|
|
|
url = url_join(get_graph_url(), "users")
|
|
body = json.dumps(
|
|
{
|
|
"onPremisesSamAccountName": user.username,
|
|
"passwordProfile": {"password": user.password},
|
|
"displayName": user.displayname,
|
|
"mail": user.email,
|
|
}
|
|
)
|
|
response = request.post(url, body)
|
|
request.assert_http_status(response, 201, f"Failed to create user '{username}'")
|
|
resp_object = response.json()
|
|
|
|
# Check if the user already exists
|
|
user_info = {
|
|
"id": resp_object["id"],
|
|
"username": user.username,
|
|
"password": user.password,
|
|
"displayname": resp_object["displayName"],
|
|
"email": resp_object["mail"],
|
|
}
|
|
created_users[username] = user_info
|
|
|
|
|
|
def delete_created_users():
|
|
for username, user_info in list(created_users.items()):
|
|
user_id = user_info['id']
|
|
url = url_join(get_graph_url(), "users", user_id)
|
|
response = request.delete(url)
|
|
request.assert_http_status(response, 204, "Failed to delete user")
|
|
del created_users[username]
|
|
|
|
|
|
def get_capabilities():
|
|
server_url = get_config('localBackendUrl')
|
|
url = url_join(server_url, '/ocs/v1.php/cloud/capabilities?format=json')
|
|
response = request.get(url)
|
|
response_str = response.text
|
|
response_doc = QJsonDocument.fromJson(response_str.encode("utf-8"))
|
|
response_obj = response_doc.object()
|
|
capabilities = response_obj.get('ocs').get('data').get('capabilities')
|
|
return capabilities
|