This is an automated email from the ASF dual-hosted git repository.

gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new c650972f3 [improve] add AccountServiceImpl unit test (#2501)
c650972f3 is described below

commit c650972f3d9cfa4b22dd42ad9eb6bd98a3cbaee6
Author: YuLuo <[email protected]>
AuthorDate: Sun Aug 11 11:21:15 2024 +0800

    [improve] add AccountServiceImpl unit test (#2501)
    
    Signed-off-by: yuluo-yx <[email protected]>
---
 .../manager/service/AccountServiceTest.java        | 127 +++++++++++++++++++++
 1 file changed, 127 insertions(+)

diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/AccountServiceTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/AccountServiceTest.java
index 46f55d22b..2698123f1 100644
--- 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/AccountServiceTest.java
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/AccountServiceTest.java
@@ -17,11 +17,138 @@
 
 package org.apache.hertzbeat.manager.service;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.naming.AuthenticationException;
+
+import com.usthe.sureness.provider.DefaultAccount;
+import com.usthe.sureness.provider.SurenessAccount;
+import com.usthe.sureness.provider.SurenessAccountProvider;
+import com.usthe.sureness.provider.ducument.DocumentAccountProvider;
+import com.usthe.sureness.util.JsonWebTokenUtil;
+import com.usthe.sureness.util.Md5Util;
+import io.jsonwebtoken.MalformedJwtException;
+import org.apache.hertzbeat.common.util.JsonUtil;
+import org.apache.hertzbeat.manager.pojo.dto.LoginDto;
+import org.apache.hertzbeat.manager.pojo.dto.RefreshTokenResponse;
 import org.apache.hertzbeat.manager.service.impl.AccountServiceImpl;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 /**
  * test case for {@link AccountServiceImpl}
  */
 
 class AccountServiceTest {
+
+       private AccountServiceImpl accountService;
+
+       private SurenessAccountProvider accountProvider;
+
+       private final String identifier = "admin";
+       private final String password = "hertzbeat";
+       private final String salt = "salt1";
+       private final List<String> roles = List.of("admin");
+
+       private final String jwt = """
+                         CyaFv0bwq2Eik0jdrKUtsA6bx3sDJeFV643R
+                         LnfKefTjsIfJLBa2YkhEqEGtcHDTNe4CU6+9
+                         8tVt4bisXQ13rbN0oxhUZR73M6EByXIO+SV5
+                         dKhaX0csgOCTlCxq20yhmUea6H6JIpSE2Rwp
+                       """;
+       @BeforeEach
+       void setUp() {
+
+               accountProvider = mock(DocumentAccountProvider.class);
+               accountService = new AccountServiceImpl();
+
+               JsonWebTokenUtil.setDefaultSecretKey(jwt);
+       }
+
+       @Test
+       void testAuthGetTokenWithValidAccount() throws AuthenticationException {
+
+               SurenessAccount account = DefaultAccount.builder("app1")
+                               .setPassword(Md5Util.md5(password + salt))
+                               .setSalt(salt)
+                               .setOwnRoles(roles)
+                               .setDisabledAccount(Boolean.FALSE)
+                               .setExcessiveAttempts(Boolean.FALSE)
+                               .build();
+               LoginDto loginDto = LoginDto.builder()
+                               .credential(password)
+                               .identifier(identifier)
+                               .build();
+
+               
when(accountProvider.loadAccount(identifier)).thenReturn(account);
+
+               Map<String, String> response = 
accountService.authGetToken(loginDto);
+
+               assertNotNull(response);
+               assertNotNull(response.get("token"));
+               assertNotNull(response.get("refreshToken"));
+               assertNotNull(response.get("role"));
+               assertEquals(JsonUtil.toJson(roles), response.get("role"));
+
+       }
+
+       @Test
+       void testAuthGetTokenWithInvalidAccount() {
+
+               String identifier = "user1";
+               String password = "wrongPassword";
+               LoginDto loginDto = LoginDto.builder()
+                               .credential(password)
+                               .identifier(identifier)
+                               .build();
+
+               when(accountProvider.loadAccount(identifier)).thenReturn(null);
+
+               Assertions.assertThrows(
+                               AuthenticationException.class,
+                               () -> accountService.authGetToken(loginDto)
+               );
+       }
+
+       @Test
+       void testRefreshTokenWithValidToken() throws AuthenticationException {
+
+               String userId = "admin";
+               String refreshToken = JsonWebTokenUtil.issueJwt(userId, 3600L, 
Collections.singletonMap("refresh", true));
+
+               SurenessAccount account = DefaultAccount.builder("app1")
+                               .setPassword(Md5Util.md5(password + salt))
+                               .setSalt(salt)
+                               .setOwnRoles(roles)
+                               .setDisabledAccount(Boolean.FALSE)
+                               .setExcessiveAttempts(Boolean.FALSE)
+                               .build();
+               when(accountProvider.loadAccount(userId)).thenReturn(account);
+
+               RefreshTokenResponse response = 
accountService.refreshToken(refreshToken);
+
+               assertNotNull(response);
+               assertNotNull(response.getToken());
+               assertNotNull(response.getRefreshToken());
+       }
+
+       @Test
+       void testRefreshTokenWithInvalidToken() {
+
+               String refreshToken = "invalidToken";
+
+               Assertions.assertThrows(
+                               MalformedJwtException.class,
+                               () -> accountService.refreshToken(refreshToken)
+               );
+       }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to