diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ClusterServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ClusterServiceTest.java new file mode 100644 index 000000000..2037a253e --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ClusterServiceTest.java @@ -0,0 +1,136 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.ClusterPO; +import org.apache.bigtop.manager.dao.po.RepoPO; +import org.apache.bigtop.manager.dao.po.StackPO; +import org.apache.bigtop.manager.dao.repository.ClusterDao; +import org.apache.bigtop.manager.dao.repository.RepoDao; +import org.apache.bigtop.manager.dao.repository.StackDao; +import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.exception.ApiException; +import org.apache.bigtop.manager.server.model.dto.ClusterDTO; +import org.apache.bigtop.manager.server.model.dto.RepoDTO; +import org.apache.bigtop.manager.server.model.dto.ServiceDTO; +import org.apache.bigtop.manager.server.model.dto.StackDTO; +import org.apache.bigtop.manager.server.service.impl.ClusterServiceImpl; +import org.apache.bigtop.manager.server.utils.StackUtils; + +import org.apache.commons.lang3.tuple.ImmutablePair; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.CALLS_REAL_METHODS; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class ClusterServiceTest { + private static final String CLUSTER_NAME = "TestCluster"; + + @Mock + private ClusterDao clusterDao; + + @Mock + private StackDao stackDao; + + @Mock + private RepoDao repoDao; + + @InjectMocks + private ClusterService clusterService = new ClusterServiceImpl(); + + @Mock + private HostService hostService; + + private ClusterPO clusterPO; + private ClusterDTO clusterDTO; + Map>> mockStackKeyMap = new HashMap<>(); + + @BeforeEach + public void setup() { + clusterPO = new ClusterPO(); + clusterPO.setId(1L); + clusterPO.setClusterName(CLUSTER_NAME); + + clusterDTO = new ClusterDTO(); + clusterDTO.setClusterName(CLUSTER_NAME); + clusterDTO.setStackName("TestStack"); + clusterDTO.setStackVersion("1.0.0"); + RepoDTO repoDTO = new RepoDTO(); + repoDTO.setArch("x86_64"); + repoDTO.setOs("test"); + clusterDTO.setRepoInfoList(List.of(repoDTO)); + StackDTO stackDTO = new StackDTO(); + stackDTO.setStackName("TestStack"); + mockStackKeyMap.put( + StackUtils.fullStackName(clusterDTO.getStackName(), clusterDTO.getStackVersion()), + new ImmutablePair<>(stackDTO, new ArrayList<>())); + } + + @Test + public void testListAndGetAndUpdate() { + when(clusterDao.findAllByJoin()).thenReturn(List.of(clusterPO)); + assert clusterService.list().size() == 1; + + assertEquals( + ApiExceptionEnum.CLUSTER_NOT_FOUND, + assertThrows(ApiException.class, () -> clusterService.get(1L)).getEx()); + + when(clusterDao.findByIdJoin(any())).thenReturn(clusterPO); + assert clusterService.get(1L).getClusterName().equals(CLUSTER_NAME); + + ClusterDTO clusterDTO = new ClusterDTO(); + clusterDTO.setClusterName(CLUSTER_NAME); + assert clusterService.update(1L, clusterDTO).getClusterName().equals(CLUSTER_NAME); + } + + @Test + public void testSave() { + when(stackDao.findByStackNameAndStackVersion(any(), any())).thenReturn(new StackPO()); + when(hostService.batchSave(any(), any())).thenReturn(null); + RepoPO repoPO = new RepoPO(); + repoPO.setArch("x86_64"); + repoPO.setOs("test"); + when(repoDao.findAllByClusterId(any())).thenReturn(List.of(repoPO)); + try (MockedStatic mockedStackUtils = mockStatic(StackUtils.class, CALLS_REAL_METHODS)) { + mockedStackUtils.when(StackUtils::getStackKeyMap).thenReturn(mockStackKeyMap); + clusterService.save(clusterDTO); + when(clusterDao.findByClusterName(any())).thenReturn(Optional.ofNullable(clusterPO)); + clusterService.save(clusterDTO); + } + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/CommandServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/CommandServiceTest.java new file mode 100644 index 000000000..a7082c209 --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/CommandServiceTest.java @@ -0,0 +1,106 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.JobPO; +import org.apache.bigtop.manager.dao.po.StagePO; +import org.apache.bigtop.manager.dao.po.TaskPO; +import org.apache.bigtop.manager.dao.repository.JobDao; +import org.apache.bigtop.manager.dao.repository.StageDao; +import org.apache.bigtop.manager.dao.repository.TaskDao; +import org.apache.bigtop.manager.server.command.factory.JobFactories; +import org.apache.bigtop.manager.server.command.factory.JobFactory; +import org.apache.bigtop.manager.server.command.job.Job; +import org.apache.bigtop.manager.server.command.job.JobContext; +import org.apache.bigtop.manager.server.command.scheduler.JobScheduler; +import org.apache.bigtop.manager.server.command.stage.Stage; +import org.apache.bigtop.manager.server.command.task.Task; +import org.apache.bigtop.manager.server.command.validator.ValidatorExecutionChain; +import org.apache.bigtop.manager.server.holder.SpringContextHolder; +import org.apache.bigtop.manager.server.model.dto.CommandDTO; +import org.apache.bigtop.manager.server.service.impl.CommandServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.HashMap; +import java.util.List; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class CommandServiceTest { + @Mock + JobFactory jobFactory; + + @Mock + JobDao jobDao; + + @Mock + private StageDao stageDao; + + @Mock + private TaskDao taskDao; + + @Mock + private JobScheduler jobScheduler; + + @InjectMocks + private CommandService commandService = new CommandServiceImpl(); + + @Test + public void testCommand() { + Job mockJob = mock(Job.class); + JobContext mockJobContext = mock(JobContext.class); + + CommandDTO mockCommandDTO = mock(CommandDTO.class); + + when(mockJob.getJobContext()).thenReturn(mockJobContext); + when(mockJobContext.getCommandDTO()).thenReturn(mockCommandDTO); + when(mockJob.getJobPO()).thenReturn(new JobPO()); + + Stage mockStage = mock(Stage.class); + when(mockJob.getStages()).thenReturn(List.of(mockStage)); + when(mockStage.getStagePO()).thenReturn(new StagePO()); + + Task mockTask = mock(Task.class); + when(mockStage.getTasks()).thenReturn(List.of(mockTask)); + when(mockTask.getTaskPO()).thenReturn(new TaskPO()); + + try (var mockSpringContextHolder = mockStatic(SpringContextHolder.class)) { + mockSpringContextHolder + .when(SpringContextHolder::getCommandValidators) + .thenReturn(new HashMap<>()); + mockStatic(ValidatorExecutionChain.class); + try (var mockJobFactories = mockStatic(JobFactories.class)) { + mockJobFactories.when(() -> JobFactories.getJobFactory(any())).thenReturn(jobFactory); + when(jobFactory.createJob(any())).thenReturn(mockJob); + + assert commandService.command(mockCommandDTO) != null; + } + } + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ComponentServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ComponentServiceTest.java new file mode 100644 index 000000000..854710e41 --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ComponentServiceTest.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.ComponentPO; +import org.apache.bigtop.manager.dao.repository.ComponentDao; +import org.apache.bigtop.manager.server.service.impl.ComponentServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.List; +import java.util.Optional; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class ComponentServiceTest { + @Mock + private ComponentDao componentDao; + + @InjectMocks + private ComponentService componentService = new ComponentServiceImpl(); + + @Test + public void testListAndGetComponent() { + when(componentDao.findAllByClusterId(any())).thenReturn(List.of(new ComponentPO())); + assert componentService.list(1L).size() == 1; + + when(componentDao.findOptionalById(any())).thenReturn(Optional.of(new ComponentPO())); + assert componentService.get(1L) != null; + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ConfigServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ConfigServiceTest.java new file mode 100644 index 000000000..80bbe6539 --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/ConfigServiceTest.java @@ -0,0 +1,90 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.ClusterPO; +import org.apache.bigtop.manager.dao.po.ServiceConfigPO; +import org.apache.bigtop.manager.dao.po.ServicePO; +import org.apache.bigtop.manager.dao.po.TypeConfigPO; +import org.apache.bigtop.manager.dao.repository.ClusterDao; +import org.apache.bigtop.manager.dao.repository.ServiceConfigDao; +import org.apache.bigtop.manager.dao.repository.ServiceDao; +import org.apache.bigtop.manager.dao.repository.TypeConfigDao; +import org.apache.bigtop.manager.server.model.dto.PropertyDTO; +import org.apache.bigtop.manager.server.model.dto.TypeConfigDTO; +import org.apache.bigtop.manager.server.service.impl.ConfigServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.List; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class ConfigServiceTest { + + @Mock + private ClusterDao clusterDao; + + @Mock + private ServiceDao serviceDao; + + @Mock + private ServiceConfigDao serviceConfigDao; + + @Mock + private TypeConfigDao typeConfigDao; + + @InjectMocks + private ConfigService configService = new ConfigServiceImpl(); + + @Test + public void testListAndLatest() { + configService.list(1L); + configService.latest(1L); + } + + @Test + public void testUpsert() { + when(clusterDao.findById(1L)).thenReturn(new ClusterPO()); + when(serviceDao.findById(1L)).thenReturn(new ServicePO()); + TypeConfigDTO typeConfigDTO = new TypeConfigDTO(); + typeConfigDTO.setTypeName("test"); + PropertyDTO propertyDTO = new PropertyDTO(); + propertyDTO.setName("test"); + typeConfigDTO.setProperties(List.of(propertyDTO)); + configService.upsert(1L, 1L, List.of(typeConfigDTO)); + + ServiceConfigPO serviceConfigPO = new ServiceConfigPO(); + TypeConfigPO typeConfigPO = new TypeConfigPO(); + typeConfigPO.setTypeName("test"); + typeConfigPO.setPropertiesJson("[]"); + serviceConfigPO.setConfigs(List.of(typeConfigPO)); + serviceConfigPO.setVersion(1); + when(serviceConfigDao.findByClusterIdAndServiceIdAndSelectedIsTrue(any(), any())) + .thenReturn(serviceConfigPO); + configService.upsert(1L, 1L, List.of(typeConfigDTO)); + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/HostComponentServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/HostComponentServiceTest.java new file mode 100644 index 000000000..65dc37d9d --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/HostComponentServiceTest.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.repository.HostComponentDao; +import org.apache.bigtop.manager.server.service.impl.HostComponentServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.ArrayList; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class HostComponentServiceTest { + @Mock + private HostComponentDao hostComponentDao; + + @InjectMocks + private HostComponentService hostComponentService = new HostComponentServiceImpl(); + + @Test + public void testListHostComponent() { + when(hostComponentDao.findAllByClusterId(any())).thenReturn(new ArrayList<>()); + assert hostComponentService.list(1L) != null; + + when(hostComponentDao.findAllByClusterIdAndHostId(any(), any())).thenReturn(null); + assert hostComponentService.listByHost(1L, 1L) == null; + + when(hostComponentDao.findAllByClusterIdAndServiceId(any(), any())).thenReturn(null); + assert hostComponentService.listByService(1L, 1L) == null; + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/LoginServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/LoginServiceTest.java new file mode 100644 index 000000000..d9620d996 --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/LoginServiceTest.java @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.UserPO; +import org.apache.bigtop.manager.dao.repository.UserDao; +import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.exception.ApiException; +import org.apache.bigtop.manager.server.model.dto.LoginDTO; +import org.apache.bigtop.manager.server.service.impl.LoginServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class LoginServiceTest { + + @Mock + private UserDao userDao; + + @InjectMocks + private LoginService loginService = new LoginServiceImpl(); + + @Test + public void testLogin() { + when(userDao.findByUsername(any())).thenReturn(null); + assertEquals( + ApiExceptionEnum.INCORRECT_USERNAME_OR_PASSWORD, + assertThrows(ApiException.class, () -> loginService.login(new LoginDTO())) + .getEx()); + + UserPO userPO = new UserPO(); + userPO.setStatus(false); + userPO.setPassword("wrong_password"); + LoginDTO loginDTO = new LoginDTO(); + loginDTO.setPassword("password"); + when(userDao.findByUsername(any())).thenReturn(userPO); + assertEquals( + ApiExceptionEnum.INCORRECT_USERNAME_OR_PASSWORD, + assertThrows(ApiException.class, () -> loginService.login(loginDTO)) + .getEx()); + + userPO.setPassword("password"); + when(userDao.findByUsername(any())).thenReturn(userPO); + assertEquals( + ApiExceptionEnum.USER_IS_DISABLED, + assertThrows(ApiException.class, () -> loginService.login(loginDTO)) + .getEx()); + + userPO.setStatus(true); + when(userDao.findByUsername(any())).thenReturn(userPO); + assert loginService.login(loginDTO) != null; + } +} diff --git a/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/UserServiceTest.java b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/UserServiceTest.java new file mode 100644 index 000000000..c3b17e770 --- /dev/null +++ b/bigtop-manager-server/src/test/java/org/apache/bigtop/manager/server/service/UserServiceTest.java @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.bigtop.manager.server.service; + +import org.apache.bigtop.manager.dao.po.UserPO; +import org.apache.bigtop.manager.dao.repository.UserDao; +import org.apache.bigtop.manager.server.enums.ApiExceptionEnum; +import org.apache.bigtop.manager.server.exception.ApiException; +import org.apache.bigtop.manager.server.model.dto.UserDTO; +import org.apache.bigtop.manager.server.service.impl.UserServiceImpl; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.Optional; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class UserServiceTest { + + @Mock + private UserDao userDao; + + @InjectMocks + private UserService userService = new UserServiceImpl(); + + @Test + public void testCurrentAndUpdate() { + when(userDao.findOptionalById(any())).thenReturn(Optional.of(new UserPO())); + assert userService.current() != null; + + UserDTO userDTO = new UserDTO(); + userDTO.setNickname("test"); + assert userService.update(userDTO).getNickname().equals("test"); + } + + @Test + public void testNeedLogin() { + when(userDao.findOptionalById(any())).thenReturn(Optional.empty()); + ApiException exception1 = assertThrows(ApiException.class, () -> { + userService.current(); + }); + assertEquals(ApiExceptionEnum.NEED_LOGIN, exception1.getEx()); + + ApiException exception2 = assertThrows(ApiException.class, () -> { + userService.update(new UserDTO()); + }); + assertEquals(ApiExceptionEnum.NEED_LOGIN, exception2.getEx()); + } +}