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.
dianshang-houduan/src/test/java/com/sztzjy/linkCommerce/controller/stu/SchoolDefaultTaskController...

81 lines
3.5 KiB
Java

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(java.util.Arrays.asList(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(java.util.Arrays.asList(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;
}
}