from django.test import TestCase, Client from rest_framework import status from rest_framework.test import APITestCase, APIClient from django.urls import reverse from ..models import * import json from ..utils import generateRandomString import jwt # initialize the APIClient app client = APIClient() class AddNewPlacementTest(APITestCase): """ Test module for adding a new placement """ def setUp(self): self.valid_payload = { 'company_name': 'Test Company 3', 'address': 'Test Address 3', 'company_type': 'Test Company Type 3', 'nature_of_business': 'Test Nature of Business 3', 'type_of_organisation': 'Test Type of Organisation 3', 'website': 'Test Website 3', 'company_details': 'Test Company Details 3', 'is_company_details_pdf': True, 'contact_person_name': 'Test Contact Person Name 3', 'phone_number': 1234567890, 'email': 'test3@test.com', 'city': 'Test City 3', 'state': 'Test State 3', 'country': 'Test Country 3', 'pin_code': 123456, 'designation': 'Test Designation 3', 'description': 'Test Description 3', 'job_location': 'Test Job Location 3', 'is_description_pdf': True, 'compensation_CTC': 300000, 'compensation_gross': 240000, 'compensation_take_home': 180000, 'compensation_bonus': 60000, 'is_compensation_details_pdf': True, 'allowed_branch': 'Test Allowed Branch 3', 'rs_eligible': True, 'selection_procedure_rounds': 'Test Selection Procedure Rounds 3', 'selection_procedure_details': 'Test Selection Procedure Details 3', 'is_selection_procedure_details_pdf': True, 'tentative_date_of_joining': '2022-03-01', 'tentative_no_of_offers': 30, 'other_requirements': 'Test Other Requirements 3' } self.invalid_payload = { 'company_name': '', 'address': 'Test Address 4', 'company_type': 'Test Company Type 4', 'nature_of_business': 'Test Nature of Business 4', 'type_of_organisation': 'Test Type of Organisation 4', 'website': 'Test Website 4', 'company_details': 'Test Company Details 4', 'is_company_details_pdf': True, 'contact_person_name': 'Test Contact Person Name 4', 'phone_number': 1234567890, 'email': 'test4@test.com', 'city': 'Test City 4', 'state': 'Test State 4', 'country': 'Test Country 4', 'pin_code': 123456, 'designation': 'Test Designation 4', 'description': 'Test Description 4', 'job_location': 'Test Job Location 4', 'is_description_pdf': True, 'compensation_CTC': 400000, 'compensation_gross': 320000, 'compensation_take_home': 240000, 'compensation_bonus': 80000, 'is_compensation_details_pdf': True, 'allowed_branch': 'Test Allowed Branch 4', 'rs_eligible': True, 'selection_procedure_rounds': 'Test Selection Procedure Rounds 4', 'selection_procedure_details': 'Test Selection Procedure Details 4', 'is_selection_procedure_details_pdf': True, 'tentative_date_of_joining': '2022-04-01', 'tentative_no_of_offers': 40, 'other_requirements': 'Test Other Requirements 4' } self.placement1 = Placement.objects.create( company_name='ABC Corp', compensation_CTC=1000000, tier='1', id=generateRandomString(), allowed_branch=["CSE", "EE"], allowed_batch=["2020"], contact_person_name="test", phone_number=1234567890, email="test1@test.com", offer_accepted=True) self.internship1 = Internship.objects.create( company_name='ABC Corp', stipend=100000, id=generateRandomString(), allowed_branch=["CSE", "EE"], allowed_batch=["2020"], contact_person_name="test", phone_number=1234567890, email="test@gmail.com", offer_accepted=True) self.token_placement1=jwt.encode({'opening_id': self.placement1.id,'opening_type':PLACEMENT,'email':"test1@test.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') # def test_create_valid_placement(self): # response = client.post( # reverse('addPlacement'), # data=json.dumps(self.valid_payload), # content_type='application/json' # ) # self.assertEqual(response.status_code, status.HTTP_201_CREATED) # def test_create_invalid_placement(self): # response = client.post( # reverse('addPlacement'), # data=json.dumps(self.invalid_payload), # content_type='application/json' # ) # self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) def test_autofill_jnf_success(self): response = client.get( reverse('Auto FIll JNF'),{"placement_id": self.placement1.id} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["message"], "Data Found") self.assertEqual(response.data["placement_data"]["company_name"], "ABC Corp") self.assertEqual(response.data["placement_data"]["compensation_CTC"], 1000000) self.assertEqual(response.data["placement_data"]["tier"], "1") self.assertEqual(response.data["placement_data"]["allowed_branch"], ["CSE", "EE"]) self.assertEqual(response.data["placement_data"]["allowed_batch"], ["2020"]) self.assertEqual(response.data["placement_data"]["contact_person_name"], "test") self.assertEqual(response.data["placement_data"]["phone_number"], 1234567890) self.assertEqual(response.data["placement_data"]["email"], "test1@test.com") def test_autofill_jnf_WithInvalidId(self): response = client.get( reverse('Auto FIll JNF'),{"placement_id": generateRandomString()} ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.data["message"], "Placement Not Found") def test_autofill_inf_success(self): response = client.get( reverse('Auto FIll INF'),{"internship_id": self.internship1.id} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["message"], "Data Found") self.assertEqual(response.data["internship_data"]["company_name"], "ABC Corp") self.assertEqual(response.data["internship_data"]["stipend"], 100000) self.assertEqual(response.data["internship_data"]["allowed_branch"], ["CSE", "EE"]) self.assertEqual(response.data["internship_data"]["allowed_batch"], ["2020"]) self.assertEqual(response.data["internship_data"]["contact_person_name"], "test") self.assertEqual(response.data["internship_data"]["phone_number"], 1234567890) self.assertEqual(response.data["internship_data"]["email"], "test@gmail.com") def test_autofill_inf_WithInvalidId(self): response = client.get( reverse('Auto FIll INF'),{"internship_id": generateRandomString()} ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.data["message"], "Internship Not Found") def test_verify_email_success_placement(self): response = client.post( reverse('Verify Email'),{"token": self.token_placement1} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["message"], "Email Verified Successfully") def test_verify_email_WithInvalidEmail_placement(self): token_placement1=jwt.encode({'opening_id': self.placement1.id,'opening_type':PLACEMENT,'email':"hai@hai.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.data["message"], "Invalid Email") def test_verify_email_WithInvalidOpeningId_Placement(self): token_placement1=jwt.encode({'opening_id': generateRandomString(),'opening_type':PLACEMENT,'email':"hai@hai.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.data["message"], "Opening Not Found") def test_verify_email_WithInvalidOpeningType(self): token_placement1=jwt.encode({'opening_id': self.placement1.id,'opening_type':"hai",'email':"hai@hai.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.data["message"], "Invalid opening type") def test_verify_email_WithInvalidToken(self): response = client.post( reverse('Verify Email'),{"token": generateRandomString()} ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.data["message"], "Something went wrong") def test_verify_email_success_Internship(self): token_placement1=jwt.encode({'opening_id': self.internship1.id,'opening_type':INTERNSHIP,'email':"test@gmail.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(response.data["message"], "Email Verified Successfully") def test_verify_email_WithInvalidEmail_Internship(self): token_placement1=jwt.encode({'opening_id': self.internship1.id,'opening_type':INTERNSHIP,'email':"hai@hai.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(response.data["message"], "Invalid Email") def test_verify_email_WithInvalidOpeningId_Internship(self): token_placement1=jwt.encode({'opening_id': generateRandomString(),'opening_type':INTERNSHIP,'email':"hai@hai.com"}, os.environ.get("EMAIL_VERIFICATION_SECRET_KEY"), algorithm='HS256') response = client.post( reverse('Verify Email'),{"token": token_placement1} ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.data["message"], "Opening Not Found") ################################################################ # 1.Write Tests For AddPlacement Functions All cases # # # # 2.Write Tests For AddInternship Function All cases # # # ################################################################ def test_addPlacement_sucess(self): self.assertTrue(True) def test_addPlacement_failure(self): self.assertTrue(True)