zhou-hao 3 anni fa
parent
commit
97292b23ed

+ 59 - 0
hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/simple/DefaultDimensionManagerTest.java

@@ -0,0 +1,59 @@
+package org.hswebframework.web.authorization.simple;
+
+import org.hswebframework.web.authorization.Dimension;
+import org.hswebframework.web.authorization.DimensionProvider;
+import org.hswebframework.web.authorization.DimensionType;
+import org.hswebframework.web.authorization.dimension.DimensionUserBind;
+import org.hswebframework.web.authorization.dimension.DimensionUserBindProvider;
+import org.junit.Test;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+import reactor.test.StepVerifier;
+
+import java.util.Collection;
+import java.util.Collections;
+
+import static org.junit.Assert.*;
+
+public class DefaultDimensionManagerTest {
+
+    @Test
+    public void test() {
+        DefaultDimensionManager manager = new DefaultDimensionManager();
+        manager.addBindProvider(userIdList -> Flux.just(
+                DimensionUserBind.of("testUser", "testType", "testId")
+                , DimensionUserBind.of("testUser", "testType", "testId2")));
+        manager.addProvider(new DimensionProvider() {
+            @Override
+            public Flux<? extends DimensionType> getAllType() {
+                return Flux.just(SimpleDimensionType.of("testType"));
+            }
+
+            @Override
+            public Flux<? extends Dimension> getDimensionsById(DimensionType type,
+                                                               Collection<String> idList) {
+                return Flux.just(SimpleDimension.of("testId", "testName", SimpleDimensionType.of("testType"), null));
+            }
+
+            @Override
+            public Flux<? extends Dimension> getDimensionByUserId(String userId) {
+                return Flux.empty();
+            }
+
+            @Override
+            public Mono<? extends Dimension> getDimensionById(DimensionType type, String id) {
+                return Mono.empty();
+            }
+
+            @Override
+            public Flux<String> getUserIdByDimensionId(String dimensionId) {
+                return Flux.empty();
+            }
+        });
+
+        manager.getUserDimension(Collections.singleton("testUser"))
+               .as(StepVerifier::create)
+               .expectNextMatches(detail -> detail.getDimensions().size() == 1)
+               .verifyComplete();
+    }
+}

+ 6 - 0
hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/annotation/EnableEntityEvent.java

@@ -28,6 +28,7 @@ import java.lang.annotation.*;
  * @see org.hswebframework.web.crud.events.EntityBeforeDeleteEvent
  * @see org.hswebframework.web.crud.events.EntityBeforeCreateEvent
  * @see org.hswebframework.web.crud.events.EntityBeforeQueryEvent
+ * @see org.hswebframework.web.crud.events.EntityEventListenerCustomizer
  */
 @Target({ElementType.TYPE})
 @Retention(RetentionPolicy.RUNTIME)
@@ -35,6 +36,11 @@ import java.lang.annotation.*;
 @Documented
 public @interface EnableEntityEvent {
 
+    /**
+     * 指定开启的事件类型,也可以通过{@link org.hswebframework.web.crud.events.EntityEventListenerCustomizer}进行自定义
+     * @return 事件类型
+     * @see org.hswebframework.web.crud.events.EntityEventListenerCustomizer
+     */
     EntityEventType[] value() default {
             EntityEventType.create,
             EntityEventType.delete,