46 lines
1.7 KiB
Java
46 lines
1.7 KiB
Java
package com.baiyue.eventbridge.security;
|
|
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
import jakarta.annotation.Resource;
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.springframework.test.context.TestPropertySource;
|
|
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
|
|
import org.springframework.test.util.ReflectionTestUtils;
|
|
import org.springframework.web.server.ResponseStatusException;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
|
|
@DisplayName("内部服务令牌校验")
|
|
@SpringJUnitConfig(InternalServiceTokenGuard.class)
|
|
@TestPropertySource(properties = "baiyue.security.internal-service-token=a-secure-internal-token")
|
|
class InternalServiceTokenGuardTest {
|
|
@Resource private InternalServiceTokenGuard guard;
|
|
|
|
@AfterEach
|
|
void resetToken() {
|
|
ReflectionTestUtils.setField(guard, "expectedToken", "a-secure-internal-token");
|
|
}
|
|
@Test
|
|
void validTokenAllowsAccess() {
|
|
assertThatCode(() -> guard.verify("a-secure-internal-token")).doesNotThrowAnyException();
|
|
}
|
|
|
|
@Test
|
|
void unconfiguredTokenDisablesReceiveEndpoint() {
|
|
ReflectionTestUtils.setField(guard, "expectedToken", "");
|
|
assertThatThrownBy(() -> guard.verify("anything"))
|
|
.isInstanceOf(ResponseStatusException.class)
|
|
.hasMessageContaining("接口已关闭");
|
|
}
|
|
|
|
@Test
|
|
void invalidTokenIsRejected() {
|
|
ReflectionTestUtils.setField(guard, "expectedToken", "expected");
|
|
assertThatThrownBy(() -> guard.verify("wrong"))
|
|
.isInstanceOf(ResponseStatusException.class)
|
|
.hasMessageContaining("令牌无效");
|
|
}
|
|
}
|