feat: set modified by during create, clone, fork, import app (#7452)

This commit is contained in:
Nayan 2021-09-17 17:10:08 +06:00 committed by GitHub
parent 0ef0da041b
commit 28adc4e928
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 5 deletions

View File

@ -240,7 +240,12 @@ public class ApplicationPageServiceImpl implements ApplicationPageService {
Mono<Application> applicationWithPoliciesMono = setApplicationPolicies(userMono, orgId, application);
return applicationWithPoliciesMono
.flatMap(applicationService::createDefault)
.zipWith(userMono)
.flatMap(tuple -> {
Application application1 = tuple.getT1();
application1.setModifiedBy(tuple.getT2().getUsername()); // setting modified by to current user
return applicationService.createDefault(application1);
})
.flatMap(savedApplication -> {
PageDTO page = new PageDTO();
@ -464,7 +469,12 @@ public class ApplicationPageServiceImpl implements ApplicationPageService {
// First set the correct policies for the new cloned application
return setApplicationPolicies(userMono, sourceApplication.getOrganizationId(), newApplication)
// Create the cloned application with the new name and policies before proceeding further.
.flatMap(applicationService::createDefault)
.zipWith(userMono)
.flatMap(applicationUserTuple2 -> {
Application application1 = applicationUserTuple2.getT1();
application1.setModifiedBy(applicationUserTuple2.getT2().getUsername()); // setting modified by to current user
return applicationService.createDefault(application1);
})
// Now fetch the pages of the source application, clone and add them to this new application
.flatMap(savedApplication -> Flux.fromIterable(sourceApplication.getPages())
.flatMap(applicationPage -> {

View File

@ -364,7 +364,7 @@ public class ImportExportApplicationService {
List<NewPage> importedNewPageList = importedDoc.getPageList();
List<NewAction> importedNewActionList = importedDoc.getActionList();
Mono<User> currUserMono = sessionUserService.getCurrentUser();
Mono<User> currUserMono = sessionUserService.getCurrentUser().cache();
final Flux<Datasource> existingDatasourceFlux = datasourceRepository
.findAllByOrganizationId(organizationId, AclPermission.MANAGE_DATASOURCES)
.cache();
@ -450,6 +450,12 @@ public class ImportExportApplicationService {
// 2. Check for possible duplicate names,
// 3. Save the updated application
applicationPageService.setApplicationPolicies(currUserMono, organizationId, importedApplication)
.zipWith(currUserMono)
.map(objects -> {
Application application = objects.getT1();
application.setModifiedBy(objects.getT2().getUsername());
return application;
})
.flatMap(application -> {
if (applicationId != null) {
return applicationService.findById(applicationId, AclPermission.MANAGE_APPLICATIONS)

View File

@ -166,6 +166,8 @@ public class ApplicationServiceTest {
assertThat(application.getPolicies()).isNotEmpty();
assertThat(application.getPolicies()).containsAll(Set.of(manageAppPolicy, readAppPolicy));
assertThat(application.getOrganizationId().equals(orgId));
assertThat(application.getModifiedBy()).isEqualTo("api_user");
assertThat(application.getUpdatedAt()).isNotNull();
})
.verifyComplete();
}
@ -625,7 +627,7 @@ public class ApplicationServiceTest {
@Test
@WithUserDetails(value = "api_user")
public void createCloneApplication() {
public void cloneApplicationTest() {
Application testApplication = new Application();
testApplication.setName("ApplicationServiceTest Clone Source TestApp");
@ -658,7 +660,7 @@ public class ApplicationServiceTest {
StepVerifier
.create(Mono.zip(applicationMono, pageListMono))
.assertNext(tuple -> {
Application application = tuple.getT1();
Application application = tuple.getT1(); // cloned application
List<PageDTO> pageList = tuple.getT2();
assertThat(application).isNotNull();
assertThat(application.isAppIsExample()).isFalse();
@ -666,6 +668,8 @@ public class ApplicationServiceTest {
assertThat(application.getName().equals("ApplicationServiceTest Clone Source TestApp Copy"));
assertThat(application.getPolicies()).containsAll(Set.of(manageAppPolicy, readAppPolicy));
assertThat(application.getOrganizationId().equals(orgId));
assertThat(application.getModifiedBy()).isEqualTo("api_user");
assertThat(application.getUpdatedAt()).isNotNull();
List<ApplicationPage> pages = application.getPages();
Set<String> pageIdsFromApplication = pages.stream().map(page -> page.getId()).collect(Collectors.toSet());
Set<String> pageIdsFromDb = pageList.stream().map(page -> page.getId()).collect(Collectors.toSet());

View File

@ -608,6 +608,8 @@ public class ImportExportApplicationServiceTests {
assertThat(application.getPages()).hasSize(2);
assertThat(application.getPolicies()).containsAll(Set.of(manageAppPolicy, readAppPolicy));
assertThat(application.getPublishedPages()).hasSize(1);
assertThat(application.getModifiedBy()).isEqualTo("api_user");
assertThat(application.getUpdatedAt()).isNotNull();
assertThat(datasourceList).isNotEmpty();
datasourceList.forEach(datasource -> {