From 70eb01631a0cc71551ca6c9eda61dba1db8a6b5a Mon Sep 17 00:00:00 2001 From: Thomasr Date: Thu, 19 Dec 2024 10:27:05 -0500 Subject: [PATCH 1/2] Added slug to organization and application --- .../domain/application/model/Application.java | 11 ++-- .../repository/ApplicationRepository.java | 2 + .../service/ApplicationService.java | 2 + .../service/ApplicationServiceImpl.java | 21 +++++--- .../organization/model/Organization.java | 26 ++++------ .../repository/OrganizationRepository.java | 1 + .../service/OrganizationService.java | 2 + .../service/OrganizationServiceImpl.java | 17 ++++-- .../org/lowcoder/sdk/exception/BizError.java | 4 +- .../application/ApplicationApiService.java | 2 + .../ApplicationApiServiceImpl.java | 5 ++ .../application/ApplicationController.java | 7 ++- .../api/application/ApplicationEndpoints.java | 3 ++ .../OrganizationController.java | 6 +++ .../usermanagement/OrganizationEndpoints.java | 3 ++ .../ApplicationApiServiceTest.java | 21 ++++++++ .../api/service/OrganizationServiceTest.java | 52 +++++++++++++++++++ 17 files changed, 154 insertions(+), 31 deletions(-) create mode 100644 server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java index 0c7d9aae0..7a2201734 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/model/Application.java @@ -3,13 +3,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -import com.github.f4b6a3.uuid.UuidCreator; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; -import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.BooleanUtils; import org.lowcoder.domain.application.ApplicationUtil; import org.lowcoder.domain.application.service.ApplicationRecordService; @@ -20,11 +18,13 @@ import org.lowcoder.sdk.util.JsonUtils; import org.springframework.data.annotation.Transient; import org.springframework.data.mongodb.core.mapping.Document; -import org.springframework.util.StringUtils; import reactor.core.publisher.Mono; import java.time.Instant; -import java.util.*; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; import java.util.function.Supplier; import static com.google.common.base.Suppliers.memoize; @@ -39,6 +39,9 @@ public class Application extends HasIdAndAuditing { @Getter private String gid; + @Setter + @Getter + private String slug; private String organizationId; private String name; private Integer applicationType; diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java index 5cac07fdc..4a984b8da 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/repository/ApplicationRepository.java @@ -67,4 +67,6 @@ public interface ApplicationRepository extends ReactiveMongoRepository findByPublicToAllIsTrueAndAgencyProfileIsTrue(); + Mono existsBySlug(String slug); + } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationService.java index f399a13d1..5e24e228d 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationService.java @@ -73,4 +73,6 @@ public interface ApplicationService { Mono updateLastEditedAt(String applicationId, Instant time, String visitorId); Mono> getLiveDSLByApplicationId(String applicationId); + + Mono updateSlug(String applicationId, String newSlug); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java index c65fef8e0..3b3be763a 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/application/service/ApplicationServiceImpl.java @@ -14,23 +14,16 @@ import org.lowcoder.domain.application.model.ApplicationRequestType; import org.lowcoder.domain.application.model.ApplicationStatus; import org.lowcoder.domain.application.repository.ApplicationRepository; -import org.lowcoder.domain.organization.repository.OrganizationRepository; -import org.lowcoder.domain.organization.service.OrgMemberService; import org.lowcoder.domain.permission.model.ResourceRole; import org.lowcoder.domain.permission.model.ResourceType; import org.lowcoder.domain.permission.service.ResourcePermissionService; -import org.lowcoder.domain.query.model.LibraryQuery; -import org.lowcoder.domain.query.model.LibraryQueryRecord; -import org.lowcoder.domain.query.service.LibraryQueryRecordService; import org.lowcoder.domain.user.repository.UserRepository; -import org.lowcoder.domain.user.service.UserService; import org.lowcoder.infra.annotation.NonEmptyMono; import org.lowcoder.infra.mongo.MongoUpsertHelper; import org.lowcoder.sdk.constants.FieldName; import org.lowcoder.sdk.exception.BizError; import org.lowcoder.sdk.exception.BizException; import org.lowcoder.sdk.models.HasIdAndAuditing; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.google.common.collect.Lists; @@ -353,4 +346,18 @@ public Mono> getLiveDSLByApplicationId(String applicationId) .switchIfEmpty(findById(applicationId) .map(Application::getEditingApplicationDSL)); } + + @Override + public Mono updateSlug(String applicationId, String newSlug) { + return repository.existsBySlug(newSlug).flatMap(exists -> { + if (exists) { + return Mono.error(new BizException(BizError.DUPLICATE_ENTRY, "Slug already exists")); + } + return repository.findById(applicationId) + .flatMap(application -> { + application.setSlug(newSlug); + return repository.save(application); + }); + }); + } } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/model/Organization.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/model/Organization.java index 80d338b48..a0a28662b 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/model/Organization.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/model/Organization.java @@ -1,14 +1,10 @@ package org.lowcoder.domain.organization.model; -import static java.util.Optional.ofNullable; -import static org.apache.commons.lang3.ObjectUtils.firstNonNull; -import static org.lowcoder.infra.util.AssetUtils.toAssetPath; - -import java.util.*; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonView; -import com.github.f4b6a3.uuid.UuidCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import lombok.experimental.SuperBuilder; import lombok.extern.jackson.Jacksonized; import org.apache.commons.lang3.builder.ToStringBuilder; @@ -17,16 +13,14 @@ import org.lowcoder.domain.mongodb.BeforeMongodbWrite; import org.lowcoder.domain.mongodb.MongodbInterceptorContext; import org.lowcoder.sdk.auth.AbstractAuthConfig; -import org.lowcoder.sdk.config.JsonViews; import org.lowcoder.sdk.models.HasIdAndAuditing; import org.springframework.data.mongodb.core.mapping.Document; -import com.fasterxml.jackson.annotation.JsonIgnore; -import com.fasterxml.jackson.annotation.JsonProperty; +import java.util.*; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; +import static java.util.Optional.ofNullable; +import static org.apache.commons.lang3.ObjectUtils.firstNonNull; +import static org.lowcoder.infra.util.AssetUtils.toAssetPath; @Getter @@ -41,6 +35,8 @@ public class Organization extends HasIdAndAuditing implements BeforeMongodbWrite @Getter private String gid; + private String slug; + private String name; private Boolean isAutoGeneratedOrganization; diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java index 782785089..13f7d2399 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/repository/OrganizationRepository.java @@ -27,4 +27,5 @@ public interface OrganizationRepository extends ReactiveMongoRepository findByOrganizationDomain_DomainAndState(String domain, OrganizationState state); Flux findByOrganizationDomainIsNotNull(); + Mono existsBySlug(String slug); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationService.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationService.java index ec199d936..0a07ea502 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationService.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationService.java @@ -48,4 +48,6 @@ public interface OrganizationService { Mono getByDomain(); Mono updateCommonSettings(String orgId, String key, Object value); + + Mono updateSlug(String organizationId, String newSlug); } diff --git a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java index a1358b39f..f1bc1470d 100644 --- a/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java +++ b/server/api-service/lowcoder-domain/src/main/java/org/lowcoder/domain/organization/service/OrganizationServiceImpl.java @@ -16,7 +16,6 @@ import org.lowcoder.domain.organization.repository.OrganizationRepository; import org.lowcoder.domain.user.model.User; import org.lowcoder.domain.user.repository.UserRepository; -import org.lowcoder.domain.user.service.UserService; import org.lowcoder.infra.annotation.PossibleEmptyMono; import org.lowcoder.infra.mongo.MongoUpsertHelper; import org.lowcoder.sdk.config.CommonConfig; @@ -35,10 +34,8 @@ import reactor.core.publisher.Mono; import java.util.Collection; -import java.util.List; import java.util.Locale; -import static org.lowcoder.domain.authentication.AuthenticationService.DEFAULT_AUTH_CONFIG; import static org.lowcoder.domain.organization.model.OrganizationState.ACTIVE; import static org.lowcoder.domain.organization.model.OrganizationState.DELETED; import static org.lowcoder.domain.util.QueryDslUtils.fieldName; @@ -291,4 +288,18 @@ public Mono updateCommonSettings(String orgId, String key, Object value private String buildCommonSettingsUpdateTimeKey(String key) { return key + "_updateTime"; } + + @Override + public Mono updateSlug(String organizationId, String newSlug) { + return repository.existsBySlug(newSlug).flatMap(exists -> { + if (exists) { + return Mono.error(new BizException(BizError.DUPLICATE_ENTRY, "Slug already exists")); + } + return repository.findById(organizationId) + .flatMap(organization -> { + organization.setSlug(newSlug); + return repository.save(organization); + }); + }); + } } diff --git a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/exception/BizError.java b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/exception/BizError.java index 3b92146aa..aac1d9565 100644 --- a/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/exception/BizError.java +++ b/server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/exception/BizError.java @@ -152,7 +152,9 @@ public enum BizError { BUNDLE_NOT_EXIST(500, 6402), BUNDLE_NAME_CONFLICT(500, 6403), ILLEGAL_BUNDLE_PERMISSION_ID(500, 6404), - ; + + //slug 6501 - 6501 + DUPLICATE_ENTRY(403, 6501); static { checkDuplicates(values(), BizError::getBizErrorCode); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java index 0bc50ffc2..23b1bbd3a 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiService.java @@ -62,4 +62,6 @@ Mono grantPermission(String applicationId, // Falk: why we have request.publicToMarketplace() - but here only agencyProfile? Not from request? Mono setApplicationAsAgencyProfile(String applicationId, boolean agencyProfile); + + Mono updateSlug(String applicationId, String slug); } diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java index 8f26aec99..150d9e4c5 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationApiServiceImpl.java @@ -600,6 +600,11 @@ public Mono setApplicationAsAgencyProfile(String applicationId, boolean (applicationId, agencyProfile)); } + @Override + public Mono updateSlug(String applicationId, String slug) { + return applicationService.updateSlug(applicationId, slug); + } + private Map sanitizeDsl(Map applicationDsl) { if (applicationDsl.get("queries") instanceof List queries) { List> list = queries.stream().map(this::doSanitizeQuery).toList(); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java index 6edddcb2d..b765d19f6 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationController.java @@ -1,6 +1,5 @@ package org.lowcoder.api.application; -import io.sentry.protocol.App; import lombok.RequiredArgsConstructor; import org.lowcoder.api.application.view.*; import org.lowcoder.api.framework.view.PageResponseView; @@ -165,6 +164,12 @@ public Mono> updateEditState(@PathVariable String applicat .map(ResponseView::success)); } + @Override + public Mono> updateSlug(@PathVariable String applicationId, @RequestBody String slug) { + return applicationApiService.updateSlug(applicationId, slug) + .map(ResponseView::success); + } + @Override public Mono> getUserHomePage(@RequestParam(required = false, defaultValue = "0") int applicationType) { ApplicationType type = ApplicationType.fromValue(applicationType); diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java index a7f09da7d..ae881227d 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/application/ApplicationEndpoints.java @@ -146,6 +146,9 @@ public Mono> publish(@PathVariable String applicat public Mono> updateEditState(@PathVariable String applicationId, @RequestBody UpdateEditStateRequest updateEditStateRequest); + @PutMapping("/{applicationId}/slug") + public Mono> updateSlug(@PathVariable String applicationId, @RequestBody String slug); + @Operation( tags = TAG_APPLICATION_MANAGEMENT, operationId = "getUserHomepageApplication", diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java index 0825fb0e6..3863eaa2e 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java @@ -166,4 +166,10 @@ public Mono> getOrgApiUsageCount(String orgId, Boolean lastMo .map(ResponseView::success)); } + @Override + public Mono> updateSlug(@PathVariable String orgId, @RequestBody String slug) { + return organizationService.updateSlug(orgId, slug) + .map(ResponseView::success); + } + } \ No newline at end of file diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationEndpoints.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationEndpoints.java index 8fc9d5598..b1547da93 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationEndpoints.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationEndpoints.java @@ -181,6 +181,9 @@ public Mono> removeUserFromOrg(@PathVariable String orgId, @GetMapping("/{orgId}/api-usage") public Mono> getOrgApiUsageCount(@PathVariable String orgId, @RequestParam(required = false) Boolean lastMonthOnly); + @PutMapping("/{orgId}/slug") + Mono> updateSlug(@PathVariable String orgId, @RequestBody String slug); + public record UpdateOrgCommonSettingsRequest(String key, Object value) { } diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java index ede7ed95a..6148be995 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/application/ApplicationApiServiceTest.java @@ -20,6 +20,7 @@ import org.lowcoder.domain.application.model.ApplicationStatus; import org.lowcoder.domain.application.model.ApplicationType; import org.lowcoder.domain.application.service.ApplicationService; +import org.lowcoder.domain.organization.model.Organization; import org.lowcoder.domain.permission.model.ResourceHolder; import org.lowcoder.domain.permission.model.ResourceRole; import org.lowcoder.sdk.constants.FieldName; @@ -324,4 +325,24 @@ public void testAppCreateAndRetrievalByGID() { }) .verifyComplete(); } + + @Test + @WithMockUser + public void testUpdateSlug() { + // Create a dummy application + Mono applicationMono = createApplication("SlugTestApp", null) + .map(applicationView -> applicationView.getApplicationInfoView().getApplicationId()); + + // Assume updateSlug is performed by passing applicationId and the new slug + Mono updatedApplicationMono = applicationMono + .flatMap(applicationId -> applicationApiService.updateSlug(applicationId, "new-slug-value")); + + // Verify the application updates with the new slug + StepVerifier.create(updatedApplicationMono) + .assertNext(application -> { + Assertions.assertNotNull(application.getSlug(), "Slug should not be null"); + Assertions.assertEquals("new-slug-value", application.getSlug(), "Slug should be updated to 'new-slug-value'"); + }) + .verifyComplete(); + } } \ No newline at end of file diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java new file mode 100644 index 000000000..f2e2cc631 --- /dev/null +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java @@ -0,0 +1,52 @@ +package org.lowcoder.api.service; + +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestInstance; +import org.lowcoder.api.common.mockuser.WithMockUser; +import org.lowcoder.domain.organization.model.Organization; +import org.lowcoder.domain.organization.service.OrganizationService; +import org.lowcoder.sdk.models.HasIdAndAuditing; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +@SpringBootTest +//@RunWith(SpringRunner.class) +@ActiveProfiles("OrganizationApiServiceTest") +@Slf4j(topic = "OrganizationApiServiceTest") + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class OrganizationServiceTest { + + private OrganizationService organizationService; + + private Mono createOrganization(String name) { + Organization organization = Organization.builder() + .name(name) + .build(); + return organizationService.create(organization, "", false); + } + + @Test + @WithMockUser + public void testUpdateSlug() { + // Create a dummy organization + Mono organizationMono = createOrganization("SlugTestOrganization") + .map(HasIdAndAuditing::getId); + + // Assume updateSlug is performed by passing organizationId and the new slug + Mono updatedOrganizationMono = organizationMono + .flatMap(organizationId -> organizationService.updateSlug(organizationId, "new-slug-value")); + + // Verify the organization updates with the new slug + StepVerifier.create(updatedOrganizationMono) + .assertNext(organization -> { + Assertions.assertNotNull(organization.getSlug(), "Slug should not be null"); + Assertions.assertEquals("new-slug-value", organization.getSlug(), "Slug should be updated to 'new-slug-value'"); + }) + .verifyComplete(); + } +} From db6f7e3d7b1c20f072a4e44455bfb2ab30a1dd30 Mon Sep 17 00:00:00 2001 From: Thomasr Date: Thu, 19 Dec 2024 10:33:44 -0500 Subject: [PATCH 2/2] Fix service autowire in test --- .../org/lowcoder/api/service/OrganizationServiceTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java index f2e2cc631..8083d2ebd 100644 --- a/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java +++ b/server/api-service/lowcoder-server/src/test/java/org/lowcoder/api/service/OrganizationServiceTest.java @@ -8,6 +8,7 @@ import org.lowcoder.domain.organization.model.Organization; import org.lowcoder.domain.organization.service.OrganizationService; import org.lowcoder.sdk.models.HasIdAndAuditing; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; import reactor.core.publisher.Mono; @@ -21,13 +22,14 @@ @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class OrganizationServiceTest { + @Autowired private OrganizationService organizationService; private Mono createOrganization(String name) { Organization organization = Organization.builder() .name(name) .build(); - return organizationService.create(organization, "", false); + return organizationService.create(organization, "user01", false); } @Test