mirror of
https://github.com/thecyberlearn/netcop-ai.git
synced 2026-08-18 08:33:00 +00:00
Features: - Email-based user authentication with token auth - Stripe Checkout integration for wallet top-ups - n8n workflow triggering with automatic fee deduction ($0.10) - Comprehensive transaction and usage logging - Django Admin interface for monitoring - Rate limiting and security middleware - Production-ready deployment configuration - Modular settings (dev/prod environments) - UUID primary keys for enhanced security - Comprehensive test coverage 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
from django.test import TestCase
|
|
from rest_framework.test import APITestCase
|
|
from rest_framework import status
|
|
from django.urls import reverse
|
|
from .models import User
|
|
|
|
|
|
class UserModelTestCase(TestCase):
|
|
def setUp(self):
|
|
self.user = User.objects.create_user(
|
|
email='test@example.com',
|
|
password='testpass123'
|
|
)
|
|
|
|
def test_user_creation(self):
|
|
self.assertEqual(self.user.email, 'test@example.com')
|
|
self.assertEqual(self.user.wallet_balance, 0)
|
|
self.assertTrue(self.user.is_active)
|
|
|
|
def test_wallet_balance_operations(self):
|
|
self.assertTrue(self.user.has_sufficient_balance(0))
|
|
self.assertFalse(self.user.has_sufficient_balance(10))
|
|
|
|
self.user.add_balance(50)
|
|
self.assertEqual(self.user.wallet_balance, 50)
|
|
|
|
self.assertTrue(self.user.deduct_balance(20))
|
|
self.assertEqual(self.user.wallet_balance, 30)
|
|
|
|
self.assertFalse(self.user.deduct_balance(50))
|
|
self.assertEqual(self.user.wallet_balance, 30)
|
|
|
|
|
|
class AuthenticationTestCase(APITestCase):
|
|
def test_user_registration(self):
|
|
url = reverse('register')
|
|
data = {
|
|
'email': 'newuser@example.com',
|
|
'password': 'newpass123',
|
|
'password_confirm': 'newpass123'
|
|
}
|
|
response = self.client.post(url, data, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
self.assertIn('token', response.data)
|
|
self.assertIn('user', response.data)
|
|
|
|
def test_user_login(self):
|
|
user = User.objects.create_user(
|
|
email='logintest@example.com',
|
|
password='loginpass123'
|
|
)
|
|
|
|
url = reverse('login')
|
|
data = {
|
|
'email': 'logintest@example.com',
|
|
'password': 'loginpass123'
|
|
}
|
|
response = self.client.post(url, data, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertIn('token', response.data)
|
|
self.assertIn('user', response.data)
|