package fi.otavanopisto.muikku.ui.base.course;
import static fi.otavanopisto.muikku.mock.PyramusMock.mocker;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import org.junit.Test;
import fi.otavanopisto.muikku.TestUtilities;
import fi.otavanopisto.muikku.atests.Workspace;
import fi.otavanopisto.muikku.mock.PyramusMock.Builder;
import fi.otavanopisto.muikku.mock.model.MockCourseStudent;
import fi.otavanopisto.muikku.mock.model.MockStaffMember;
import fi.otavanopisto.muikku.mock.model.MockStudent;
import fi.otavanopisto.muikku.ui.AbstractUITest;
import fi.otavanopisto.pyramus.rest.model.Sex;
import fi.otavanopisto.pyramus.rest.model.UserRole;
public class CourseAccessTestsBase extends AbstractUITest {
@Test
public void notLoggedInAnyoneCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).mockLogin(admin).build();
login();
long courseId = 1l;
Workspace workspace = createWorkspace("testcourse", "test course for testing", String.valueOf(courseId), Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"ANYONE\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.clearLoginMock();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void loggedInAnyoneCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testcourse", "test course for testing", "1", Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"ANYONE\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void courseStudentAnyoneCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Long courseId = 1l;
Workspace workspace = createWorkspace("testcourse", "test course for testing", String.valueOf(courseId), Boolean.TRUE);
MockCourseStudent mockCourseStudent = new MockCourseStudent(3l, courseId, student.getId());
mockBuilder.addCourseStudent(workspace.getId(), mockCourseStudent).build();
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"ANYONE\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void notLoggedInLoggedInCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testcourse", "test course for testing", "1", Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"LOGGED_IN\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.clearLoginMock();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertNotPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void loggedInLoggedInCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testcourse", "test course for testing", "1", Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"LOGGED_IN\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void courseStudentLoggedInCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Long courseId = 1l;
Workspace workspace = createWorkspace("testcourse", "test course for testing", String.valueOf(courseId), Boolean.TRUE);
MockCourseStudent mockCourseStudent = new MockCourseStudent(3l, courseId, student.getId());
mockBuilder.addCourseStudent(workspace.getId(), mockCourseStudent).build();
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"LOGGED_IN\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void notLoggedInMembersOnlyCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testcourse", "test course for testing", "1", Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"MEMBERS_ONLY\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.clearLoginMock();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertNotPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void loggedInMembersOnlyCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Workspace workspace = createWorkspace("testcourse", "test course for testing", "1", Boolean.TRUE);
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"MEMBERS_ONLY\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
assertNotPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
@Test
public void courseStudentMembersOnlyCourseAccessTest() throws Exception {
MockStaffMember admin = new MockStaffMember(1l, 1l, "Admin", "User", UserRole.ADMINISTRATOR, "121212-1234", "admin@example.com", Sex.MALE);
MockStudent student = new MockStudent(2l, 2l, "Student", "Tester", "student@example.com", 1l, OffsetDateTime.of(1990, 2, 2, 0, 0, 0, 0, ZoneOffset.UTC), "121212-1212", Sex.FEMALE, TestUtilities.toDate(2012, 1, 1), TestUtilities.getNextYear());
Builder mockBuilder = mocker();
try {
mockBuilder.addStaffMember(admin).addStudent(student).mockLogin(admin).build();
login();
Long courseId = 1l;
Workspace workspace = createWorkspace("testcourse", "test course for testing", String.valueOf(courseId), Boolean.TRUE);
MockCourseStudent mockCourseStudent = new MockCourseStudent(3l, courseId, student.getId());
mockBuilder.addCourseStudent(workspace.getId(), mockCourseStudent).build();
try{
navigate(String.format("/workspace/%s/workspace-management", workspace.getUrlName()), true);
waitAndClick(".additionalinfo-data div input[value=\"MEMBERS_ONLY\"]");
waitAndClick(".workspace-management-footer .workspace-management-footer-actions-container button.save");
waitForNotVisible(".loading");
sleep(1000);
logout();
mockBuilder.mockLogin(student);
login();
navigate(String.format("/workspace/%s", workspace.getUrlName()), true);
waitForPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
assertPresent(".workspace-header-wrapper .workspace-header-container h1.workspace-title");
}finally{
deleteWorkspace(workspace.getId());
}
}finally{
mockBuilder.wiremockReset();
}
}
}