From c2995636702af3ae840c45d61c37f7bfadbd593f Mon Sep 17 00:00:00 2001 From: forge-bot Date: Tue, 14 Jul 2026 10:27:31 +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/RoleMatrixRuntimeTest.java | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 src/test/java/com/klaroworks/runtime/role/RoleMatrixRuntimeTest.java diff --git a/src/test/java/com/klaroworks/runtime/role/RoleMatrixRuntimeTest.java b/src/test/java/com/klaroworks/runtime/role/RoleMatrixRuntimeTest.java new file mode 100644 index 0000000..8446c89 --- /dev/null +++ b/src/test/java/com/klaroworks/runtime/role/RoleMatrixRuntimeTest.java @@ -0,0 +1,123 @@ +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.api.Nested; + +import static org.junit.jupiter.api.Assertions.*; + +@DisplayName("RoleMatrixRuntime 테스트") +class RoleMatrixRuntimeTest { + + private RoleMatrixRuntime runtime; + + @BeforeEach + void setUp() { + runtime = new RoleMatrixRuntime(); + } + + @Nested + @DisplayName("evaluateRole 메서드 테스트") + class EvaluateRoleTests { + + @Test + @DisplayName("유효한 역할 평가") + void testEvaluateValidRole() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + context.setRoles(new String[]{"admin", "user"}); + + boolean result = runtime.evaluateRole("admin", context); + assertTrue(result, "유효한 역할은 true를 반환해야 함"); + } + + @Test + @DisplayName("유효하지 않은 역할 평가") + void testEvaluateInvalidRole() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + context.setRoles(new String[]{"user"}); + + boolean result = runtime.evaluateRole("admin", context); + assertFalse(result, "유효하지 않은 역할은 false를 반환해야 함"); + } + + @Test + @DisplayName("null 역할 평가 시 false 반환") + void testEvaluateNullRole() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + + boolean result = runtime.evaluateRole(null, context); + assertFalse(result, "null 역할은 false를 반환해야 함"); + } + + @Test + @DisplayName("빈 역할 평가 시 false 반환") + void testEvaluateEmptyRole() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + + boolean result = runtime.evaluateRole("", context); + assertFalse(result, "빈 역할은 false를 반환해야 함"); + } + + @Test + @DisplayName("null 컨텍스트 평가 시 false 반환") + void testEvaluateNullContext() { + boolean result = runtime.evaluateRole("admin", null); + assertFalse(result, "null 컨텍스트는 false를 반환해야 함"); + } + } + + @Nested + @DisplayName("hasPermission 메서드 테스트") + class HasPermissionTests { + + @Test + @DisplayName("권한 있음") + void testHasPermission() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + context.setRoles(new String[]{"admin"}); + + boolean result = runtime.hasPermission(context, "read", "resource-001"); + assertTrue(result, "권한이 있으면 true를 반환해야 함"); + } + + @Test + @DisplayName("권한 없음") + void testNoPermission() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + context.setRoles(new String[]{"user"}); + + boolean result = runtime.hasPermission(context, "delete", "resource-001"); + assertFalse(result, "권한이 없으면 false를 반환해야 함"); + } + } + + @Nested + @DisplayName("컨텍스트 관리 테스트") + class ContextManagementTests { + + @Test + @DisplayName("컨텍스트 생성") + void testCreateContext() { + RoleContext context = runtime.createContext("user-001", new String[]{"admin"}); + assertNotNull(context, "컨텍스트가 생성되어야 함"); + assertEquals("user-001", context.getUserId(), "사용자 ID가 일치해야 함"); + } + + @Test + @DisplayName("컨텍스트 정리") + void testClearContext() { + RoleContext context = new RoleContext(); + context.setUserId("user-001"); + + runtime.clearContext(context); + assertNull(context.getUserId(), "컨텍스트가 정리되어야 함"); + } + } +}