private static boolean noHomepageSet(UserDto user) { return user.getHomepageType() == null; }
private Optional<CurrentWsResponse.Homepage> doBuildHomepage(DbSession dbSession, UserDto user) { if (PROJECT.toString().equals(user.getHomepageType())) { return projectHomepage(dbSession, user); } if (APPLICATION.toString().equals(user.getHomepageType()) || PORTFOLIO.toString().equals(user.getHomepageType())) { return applicationAndPortfolioHomepage(dbSession, user); } if (ORGANIZATION.toString().equals(user.getHomepageType())) { return organizationHomepage(dbSession, user); } return of(CurrentWsResponse.Homepage.newBuilder() .setType(CurrentWsResponse.HomepageType.valueOf(user.getHomepageType())) .build()); }
private Optional<CurrentWsResponse.Homepage> projectHomepage(DbSession dbSession, UserDto user) { Optional<ComponentDto> projectOptional = ofNullable(dbClient.componentDao().selectByUuid(dbSession, of(user.getHomepageParameter()).orElse(EMPTY)).orElse(null)); if (shouldCleanProjectHomepage(projectOptional)) { cleanUserHomepageInDb(dbSession, user); return empty(); } CurrentWsResponse.Homepage.Builder homepage = CurrentWsResponse.Homepage.newBuilder() .setType(CurrentWsResponse.HomepageType.valueOf(user.getHomepageType())) .setComponent(projectOptional.get().getKey()); ofNullable(projectOptional.get().getBranch()).ifPresent(homepage::setBranch); return of(homepage.build()); }
private Optional<CurrentWsResponse.Homepage> applicationAndPortfolioHomepage(DbSession dbSession, UserDto user) { Optional<ComponentDto> componentOptional = ofNullable(dbClient.componentDao().selectByUuid(dbSession, of(user.getHomepageParameter()).orElse(EMPTY)).orElse(null)); if (shouldCleanApplicationOrPortfolioHomepage(componentOptional)) { cleanUserHomepageInDb(dbSession, user); return empty(); } return of(CurrentWsResponse.Homepage.newBuilder() .setType(CurrentWsResponse.HomepageType.valueOf(user.getHomepageType())) .setComponent(componentOptional.get().getKey()) .build()); }
private Optional<CurrentWsResponse.Homepage> organizationHomepage(DbSession dbSession, UserDto user) { Optional<OrganizationDto> organizationOptional = dbClient.organizationDao().selectByUuid(dbSession, of(user.getHomepageParameter()).orElse(EMPTY)); if (!organizationOptional.isPresent()) { cleanUserHomepageInDb(dbSession, user); return empty(); } return of(CurrentWsResponse.Homepage.newBuilder() .setType(CurrentWsResponse.HomepageType.valueOf(user.getHomepageType())) .setOrganization(organizationOptional.get().getKey()) .build()); }
@Test public void clean_users_homepage_when_deleting_project() { UserDto userUnderTest = newUserDto().setHomepageType("PROJECT").setHomepageParameter("dummy-project-UUID"); underTest.insert(session, userUnderTest); UserDto untouchedUser = newUserDto().setHomepageType("PROJECT").setHomepageParameter("not-so-dummy-project-UUID"); underTest.insert(session, untouchedUser); session.commit(); underTest.cleanHomepage(session, new ComponentDto().setUuid("dummy-project-UUID")); UserDto userWithAHomepageReloaded = underTest.selectUserById(session, userUnderTest.getId()); assertThat(userWithAHomepageReloaded.getUpdatedAt()).isEqualTo(NOW); assertThat(userWithAHomepageReloaded.getHomepageType()).isNull(); assertThat(userWithAHomepageReloaded.getHomepageParameter()).isNull(); UserDto untouchedUserReloaded = underTest.selectUserById(session, untouchedUser.getId()); assertThat(untouchedUserReloaded.getUpdatedAt()).isEqualTo(untouchedUser.getUpdatedAt()); assertThat(untouchedUserReloaded.getHomepageType()).isEqualTo(untouchedUser.getHomepageType()); assertThat(untouchedUserReloaded.getHomepageParameter()).isEqualTo(untouchedUser.getHomepageParameter()); }
@Test public void clean_users_homepage_when_deleting_organization() { UserDto userUnderTest = newUserDto().setHomepageType("ORGANIZATION").setHomepageParameter("dummy-organization-UUID"); underTest.insert(session, userUnderTest); UserDto untouchedUser = newUserDto().setHomepageType("ORGANIZATION").setHomepageParameter("not-so-dummy-organization-UUID"); underTest.insert(session, untouchedUser); session.commit(); underTest.cleanHomepage(session, new OrganizationDto().setUuid("dummy-organization-UUID")); UserDto userWithAHomepageReloaded = underTest.selectUserById(session, userUnderTest.getId()); assertThat(userWithAHomepageReloaded.getUpdatedAt()).isEqualTo(NOW); assertThat(userWithAHomepageReloaded.getHomepageType()).isNull(); assertThat(userWithAHomepageReloaded.getHomepageParameter()).isNull(); UserDto untouchedUserReloaded = underTest.selectUserById(session, untouchedUser.getId()); assertThat(untouchedUserReloaded.getUpdatedAt()).isEqualTo(untouchedUser.getUpdatedAt()); assertThat(untouchedUserReloaded.getHomepageType()).isEqualTo(untouchedUser.getHomepageType()); assertThat(untouchedUserReloaded.getHomepageParameter()).isEqualTo(untouchedUser.getHomepageParameter()); }
@Test public void clean_user_homepage() { UserDto user = newUserDto().setHomepageType("RANDOM").setHomepageParameter("any-string"); underTest.insert(session, user); session.commit(); underTest.cleanHomepage(session, user); UserDto reloaded = underTest.selectUserById(session, user.getId()); assertThat(reloaded.getUpdatedAt()).isEqualTo(NOW); assertThat(reloaded.getHomepageType()).isNull(); assertThat(reloaded.getHomepageParameter()).isNull(); }
@Test public void set_SonarQube_issues_homepage() { UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "ISSUES") .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("ISSUES"); assertThat(actual.getHomepageParameter()).isNullOrEmpty(); }
@Test public void set_SonarCloud_my_projects_homepage() { UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "MY_PROJECTS") .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("MY_PROJECTS"); assertThat(actual.getHomepageParameter()).isNullOrEmpty(); }
@Test public void set_SonarQube_projects_homepage() { UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "PROJECTS") .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("PROJECTS"); assertThat(actual.getHomepageParameter()).isNullOrEmpty(); }
@Test public void set_portfolios_homepage() { UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "PORTFOLIOS") .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("PORTFOLIOS"); assertThat(actual.getHomepageParameter()).isNullOrEmpty(); }
@Test public void set_SonarCloud_my_issues_homepage() { UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "MY_ISSUES") .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("MY_ISSUES"); assertThat(actual.getHomepageParameter()).isNullOrEmpty(); }
@Test public void set_organization_homepage() { OrganizationDto organization = db.organizations().insert(); UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "ORGANIZATION") .setParam("organization", organization.getKey()) .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("ORGANIZATION"); assertThat(actual.getHomepageParameter()).isEqualTo(organization.getUuid()); }
@Test public void set_project_homepage() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization); UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "PROJECT") .setParam("component", project.getKey()) .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("PROJECT"); assertThat(actual.getHomepageParameter()).isEqualTo(project.uuid()); }
@Test public void set_portfolio_homepage() { OrganizationDto organization = db.organizations().insert(); ComponentDto portfolio = db.components().insertPrivatePortfolio(organization); UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "PORTFOLIO") .setParam(PARAM_COMPONENT, portfolio.getKey()) .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("PORTFOLIO"); assertThat(actual.getHomepageParameter()).isEqualTo(portfolio.uuid()); }
@Test public void set_application_homepage() { OrganizationDto organization = db.organizations().insert(); ComponentDto application = db.components().insertPrivateApplication(organization); UserDto user = db.users().insertUser(); userSession.logIn(user); ws.newRequest() .setMethod("POST") .setParam(PARAM_TYPE, "APPLICATION") .setParam(PARAM_COMPONENT, application.getKey()) .execute(); UserDto actual = db.getDbClient().userDao().selectByLogin(db.getSession(), user.getLogin()); assertThat(actual).isNotNull(); assertThat(actual.getHomepageType()).isEqualTo("APPLICATION"); assertThat(actual.getHomepageParameter()).isEqualTo(application.uuid()); }
@Test public void organization_deletion_also_ensure_that_homepage_on_project_belonging_to_this_organization_if_it_exists_is_cleared() { OrganizationDto organization = db.organizations().insert(); ComponentDto project = db.components().insertPrivateProject(organization); UserDto user = dbClient.userDao().insert(dbSession, newUserDto().setHomepageType("PROJECT").setHomepageParameter(project.uuid())); dbSession.commit(); userSession.logIn().addPermission(ADMINISTER, organization); wsTester.newRequest() .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); UserDto userReloaded = dbClient.userDao().selectUserById(dbSession, user.getId()); assertThat(userReloaded.getHomepageType()).isNull(); assertThat(userReloaded.getHomepageParameter()).isNull(); verify(projectLifeCycleListeners).onProjectsDeleted(ImmutableSet.of(Project.from(project))); }
@Test public void organization_deletion_also_ensure_that_homepage_on_this_organization_if_it_exists_is_cleared() { OrganizationDto organization = db.organizations().insert(); UserDto user = dbClient.userDao().insert(dbSession, newUserDto().setHomepageType("ORGANIZATION").setHomepageParameter(organization.getUuid())); dbSession.commit(); userSession.logIn().addPermission(ADMINISTER, organization); wsTester.newRequest() .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); UserDto userReloaded = dbClient.userDao().selectUserById(dbSession, user.getId()); assertThat(userReloaded.getHomepageType()).isNull(); assertThat(userReloaded.getHomepageParameter()).isNull(); }
@Test public void project_deletion_also_ensure_that_homepage_on_this_project_if_it_exists_is_cleared() throws Exception { ComponentDto project = componentDbTester.insertPrivateProject(); UserDto insert = dbClient.userDao().insert(dbSession, newUserDto().setHomepageType("PROJECT").setHomepageParameter(project.uuid())); dbSession.commit(); userSessionRule.logIn().addProjectPermission(ADMIN, project); new WsTester(new ProjectsWs( new DeleteAction( new ComponentCleanerService(dbClient, new ResourceTypesRule().setAllQualifiers(PROJECT), new TestProjectIndexers()), from(db), dbClient, userSessionRule, projectLifeCycleListeners))) .newPostRequest(CONTROLLER, ACTION) .setParam(PARAM_PROJECT, project.getDbKey()) .execute(); UserDto userReloaded = dbClient.userDao().selectUserById(dbSession, insert.getId()); assertThat(userReloaded.getHomepageType()).isNull(); assertThat(userReloaded.getHomepageParameter()).isNull(); }