Skip to content

Commit 6366b0b

Browse files
committed
Tests for authentication
Changes to be committed: modified: .gitignore modified: authentication/apis.py modified: authentication/migrations/0001_initial.py deleted: authentication/migrations/0002_newuser.py modified: authentication/services.py new file: biocompute/migrations/0001_initial.py modified: docs/refactor.md new file: prefix/migrations/0001_initial.py modified: search/selectors.py new file: test.json new file: tests/fixtures/old_test_data.json modified: tests/fixtures/test_data.json deleted: tests/test_database.py deleted: tests/test_fixtures.py deleted: tests/test_models modified: tests/test_views/test_api_account_activate.py renamed: tests/test_views/test_api_accounts_describe.py -> tests/test_views/test_api_account_describe.py modified: tests/test_views/test_api_auth_add.py modified: tests/test_views/test_api_auth_reset_token.py deleted: tests/test_views/test_api_groups_group_info.py deleted: tests/test_views/test_api_groups_modify.py deleted: tests/test_views/test_api_objects.py deleted: tests/test_views/test_api_objects_drafts_create.py deleted: tests/test_views/test_api_objects_drafts_modify.py deleted: tests/test_views/test_api_objects_drafts_publish.py deleted: tests/test_views/test_api_objects_search.py deleted: tests/test_views/test_api_objects_validate.py deleted: tests/test_views/test_api_prefixes_create.py deleted: tests/test_views/test_api_prefixes_token.py deleted: tests/test_views/test_get_object_id_draft.py deleted: tests/test_views/test_get_objectid.py deleted: tests/test_views/test_published_object_by_id.py modified: token.json
1 parent b0c2d6e commit 6366b0b

33 files changed

+8258
-6380
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,3 +143,4 @@ server.conf
143143
static/
144144
# JetBrains IDEs
145145
.idea/
146+
backups

authentication/apis.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from rest_framework.permissions import IsAuthenticated
1212
from rest_framework.response import Response
1313
from rest_framework.views import APIView
14-
from api.scripts.utilities.UserUtils import UserUtils
1514
from authentication.models import Authentication, NewUser
1615
from authentication.selectors import (
1716
check_user_email,
@@ -534,7 +533,7 @@ def post(self, request):
534533
Token.objects.create(user=request.user)
535534
return Response(
536535
status=status.HTTP_200_OK,
537-
data=UserUtils().get_user_info(username=request.user)
536+
data=get_user_info(user=request.user)
538537
)
539538

540539
except Exception as error:

authentication/migrations/0001_initial.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
# Generated by Django 3.2.10 on 2023-03-27 20:46
1+
# Generated by Django 3.2.13 on 2024-03-14 13:52
22

33
from django.conf import settings
44
from django.db import migrations, models
55
import django.db.models.deletion
6+
import django.utils.timezone
67

78

89
class Migration(migrations.Migration):
@@ -14,6 +15,17 @@ class Migration(migrations.Migration):
1415
]
1516

1617
operations = [
18+
migrations.CreateModel(
19+
name='NewUser',
20+
fields=[
21+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
22+
('email', models.EmailField(max_length=254)),
23+
('temp_identifier', models.TextField(max_length=100)),
24+
('token', models.TextField(blank=True, null=True)),
25+
('hostname', models.TextField(blank=True, null=True)),
26+
('created', models.DateTimeField(default=django.utils.timezone.now)),
27+
],
28+
),
1729
migrations.CreateModel(
1830
name='Authentication',
1931
fields=[

authentication/migrations/0002_newuser.py

Lines changed: 0 additions & 25 deletions
This file was deleted.

authentication/services.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from django.contrib.auth.models import User, Group
1010
from django.core.mail import send_mail
1111
from rest_framework import exceptions, status, serializers
12+
from rest_framework.authtoken.models import Token
1213
from rest_framework.response import Response
1314
from rest_framework_jwt.authentication import BaseAuthentication
1415
from rest_framework_jwt.settings import api_settings
@@ -173,6 +174,7 @@ def send_new_user_email(user_info: dict) -> 0:
173174
print("Email signal sent")
174175
return 0
175176

177+
@transaction.atomic
176178
def create_bcodb_user(email: str) -> User:
177179
"""Create BCODB user
178180
"""
@@ -183,10 +185,9 @@ def create_bcodb_user(email: str) -> User:
183185
)
184186
user.set_unusable_password()
185187
user.full_clean()
188+
Token.objects.create(user=user)
186189
user.save()
187-
user.groups.add(Group.objects.get(name="bco_drafter"))
188-
user.groups.add(Group.objects.get(name="bco_publisher"))
189-
190+
190191
return user
191192

192193

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Generated by Django 3.2.13 on 2024-03-14 13:52
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
initial = True
11+
12+
dependencies = [
13+
('auth', '0012_alter_user_first_name_max_length'),
14+
('prefix', '0001_initial'),
15+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16+
]
17+
18+
operations = [
19+
migrations.CreateModel(
20+
name='Bco',
21+
fields=[
22+
('object_id', models.TextField(primary_key=True, serialize=False)),
23+
('contents', models.JSONField()),
24+
('state', models.CharField(choices=[('REFERENCED', 'referenced'), ('PUBLISHED', 'published'), ('DRAFT', 'draft'), ('DELETE', 'delete')], default='DRAFT', max_length=20)),
25+
('last_update', models.DateTimeField()),
26+
('access_count', models.IntegerField(default=0)),
27+
('authorized_groups', models.ManyToManyField(blank=True, to='auth.Group')),
28+
('authorized_users', models.ManyToManyField(blank=True, related_name='authorized_bcos', to=settings.AUTH_USER_MODEL)),
29+
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_bcos', to=settings.AUTH_USER_MODEL)),
30+
('prefix', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='prefix.prefix')),
31+
],
32+
),
33+
]

docs/refactor.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,12 @@
66
## Items to look at later
77
- `authentication.apis.RegisterUserNoVerificationAPI` has no swagger or tests
88
- fix email and secrets
9+
<<<<<<< Local Changes
10+
- install a `test_template` for Swagger responses
11+
- provide example values that are usable for testing APIs.
12+
- certifying key for prefix as a JWT?
13+
- owner = models.ForeignKey(
14+
User,
15+
on_delete=models.CASCADE,
916

17+
- need tests for token

prefix/migrations/0001_initial.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 3.2.13 on 2024-03-14 13:14
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
import django.utils.timezone
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
initial = True
12+
13+
dependencies = [
14+
('auth', '0012_alter_user_first_name_max_length'),
15+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
16+
]
17+
18+
operations = [
19+
migrations.CreateModel(
20+
name='Prefix',
21+
fields=[
22+
('prefix', models.CharField(max_length=5, primary_key=True, serialize=False)),
23+
('certifying_key', models.TextField(blank=True, null=True)),
24+
('created', models.DateTimeField(blank=True, default=django.utils.timezone.now, null=True)),
25+
('description', models.TextField(blank=True, null=True)),
26+
('authorized_groups', models.ManyToManyField(blank=True, related_name='authorized_prefix', to='auth.Group')),
27+
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, to_field='username')),
28+
],
29+
),
30+
]

search/selectors.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,10 @@
44
Set of selector functions to handle searching the BCODB
55
"""
66

7-
from api.models import BCO
7+
from biocompute.models import Bco
88
from django.db.models import QuerySet
99
from django.db.models.query import QuerySet
1010
from django.contrib.auth.models import User
11-
from guardian.shortcuts import get_objects_for_user
12-
from itertools import chain
13-
from api.scripts.utilities.UserUtils import UserUtils
1411

1512
return_values = [
1613
"contents",

0 commit comments

Comments
 (0)