You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
3.5 KiB
Java
81 lines
3.5 KiB
Java
|
3 months ago
|
package com.sztzjy.linkCommerce.controller.stu;
|
||
|
|
|
||
|
|
import com.sztzjy.linkCommerce.config.exception.UnAuthorizedException;
|
||
|
|
import com.sztzjy.linkCommerce.config.security.JwtUser;
|
||
|
|
import com.sztzjy.linkCommerce.config.security.TokenProvider;
|
||
|
|
import com.sztzjy.linkCommerce.entity.TaskAllocation;
|
||
|
|
import com.sztzjy.linkCommerce.entity.Userinfo;
|
||
|
|
import com.sztzjy.linkCommerce.entity.SchoolDefaultTaskInitialization;
|
||
|
|
import com.sztzjy.linkCommerce.mapper.UserinfoMapper;
|
||
|
|
import com.sztzjy.linkCommerce.service.SchoolDefaultTaskService;
|
||
|
|
import org.junit.jupiter.api.Test;
|
||
|
|
import org.springframework.mock.web.MockHttpServletRequest;
|
||
|
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
||
|
|
import org.springframework.test.util.ReflectionTestUtils;
|
||
|
|
|
||
|
|
import java.util.List;
|
||
|
|
|
||
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||
|
|
import static org.mockito.ArgumentMatchers.anyList;
|
||
|
|
import static org.mockito.ArgumentMatchers.eq;
|
||
|
|
import static org.mockito.Mockito.*;
|
||
|
|
|
||
|
|
class SchoolDefaultTaskControllerTest {
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void managerTeacherCanSaveDefaultsForOwnSchool() {
|
||
|
|
SchoolDefaultTaskController controller = new SchoolDefaultTaskController();
|
||
|
|
SchoolDefaultTaskService service = mock(SchoolDefaultTaskService.class);
|
||
|
|
UserinfoMapper userinfoMapper = mock(UserinfoMapper.class);
|
||
|
|
ReflectionTestUtils.setField(controller, "schoolDefaultTaskService", service);
|
||
|
|
ReflectionTestUtils.setField(controller, "userinfoMapper", userinfoMapper);
|
||
|
|
when(userinfoMapper.selectByPrimaryKey("teacher-1")).thenReturn(teacher("teacher-1", "school-1", true));
|
||
|
|
SchoolDefaultTaskInitialization ready = new SchoolDefaultTaskInitialization();
|
||
|
|
ready.setStatus("READY");
|
||
|
|
when(service.getInitialization("school-1")).thenReturn(ready);
|
||
|
|
|
||
|
|
controller.replace(List.of(task("学校默认任务")), requestFor("teacher-1", "school-1"));
|
||
|
|
|
||
|
|
verify(service).replaceSchoolDefault(eq("school-1"), anyList());
|
||
|
|
}
|
||
|
|
|
||
|
|
@Test
|
||
|
|
void ordinaryTeacherCannotSaveDefaults() {
|
||
|
|
SchoolDefaultTaskController controller = new SchoolDefaultTaskController();
|
||
|
|
UserinfoMapper userinfoMapper = mock(UserinfoMapper.class);
|
||
|
|
ReflectionTestUtils.setField(controller, "userinfoMapper", userinfoMapper);
|
||
|
|
when(userinfoMapper.selectByPrimaryKey("teacher-2")).thenReturn(teacher("teacher-2", "school-1", false));
|
||
|
|
|
||
|
|
assertThrows(UnAuthorizedException.class,
|
||
|
|
() -> controller.replace(List.of(task("学校默认任务")), requestFor("teacher-2", "school-1")));
|
||
|
|
}
|
||
|
|
|
||
|
|
private Userinfo teacher(String userId, String schoolId, boolean teacherAdmin) {
|
||
|
|
Userinfo user = new Userinfo();
|
||
|
|
user.setUserId(userId);
|
||
|
|
user.setSchoolId(schoolId);
|
||
|
|
user.setRole(3);
|
||
|
|
user.setTeacherAdmin(teacherAdmin);
|
||
|
|
return user;
|
||
|
|
}
|
||
|
|
|
||
|
|
private TaskAllocation task(String module) {
|
||
|
|
TaskAllocation task = new TaskAllocation();
|
||
|
|
task.setModule(module);
|
||
|
|
task.setDisabledStatus((byte) 0);
|
||
|
|
return task;
|
||
|
|
}
|
||
|
|
|
||
|
|
private MockHttpServletRequest requestFor(String userId, String schoolId) {
|
||
|
|
JwtUser user = new JwtUser();
|
||
|
|
user.setUserId(userId);
|
||
|
|
user.setSchoolId(schoolId);
|
||
|
|
user.setRoleId(3);
|
||
|
|
user.setUsername(userId);
|
||
|
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
||
|
|
request.setUserPrincipal(new UsernamePasswordAuthenticationToken(user, null));
|
||
|
|
request.addHeader("Authorization", "Bearer " + TokenProvider.createToken(user));
|
||
|
|
return request;
|
||
|
|
}
|
||
|
|
}
|