Skip to content

Commit edc9b8d

Browse files
Thomasludomikula
Thomas
authored andcommitted
Create more bundle create test for different permissions
1 parent 461be6a commit edc9b8d

File tree

7 files changed

+60
-10
lines changed

7 files changed

+60
-10
lines changed

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import org.lowcoder.domain.organization.repository.OrganizationRepository;
1616
import org.lowcoder.domain.organization.service.OrgMemberService;
1717
import org.lowcoder.domain.permission.model.ResourceRole;
18+
import org.lowcoder.domain.permission.model.ResourceType;
1819
import org.lowcoder.domain.permission.service.ResourcePermissionService;
1920
import org.lowcoder.domain.user.repository.UserRepository;
2021
import org.lowcoder.domain.user.service.UserService;
@@ -93,7 +94,7 @@ public Mono<Application> publish(String applicationId) {
9394
@Override
9495
public Mono<Application> create(Application newApplication, String visitorId) {
9596
return repository.save(newApplication)
96-
.delayUntil(app -> resourcePermissionService.addApplicationPermissionToUser(app.getId(), visitorId, ResourceRole.OWNER));
97+
.delayUntil(app -> resourcePermissionService.addResourcePermissionToUser(app.getId(), visitorId, ResourceRole.OWNER, ResourceType.APPLICATION));
9798
}
9899

99100
/**

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface BundleService {
1616

1717
Mono<Bundle> findById(String id);
1818

19-
Mono<Bundle> create(Bundle bundle);
19+
Mono<Bundle> create(Bundle bundle, String userId);
2020

2121
Flux<Bundle> findByUserId(String bundleId);
2222

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/bundle/service/BundleServiceImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
import org.lowcoder.domain.bundle.model.Bundle;
88
import org.lowcoder.domain.bundle.model.BundleRequestType;
99
import org.lowcoder.domain.bundle.repository.BundleRepository;
10+
import org.lowcoder.domain.permission.model.ResourceRole;
11+
import org.lowcoder.domain.permission.model.ResourceType;
12+
import org.lowcoder.domain.permission.service.ResourcePermissionService;
1013
import org.lowcoder.infra.annotation.NonEmptyMono;
1114
import org.lowcoder.infra.mongo.MongoUpsertHelper;
1215
import org.lowcoder.sdk.constants.FieldName;
@@ -30,6 +33,7 @@ public class BundleServiceImpl implements BundleService {
3033

3134
private final BundleRepository repository;
3235
private final MongoUpsertHelper mongoUpsertHelper;
36+
private final ResourcePermissionService resourcePermissionService;
3337

3438
@Override
3539
public Mono<Boolean> updateById(String id, Bundle resource) {
@@ -51,8 +55,9 @@ public Mono<Bundle> findById(String id) {
5155
}
5256

5357
@Override
54-
public Mono<Bundle> create(Bundle bundle) {
55-
return repository.save(bundle);
58+
public Mono<Bundle> create(Bundle newbundle, String visitorId) {
59+
return repository.save(newbundle)
60+
.delayUntil(bundle -> resourcePermissionService.addResourcePermissionToUser(bundle.getId(), visitorId, ResourceRole.OWNER, ResourceType.BUNDLE));
5661
}
5762

5863
@Override

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/service/ResourcePermissionService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ Mono<Boolean> addDataSourcePermissionToUser(String dataSourceId,
3434
String userId,
3535
ResourceRole role);
3636

37-
Mono<Boolean> addApplicationPermissionToUser(String applicationId,
37+
Mono<Boolean> addResourcePermissionToUser(String resourceId,
3838
String userId,
39-
ResourceRole role);
39+
ResourceRole role,
40+
ResourceType type);
4041

4142
Mono<Boolean> addApplicationPermissionToGroup(String applicationId,
4243
String groupId,

server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/permission/service/ResourcePermissionServiceImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,11 @@ public Mono<Boolean> addDataSourcePermissionToUser(String dataSourceId,
9898
}
9999

100100
@Override
101-
public Mono<Boolean> addApplicationPermissionToUser(String applicationId,
101+
public Mono<Boolean> addResourcePermissionToUser(String resourceId,
102102
String userId,
103-
ResourceRole role) {
104-
return addPermission(ResourceType.APPLICATION, applicationId, ResourceHolder.USER, userId, role);
103+
ResourceRole role,
104+
ResourceType type) {
105+
return addPermission(type, resourceId, ResourceHolder.USER, userId, role);
105106
}
106107

107108
@Override

server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/bundle/BundleApiServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public Mono<BundleInfoView> create(CreateBundleRequest createBundleRequest) {
116116
})
117117
.flatMap(orgMember -> {
118118
bundle.setCreatedBy(orgMember.getUserId());
119-
return bundleService.create(bundle);
119+
return bundleService.create(bundle, orgMember.getUserId());
120120
})
121121
.delayUntil(created -> autoGrantPermissionsByFolderDefault(created.getId(), createBundleRequest.folderId()))
122122
.delayUntil(created -> folderApiService.moveBundle(created.getId(),

server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/bundle/BundleApiServiceImplTest.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class BundleApiServiceImplTest {
2626

2727
@Test
2828
public void createBundleTest() {
29+
//When org admin user creates bundle it succeed
2930
when(sessionUserService.getVisitorId()).thenReturn(Mono.just("user01"));
3031
when(sessionUserService.getVisitorOrgMemberCache()).thenReturn(Mono.just(new OrgMember("org01", "user01", MemberRole.ADMIN, "NORMAL", 0)));
3132
Mono<BundleInfoView> bundleInfoViewMono = bundleApiService.create(new BundleEndpoints.CreateBundleRequest(
@@ -50,5 +51,46 @@ public void createBundleTest() {
5051
assertNull(bundleInfoView.getFolderId());
5152
})
5253
.verifyComplete();
54+
55+
//When org dev user creates bundle it succeed
56+
when(sessionUserService.getVisitorId()).thenReturn(Mono.just("user02"));
57+
when(sessionUserService.getVisitorOrgMemberCache()).thenReturn(Mono.just(new OrgMember("org01", "user02", MemberRole.MEMBER, "NORMAL", 0)));
58+
Mono<BundleInfoView> bundleInfoViewMono1 = bundleApiService.create(new BundleEndpoints.CreateBundleRequest(
59+
"org01",
60+
"name",
61+
"title",
62+
"description",
63+
"category",
64+
"image",
65+
null));
66+
StepVerifier.create(bundleInfoViewMono1)
67+
.assertNext(bundleInfoView -> {
68+
assertNotNull(bundleInfoView.getBundleId());
69+
assertEquals("name", bundleInfoView.getName());
70+
assertEquals("title", bundleInfoView.getTitle());
71+
assertEquals("description", bundleInfoView.getDescription());
72+
assertEquals("category", bundleInfoView.getCategory());
73+
assertEquals("image", bundleInfoView.getImage());
74+
assertFalse(bundleInfoView.getPublicToAll());
75+
assertFalse(bundleInfoView.getPublicToMarketplace());
76+
assertFalse(bundleInfoView.getAgencyProfile());
77+
assertNull(bundleInfoView.getFolderId());
78+
})
79+
.verifyComplete();
80+
81+
//When non-dev create bundle throws error
82+
when(sessionUserService.getVisitorId()).thenReturn(Mono.just("user01"));
83+
when(sessionUserService.getVisitorOrgMemberCache()).thenReturn(Mono.just(new OrgMember("org01", "user01", MemberRole.MEMBER, "NORMAL", 0)));
84+
Mono<BundleInfoView> bundleInfoViewMono2 = bundleApiService.create(new BundleEndpoints.CreateBundleRequest(
85+
"org01",
86+
"name",
87+
"title",
88+
"description",
89+
"category",
90+
"image",
91+
null));
92+
StepVerifier.create(bundleInfoViewMono2)
93+
.expectError()
94+
.verify();
5395
}
5496
}

0 commit comments

Comments
 (0)