feat(tests): add functions used to randomly generate users

This commit is contained in:
Julian Lobbes 2022-11-29 14:22:22 +01:00
parent 632c03a2b9
commit 00c2715a83
7 changed files with 89 additions and 2 deletions

View File

@ -19,6 +19,7 @@ services:
- ./lumi2/static/images/base:/app/lumi2/static/images/base:ro
- ./lumi2/static/images/default:/app/lumi2/static/images/default:ro
- ./lumi2/templates/:/app/lumi2/templates/:ro
- ./tests/fakedata.py/:/app/tests/fakedata.py:ro
ports:
- "8000:80"
depends_on:

View File

@ -0,0 +1,10 @@
$(function() {
$("table").tablesorter({
theme: 'bootstrap',
headerTemplate: '{content} {icon}',
cssIcon: 'bi-arrow-down-up',
cssIconNone: '',
cssIconAsc: 'bi-arrow-up',
cssIconDesc: 'bi-arrow-down',
});
});

View File

@ -50,5 +50,5 @@
<p class="text-muted">There are currently no users.</p>
</div>
{% endif %}
<script src="{{ url_for('static', filename='js/tables.js') }}"></script>
<script src="{{ url_for('static', filename='js/user_tables.js') }}"></script>
{% endblock content %}

View File

@ -294,6 +294,7 @@ def user_delete(username: str):
if request.method == 'POST':
ldap.delete_user(conn, user.username)
# FIXME delete user's static image folder!!!
conn.unbind()
flash(f"The user '{user.username}' was deleted.")
for groupname in deleted_groups:

View File

@ -147,7 +147,7 @@ class GroupResource(Resource):
def get(self, groupname: str):
"""Retrieves the group specified by the groupname as a JSON object.
Attributes
Parameters
----------
groupname : str
The name of the group to be retrieved.
@ -266,3 +266,39 @@ class GroupResource(Resource):
ldap.update_group(conn, group)
conn.unbind()
return {"username": username}, 200
class GroupMemberResource(Resource):
"""This resource represents the member of a group.
In JSON, a GroupMember is represented as follows:
{
"username": "myuser"
}
"""
def post(self, groupname):
"""Adds the user specified in the POST data to the specified Group."""
pass
def delete(self, groupname):
"""Removes the user specified in the POST data from the specified Group.
Parameters
----------
groupname : str
The name of the Group from which a member will be deleted.
Returns
-------
json : str , status : int
A JSON string and HTTP status code.
If the request was handled successfully, the POST-data is
replied to the client and HTTP code 200 is returned.
If a failure occurred while processing the request, an appropriate
error message and HTTP error code are returned.
"""
pass

View File

@ -7,3 +7,5 @@ WTForms==3.0.1
wtforms[email]==3.0.1
Flask-WTF==1.0.1
Flask-RESTful==0.3.9
Faker==15.3.3
requests==2.28.1

37
tests/fakedata.py Normal file
View File

@ -0,0 +1,37 @@
"""Generates fake user accounts."""
from io import BytesIO
import requests
from PIL import Image
from faker import Faker
from lumi2.usermodel import User
def get_random_avatar() -> Image.Image:
"""Returns a PIL JPEG Image of an AI-generated person."""
url = "https://thispersondoesnotexist.com/image"
response = requests.get(url)
if response.status_code != 200:
raise RuntimeError(
f"Request to '{url}' failed with code {response.status_code}."
)
return Image.open(BytesIO(response.content))
def generate_random_user() -> User:
"""Generates a randomized user object and returns it."""
faker = Faker()
return User(
faker.user_name(),
User.generate_password_hash(faker.password()),
faker.email(),
faker.first_name(),
faker.last_name(),
picture=get_random_avatar(),
)