Skip to content

Commit

Permalink
Remove view (#1116)
Browse files Browse the repository at this point in the history
* patch: remove view

* patch: remove generate special token url

* patch: create token manually from test

* patch: generate token from commands

* patch: remove generate token tests
  • Loading branch information
tinashechiraya authored Oct 10, 2024
1 parent cbd9e53 commit 81d69fc
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 65 deletions.
27 changes: 27 additions & 0 deletions django_project/minisass/management/commands/generate_token.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
from rest_framework_simplejwt.tokens import AccessToken
from datetime import timedelta

class Command(BaseCommand):
help = 'Manually generate a special token for a given user email'

def add_arguments(self, parser):
parser.add_argument('email', type=str, help="The user's email for whom the token should be generated")

def handle(self, *args, **kwargs):
email = kwargs['email']

try:
user = User.objects.get(email=email)
except User.DoesNotExist:
self.stdout.write(self.style.ERROR(f"User with email {email} not found"))
return

# Generate token for the user
token = AccessToken.for_user(user)
# Set token expiry to 100 years
token.set_exp(lifetime=timedelta(days=365 * 100))

# Output the token in the console
self.stdout.write(self.style.SUCCESS(f"Generated token for {email}: {str(token)}"))
45 changes: 0 additions & 45 deletions django_project/minisass_authentication/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,51 +14,6 @@
from rest_framework import status


class GenerateSpecialTokenTest(APITestCase):
def setUp(self):
# Create a test admin user
self.admin_user = User.objects.create_user(
username='adminuser',
email='admin@example.com',
password='adminpassword',
is_staff=True
)

# Create a test regular user
self.regular_user = User.objects.create_user(
username='regularuser',
email='regular@example.com',
password='regularpassword'
)

def test_generate_token_success_for_admin(self):
# Use the admin user's email to generate a token
url = reverse('generate_special_token', args=[self.admin_user.email])
response = self.client.post(url)

# Check that the response is successful
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertIn('token', response.json())

def test_generate_token_forbidden_for_regular_user(self):
# Use the regular user's email to generate a token
url = reverse('generate_special_token', args=[self.regular_user.email])
response = self.client.post(url)

# Check that the response indicates the user is not an admin
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(response.json(), {'error': 'User is not an admin'})

def test_generate_token_user_not_found(self):
# Use a non-existent email
url = reverse('generate_special_token', args=['nonexistent@example.com'])
response = self.client.post(url)

# Check that the response indicates the user was not found
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
self.assertEqual(response.json(), {'error': 'User not found'})



class PasswordResetTest(APITestCase):
def setUp(self):
Expand Down
4 changes: 1 addition & 3 deletions django_project/minisass_authentication/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@
UploadCertificate,
UpdatePassword,
check_is_expert,
retrieve_email_by_username,
generate_special_token
retrieve_email_by_username
)


urlpatterns = [
path('api/generate-special-token/<str:email>', generate_special_token, name='generate_special_token'),
path('api/request-reset/', request_password_reset, name='request_password_reset'),
path('api/verify-password-reset/<uidb64>/<token>/', verify_password_reset, name='verify_password_reset'),
path('api/update-password-reset/<uid>/<token>/', update_password, name='update_password_reset'),
Expand Down
11 changes: 0 additions & 11 deletions django_project/minisass_authentication/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,6 @@
# Get an instance of a logger
logger = logging.getLogger(__name__)

def generate_special_token(request, email):
try:
user = User.objects.get(email=email)
except User.DoesNotExist:
return JsonResponse({'error': 'User not found'}, status=404)

token = AccessToken.for_user(user)
# Set a very long expiration time, e.g., 100 years
token.set_exp(lifetime=timedelta(days=365 * 100))

return JsonResponse({'token': str(token)}, status=200)

@api_view(['POST'])
@permission_classes([IsAuthenticated])
Expand Down
12 changes: 6 additions & 6 deletions django_project/monitor/tests/test_sites.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,15 @@ def setUp(self):
elec_cond="2.50",
elec_cond_unit="mS/m"
)
self.token = self.generate_token_for_user(self.user_token.email)
self.token = self.generate_token_for_user(self.user_token)
self.client = APIClient()
self.client.credentials(HTTP_AUTHORIZATION='Bearer ' + self.token)

def generate_token_for_user(self, email):
url = reverse('generate_special_token', args=[email])
response = self.client.post(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
return response.json().get('token')
def generate_token_for_user(self, user):
token = AccessToken.for_user(user)
token.set_exp(lifetime=timedelta(days=365 * 100))

return str(token)


def test_get_all_sites_with_observations(self):
Expand Down

0 comments on commit 81d69fc

Please sign in to comment.