From 7065ee0d34c2d839a59c86db0e93abca9fcee736 Mon Sep 17 00:00:00 2001 From: forge-bot Date: Tue, 14 Jul 2026 10:27:32 +0000 Subject: [PATCH] =?UTF-8?q?Reviewer=20=EC=97=AD=ED=95=A0=20=EA=B2=80?= =?UTF-8?q?=EC=A6=9D=20=EB=B3=B4=EA=B3=A0=EC=84=9C=20smoke=20(runtime-role?= =?UTF-8?q?-matrix-live-20260714101723-v7-reviewer-001)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../runtime/role/RoleValidatorTest.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/test/java/com/klaroworks/runtime/role/RoleValidatorTest.java diff --git a/src/test/java/com/klaroworks/runtime/role/RoleValidatorTest.java b/src/test/java/com/klaroworks/runtime/role/RoleValidatorTest.java new file mode 100644 index 0000000..4e5601b --- /dev/null +++ b/src/test/java/com/klaroworks/runtime/role/RoleValidatorTest.java @@ -0,0 +1,113 @@ +package com.klaroworks.runtime.role; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("RoleValidator 테스트") +class RoleValidatorTest { + + private RoleValidator validator; + + @BeforeEach + void setUp() { + validator = new RoleValidator(); + } + + @Nested + @DisplayName("validateRole 메서드 테스트") + class ValidateRoleTests { + + @ParameterizedTest + @ValueSource(strings = {"admin", "user", "moderator", "viewer"}) + @DisplayName("유효한 역할명 검증") + void testValidateValidRoleNames(String roleName) { + assertTrue(validator.validateRole(roleName), + "유효한 역할명 '" + roleName + "'은 유효해야 함"); + } + + @Test + @DisplayName("null 역할명 검증 시 예외 발생") + void testValidateNullRoleName() { + assertThrows(IllegalArgumentException.class, + () -> validator.validateRole(null), + "null 역할명은 IllegalArgumentException을 발생시켜야 함"); + } + + @Test + @DisplayName("빈 역할명 검증 시 예외 발생") + void testValidateEmptyRoleName() { + assertThrows(IllegalArgumentException.class, + () -> validator.validateRole(""), + "빈 역할명은 IllegalArgumentException을 발생시켜야 함"); + } + + @Test + @DisplayName("잘못된 역할명 검증 시 예외 발생") + void testValidateInvalidRoleName() { + assertThrows(IllegalArgumentException.class, + () -> validator.validateRole("invalid@role"), + "잘못된 역할명은 IllegalArgumentException을 발생시켜야 함"); + } + } + + @Nested + @DisplayName("validateContext 메서드 테스트") + class ValidateContextTests { + + @Test + @DisplayName("유효한 컨텍스트 검증") + void testValidateValidContext() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + context.setRoles(new String[]{"admin"}); + + assertTrue(validator.validateContext(context), + "유효한 컨텍스트는 true를 반환해야 함"); + } + + @Test + @DisplayName("null 컨텍스트 검증 시 예외 발생") + void testValidateNullContext() { + assertThrows(IllegalArgumentException.class, + () -> validator.validateContext(null), + "null 컨텍스트는 IllegalArgumentException을 발생시켜야 함"); + } + + @Test + @DisplayName("빈 사용자 ID 검증 시 예외 발생") + void testValidateEmptyUserId() { + RoleContext context = new RoleContext(); + context.setUserId(""); + + assertThrows(IllegalArgumentException.class, + () -> validator.validateContext(context), + "빈 사용자 ID는 IllegalArgumentException을 발생시켜야 함"); + } + } + + @Nested + @DisplayName("isValidRoleFormat 메서드 테스트") + class IsValidRoleFormatTests { + + @ParameterizedTest + @ValueSource(strings = {"admin", "user", "role_123", "ROLE-NAME"}) + @DisplayName("유효한 역할 포맷 검증") + void testValidRoleFormat(String role) { + assertTrue(validator.isValidRoleFormat(role), + "유효한 역할 포맷 '" + role + "'은 유효해야 함"); + } + + @ParameterizedTest + @ValueSource(strings = {"invalid@role", "role name", "role;name", ""}) + @DisplayName("유효하지 않은 역할 포맷 검증") + void testInvalidRoleFormat(String role) { + assertFalse(validator.isValidRoleFormat(role), + "유효하지 않은 역할 포맷 '" + role + "'은 유효하지 않아야 함"); + } + } +}