Spaces:
Sleeping
Sleeping
| { | |
| "info": { | |
| "_postman_id": "enrollment-complete-test", | |
| "name": "Enrollment API - Complete Test Suite", | |
| "description": "Complete test collection for all enrollment endpoints with student, instructor, and admin accounts", | |
| "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" | |
| }, | |
| "item": [ | |
| { | |
| "name": "Setup & Authentication", | |
| "item": [ | |
| { | |
| "name": "Student Login - tarekstudent@gmail.com", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " pm.environment.set('student_token', jsonData.accessToken);", | |
| " pm.environment.set('student_id', jsonData.user.userId);", | |
| " console.log('✅ Student Token Set: ' + pm.environment.get('student_token').substring(0, 20) + '...');", | |
| " console.log('✅ Student ID: ' + pm.environment.get('student_id'));", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"email\": \"tarekstudent@gmail.com\",\n \"password\": \"Test@1234\"\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/login", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "login" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Admin Login - tarekadmin@gmail.com", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " pm.environment.set('admin_token', jsonData.accessToken);", | |
| " pm.environment.set('admin_id', jsonData.user.userId);", | |
| " console.log('✅ Admin Token Set: ' + pm.environment.get('admin_token').substring(0, 20) + '...');", | |
| " console.log('✅ Admin ID: ' + pm.environment.get('admin_id'));", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"email\": \"tarekadmin@gmail.com\",\n \"password\": \"Test@1234\"\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/login", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "login" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Instructor Login - tarekinstructor@gmail.com", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " pm.environment.set('instructor_token', jsonData.accessToken);", | |
| " pm.environment.set('instructor_id', jsonData.user.userId);", | |
| " console.log('✅ Instructor Token Set: ' + pm.environment.get('instructor_token').substring(0, 20) + '...');", | |
| " console.log('✅ Instructor ID: ' + pm.environment.get('instructor_id'));", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"email\": \"tarekinstructor@gmail.com\",\n \"password\": \"Test@1234\"\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/login", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "login" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Get Test Data - Semesters", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " if (jsonData.length > 0) {", | |
| " pm.environment.set('semester_id', jsonData[0].semesterId);", | |
| " console.log('✅ Semester ID Set: ' + pm.environment.get('semester_id'));", | |
| " }", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/semesters", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "semesters" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Get Test Data - Courses", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " if (jsonData.data && jsonData.data.length > 0) {", | |
| " pm.environment.set('course_id', jsonData.data[0].id);", | |
| " console.log('✅ Course ID Set: ' + pm.environment.get('course_id'));", | |
| " }", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/courses?page=1&limit=20", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "courses" | |
| ], | |
| "query": [ | |
| { | |
| "key": "page", | |
| "value": "1" | |
| }, | |
| { | |
| "key": "limit", | |
| "value": "20" | |
| } | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Get Test Data - Sections", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "if (pm.response.code === 200) {", | |
| " var jsonData = pm.response.json();", | |
| " if (jsonData.length > 0) {", | |
| " pm.environment.set('section_id', jsonData[0].id);", | |
| " console.log('✅ Section ID Set: ' + pm.environment.get('section_id'));", | |
| " }", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/sections/course/1", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "sections", | |
| "course", | |
| "1" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "Student Endpoints", | |
| "item": [ | |
| { | |
| "name": "1. Get Current User (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "pm.test('Response has userId', function () {", | |
| " var jsonData = pm.response.json();", | |
| " pm.expect(jsonData).to.have.property('userId');", | |
| " console.log('✅ Student User Info Retrieved');", | |
| "});" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/me", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "me" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "2. Get Available Courses (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "if (jsonData.length > 0 && jsonData[0].sections && jsonData[0].sections.length > 0) {", | |
| " pm.environment.set('available_section_id', jsonData[0].sections[0].id);", | |
| " console.log('✅ Available Courses Retrieved, Section ID: ' + pm.environment.get('available_section_id'));", | |
| "} else {", | |
| " console.log('⚠️ No available sections found');", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/available?page=1&limit=20", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "available" | |
| ], | |
| "query": [ | |
| { | |
| "key": "page", | |
| "value": "1" | |
| }, | |
| { | |
| "key": "limit", | |
| "value": "20" | |
| } | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "3. Enroll in Course (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200 or 201', function () {", | |
| " pm.expect([200, 201]).to.include(pm.response.code);", | |
| "});", | |
| "if (pm.response.code === 200 || pm.response.code === 201) {", | |
| " var jsonData = pm.response.json();", | |
| " pm.environment.set('enrollment_id', jsonData.id);", | |
| " pm.environment.set('enrollment_status', jsonData.status);", | |
| " pm.test('Enrollment status is enrolled', function () {", | |
| " pm.expect(jsonData.status).to.equal('enrolled');", | |
| " });", | |
| " console.log('✅ Enrolled Successfully - Enrollment ID: ' + jsonData.id + ', Status: ' + jsonData.status + ', UserId: ' + jsonData.userId);", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| }, | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"sectionId\": {{available_section_id}}\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/register", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "register" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "4. Get My Courses (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Response is an array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "if (jsonData.length > 0) {", | |
| " console.log('✅ Found ' + jsonData.length + ' enrolled courses');", | |
| " jsonData.forEach(function(course) {", | |
| " console.log(' - Course: ' + course.courseName + ', Status: ' + course.status);", | |
| " });", | |
| "} else {", | |
| " console.log('⚠️ No enrolled courses found');", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/my-courses", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "my-courses" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "5. Get Enrollment Details (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('UserId matches actual student ID', function () {", | |
| " pm.expect(jsonData.userId).to.equal(parseInt(pm.environment.get('student_id')));", | |
| "});", | |
| "console.log('✅ Enrollment Details: ID=' + jsonData.id + ', UserId=' + jsonData.userId + ', Status=' + jsonData.status);" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/{{enrollment_id}}", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "{{enrollment_id}}" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "Instructor Endpoints", | |
| "item": [ | |
| { | |
| "name": "1. Get Current User (Instructor)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('User has instructor role', function () {", | |
| " pm.expect(jsonData.roles).to.include('instructor');", | |
| "});", | |
| "console.log('✅ Instructor User Info Retrieved');" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{instructor_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/me", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "me" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "2. Get Section Students (Instructor)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Response is an array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "if (jsonData.length > 0) {", | |
| " console.log('✅ Found ' + jsonData.length + ' students in section');", | |
| " jsonData.forEach(function(student) {", | |
| " console.log(' - StudentId: ' + student.userId + ', Status: ' + student.status);", | |
| " });", | |
| "} else {", | |
| " console.log('⚠️ No students in this section');", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{instructor_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/section/{{available_section_id}}/students", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "section", | |
| "{{available_section_id}}", | |
| "students" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "3. Get Section Waitlist (Instructor)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Waitlist is empty array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "console.log('✅ Waitlist Retrieved (Count: ' + jsonData.length + ')');" | |
| ] | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{instructor_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/section/{{available_section_id}}/waitlist", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "section", | |
| "{{available_section_id}}", | |
| "waitlist" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "Admin Endpoints", | |
| "item": [ | |
| { | |
| "name": "1. Get Current User (Admin)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('User has admin role', function () {", | |
| " pm.expect(jsonData.roles).to.include('admin');", | |
| "});", | |
| "console.log('✅ Admin User Info Retrieved');" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{admin_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/auth/me", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "auth", | |
| "me" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "2. Update Enrollment Status (Admin)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Status changed to completed', function () {", | |
| " pm.expect(jsonData.status).to.equal('completed');", | |
| "});", | |
| "console.log('✅ Enrollment Status Updated to: ' + jsonData.status);" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "POST", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{admin_token}}", | |
| "type": "text" | |
| }, | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"status\": \"completed\"\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/{{enrollment_id}}/status", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "{{enrollment_id}}", | |
| "status" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "3. Get All Semesters (Admin)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Response is an array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "if (jsonData.length > 0) {", | |
| " console.log('✅ Found ' + jsonData.length + ' semesters');", | |
| " jsonData.forEach(function(sem) {", | |
| " console.log(' - ' + sem.name + ' (' + sem.code + ')');", | |
| " });", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{admin_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/semesters", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "semesters" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "4. Get Departments (Admin)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Response is an array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "if (jsonData.length > 0) {", | |
| " console.log('✅ Found ' + jsonData.length + ' departments');", | |
| " jsonData.forEach(function(dept) {", | |
| " console.log(' - ' + dept.name + ' (' + dept.code + ')');", | |
| " });", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{admin_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/campuses/1/departments", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "campuses", | |
| "1", | |
| "departments" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "5. Get Course Sections (Admin)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Response is an array', function () {", | |
| " pm.expect(jsonData).to.be.an('array');", | |
| "});", | |
| "if (jsonData.length > 0) {", | |
| " console.log('✅ Found ' + jsonData.length + ' sections');", | |
| "}" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{admin_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/sections/course/1", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "sections", | |
| "course", | |
| "1" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| } | |
| ] | |
| }, | |
| { | |
| "name": "Cleanup & Verification", | |
| "item": [ | |
| { | |
| "name": "Drop Course (Student)", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "pm.test('Status is dropped', function () {", | |
| " pm.expect(jsonData.status).to.equal('dropped');", | |
| "});", | |
| "pm.test('DroppedAt timestamp exists', function () {", | |
| " pm.expect(jsonData).to.have.property('droppedAt');", | |
| "});", | |
| "console.log('✅ Course Dropped - Status: ' + jsonData.status);" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "DELETE", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| }, | |
| { | |
| "key": "Content-Type", | |
| "value": "application/json" | |
| } | |
| ], | |
| "body": { | |
| "mode": "raw", | |
| "raw": "{\n \"reason\": \"student_request\",\n \"notes\": \"Testing drop endpoint\"\n}" | |
| }, | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/{{enrollment_id}}", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "{{enrollment_id}}" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| }, | |
| { | |
| "name": "Verify Enrollment Dropped", | |
| "event": [ | |
| { | |
| "listen": "test", | |
| "script": { | |
| "exec": [ | |
| "pm.test('Status code is 200', function () {", | |
| " pm.expect(pm.response.code).to.equal(200);", | |
| "});", | |
| "var jsonData = pm.response.json();", | |
| "if (Array.isArray(jsonData)) {", | |
| " var droppedEnrollment = jsonData.find(function(e) { return e.id == pm.environment.get('enrollment_id'); });", | |
| " if (droppedEnrollment) {", | |
| " pm.test('Dropped enrollment not in active list', function () {", | |
| " pm.expect(droppedEnrollment).to.be.undefined;", | |
| " });", | |
| " }", | |
| "}", | |
| "console.log('✅ Verified: Dropped enrollment no longer in active list');" | |
| ], | |
| "type": "text/javascript" | |
| } | |
| } | |
| ], | |
| "request": { | |
| "method": "GET", | |
| "header": [ | |
| { | |
| "key": "Authorization", | |
| "value": "Bearer {{student_token}}", | |
| "type": "text" | |
| } | |
| ], | |
| "url": { | |
| "raw": "http://localhost:8081/api/enrollments/my-courses", | |
| "protocol": "http", | |
| "host": [ | |
| "localhost" | |
| ], | |
| "port": "8081", | |
| "path": [ | |
| "api", | |
| "enrollments", | |
| "my-courses" | |
| ] | |
| } | |
| }, | |
| "response": [] | |
| } | |
| ] | |
| } | |
| ], | |
| "variable": [ | |
| { | |
| "key": "base_url", | |
| "value": "http://localhost:8081", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "student_token", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "admin_token", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "instructor_token", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "student_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "admin_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "instructor_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "enrollment_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "section_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "course_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "semester_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "available_section_id", | |
| "value": "", | |
| "type": "string" | |
| }, | |
| { | |
| "key": "enrollment_status", | |
| "value": "", | |
| "type": "string" | |
| } | |
| ] | |
| } | |