Add a regression test script and fix bug
							parent
							
								
									7388868678
								
							
						
					
					
						commit
						b1dbd94b00
					
				
							
								
								
									
										16
									
								
								Script.php
								
								
								
								
							
							
						
						
									
										16
									
								
								Script.php
								
								
								
								
							| 
						 | 
					@ -170,8 +170,8 @@ if (!empty($_POST["form_signup"])) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // apply password_hash()
 | 
					    // apply password_hash()
 | 
				
			||||||
    $password_hash = password_hash($password, PASSWORD_DEFAULT);
 | 
					    $password_hash = password_hash($password, PASSWORD_DEFAULT);
 | 
				
			||||||
    $sql = "INSERT INTO `users_table`(`Email`, `Password`, `Full_Name`, `UserType`, `Student_ID`) VALUES "
 | 
					    $sql = "INSERT INTO `users_table`(`Email`, `Password`, `HashPassword`, `Full_Name`, `UserType`, `Student_ID`) VALUES "
 | 
				
			||||||
        . "('$email','$password_hash','$fullname','Student','$student_id')";
 | 
					        . "('$email','$password_hash','','$fullname','Student','$student_id')";
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $_SESSION['user_fullname'] =$_SESSION['user_fullname_temp'];
 | 
					    $_SESSION['user_fullname'] =$_SESSION['user_fullname_temp'];
 | 
				
			||||||
| 
						 | 
					@ -356,17 +356,15 @@ if (!empty($_POST["form_createlecturrer"])){
 | 
				
			||||||
        exit;
 | 
					        exit;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    $password_hash = password_hash("$password", PASSWORD_DEFAULT);
 | 
					    $password_hash = password_hash("$password", PASSWORD_DEFAULT);
 | 
				
			||||||
    $sql = "INSERT INTO `users_table`(`Email`, `Password`, `Full_Name`, `UserType`) VALUES "
 | 
					    $sql = "INSERT INTO `users_table`(`Email`, `Password`, `HashPassword`, `Full_Name`, `UserType`) VALUES ('$email','$password_hash','','$fullname','$type')";
 | 
				
			||||||
        . "('$email','$password_hash','$fullname','$type')";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($con->query($sql) === TRUE) {
 | 
					    try {
 | 
				
			||||||
 | 
					        $result = mysqli_query($con, $sql);
 | 
				
			||||||
        $_SESSION["info_Admin_Users"] = $type . " user created successfully. Use email " . $email . " as account name and ". $password ." as password.";
 | 
					        $_SESSION["info_Admin_Users"] = $type . " user created successfully. Use email " . $email . " as account name and ". $password ." as password.";
 | 
				
			||||||
        header("Location: Admin.php");
 | 
					        header("Location: Admin.php");
 | 
				
			||||||
 | 
					    } catch (Exception $ex) {
 | 
				
			||||||
    } else {
 | 
					        echo "$ex";
 | 
				
			||||||
      alert("Error: " . $sql . "<br>" . $con->error);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ### FUNCTION TO GENERATE INITIAL PASSWORDS ###//
 | 
					// ### FUNCTION TO GENERATE INITIAL PASSWORDS ###//
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					from selenium.webdriver.common.by import By
 | 
				
			||||||
 | 
					from selenium.webdriver.support.ui import WebDriverWait
 | 
				
			||||||
 | 
					from selenium.webdriver.support import expected_conditions as EC
 | 
				
			||||||
 | 
					from selenium.common.exceptions import NoSuchElementException, UnexpectedAlertPresentException
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def login(driver, url, username, password):
 | 
				
			||||||
 | 
					    try:
 | 
				
			||||||
 | 
					        driver.get(url)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Fill in the login form
 | 
				
			||||||
 | 
					        user_input = WebDriverWait(driver, 10).until(
 | 
				
			||||||
 | 
					            EC.element_to_be_clickable((By.ID, "user_name"))
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        user_input.send_keys(username)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        password_input = WebDriverWait(driver, 10).until(
 | 
				
			||||||
 | 
					            EC.element_to_be_clickable((By.ID, "user_password"))
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        password_input.send_keys(password)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Click the login button
 | 
				
			||||||
 | 
					        login_button = WebDriverWait(driver, 10).until(
 | 
				
			||||||
 | 
					            EC.element_to_be_clickable((By.ID, "login_btn"))
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        login_button.click()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Wait for the admin_tab to become clickable
 | 
				
			||||||
 | 
					        admin_tab = WebDriverWait(driver, 10).until(
 | 
				
			||||||
 | 
					            EC.element_to_be_clickable((By.ID, "admin_tab"))
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    except (NoSuchElementException, UnexpectedAlertPresentException) as e:
 | 
				
			||||||
 | 
					        return f"Error: {str(e)}"
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,73 @@
 | 
				
			||||||
 | 
					from helper import login
 | 
				
			||||||
 | 
					from selenium.webdriver.common.by import By
 | 
				
			||||||
 | 
					from selenium.webdriver.support.wait import WebDriverWait
 | 
				
			||||||
 | 
					from selenium.webdriver.support import expected_conditions as EC
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_admin_can_create_lecturer_account(driver, url, admin_username, admin_password, restore_database):
 | 
				
			||||||
 | 
					    # Administrator (admin@qq.com, password 123) logs in
 | 
				
			||||||
 | 
					    driver.maximize_window()
 | 
				
			||||||
 | 
					    login(driver, url, admin_username, admin_password)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Create a Lecture account for mrlan@qq.com, password [123Abc!]
 | 
				
			||||||
 | 
					    tab = driver.find_element(By.ID, 'tab_ins_accounts')    
 | 
				
			||||||
 | 
					    tab.click()
 | 
				
			||||||
 | 
					    elem = driver.find_element(By.NAME, 'fullname')
 | 
				
			||||||
 | 
					    elem.send_keys('Mr Lan')
 | 
				
			||||||
 | 
					    elem = driver.find_element(By.NAME, 'email')
 | 
				
			||||||
 | 
					    elem.send_keys('mrlan@qq.com')
 | 
				
			||||||
 | 
					    elem = driver.find_element(By.NAME, 'password')
 | 
				
			||||||
 | 
					    elem.send_keys('123Abc!!')
 | 
				
			||||||
 | 
					    radio_button = driver.find_element(By.NAME, 'type')
 | 
				
			||||||
 | 
					    radio_button.click()    
 | 
				
			||||||
 | 
					    button = driver.find_element(By.NAME, 'create_btn')
 | 
				
			||||||
 | 
					    button.click()
 | 
				
			||||||
 | 
					    time.sleep(1)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Log out Admin
 | 
				
			||||||
 | 
					    logout_button = WebDriverWait(driver, 10).until(
 | 
				
			||||||
 | 
					        EC.element_to_be_clickable(
 | 
				
			||||||
 | 
					            (By.XPATH, "//a[contains(@class, 'nav-link') and contains(@href, 'logout.php')]"))
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    logout_button.click()
 | 
				
			||||||
 | 
					    time.sleep(1)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Log in Lecture account
 | 
				
			||||||
 | 
					    login(driver, url, 'mrlan@qq.com', '123Abc!!')
 | 
				
			||||||
 | 
					    elems = driver.find_elements(By.CLASS_NAME, 'nav-link')
 | 
				
			||||||
 | 
					    assert '(Lecturer)' in elems[0].text
 | 
				
			||||||
 | 
					    driver.quit()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_lecturer_can_create_course():
 | 
				
			||||||
 | 
					    # Lecturer mrlan@qq.com logs in
 | 
				
			||||||
 | 
					    # Create a course called CSC1001 Advanced Software Engineering, 2024
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_lecturer_can_post_assignment():
 | 
				
			||||||
 | 
					    # Lecturer mrlan@qq.com logs in
 | 
				
			||||||
 | 
					    # Create an assignment called Take-home quiz 1 for course CSC1001
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_lecturer_can_add_student_numbers():
 | 
				
			||||||
 | 
					    # Lecturer mrlan@qq.com logs in
 | 
				
			||||||
 | 
					    # Add 6 ASE student numbers
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_student_can_sign_up():
 | 
				
			||||||
 | 
					    # Student with recognizable student number can sign up an account
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_student_can_join_course():
 | 
				
			||||||
 | 
					    # Student can join CSC1001 Advanced Software Engineering
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_student_can_submit_assignment():
 | 
				
			||||||
 | 
					    # Student can submit Take-home quiz 1 for CSC1001
 | 
				
			||||||
 | 
					    assert True
 | 
				
			||||||
		Loading…
	
		Reference in New Issue