@Test public void return_default_quality_gate_for_project() { ComponentDto project = db.components().insertPrivateProject(); QualityGateDto dbQualityGate = db.qualityGates().createDefaultQualityGate(db.getDefaultOrganization(), qg -> qg.setName("Sonar way")); Optional<QualityGateFinder.QualityGateData> result = underTest.getQualityGate(dbSession, db.getDefaultOrganization(), project); assertThat(result).isPresent(); assertThat(result.get().getQualityGate().getId()).isEqualTo(dbQualityGate.getId()); assertThat(result.get().isDefault()).isTrue(); }
@Test public void return_project_quality_gate_over_default() { ComponentDto project = db.components().insertPrivateProject(); db.qualityGates().createDefaultQualityGate(db.getDefaultOrganization(),qg -> qg.setName("Sonar way")); QualityGateDto dbQualityGate = db.qualityGates().insertQualityGate(db.getDefaultOrganization(), qg -> qg.setName("My team QG")); db.qualityGates().associateProjectToQualityGate(project, dbQualityGate); Optional<QualityGateFinder.QualityGateData> result = underTest.getQualityGate(dbSession, db.getDefaultOrganization(), project); assertThat(result).isPresent(); assertThat(result.get().getQualityGate().getId()).isEqualTo(dbQualityGate.getId()); assertThat(result.get().isDefault()).isFalse(); }
private ComponentDto insertProject(OrganizationDto organization) { db.qualityGates().createDefaultQualityGate(organization); return db.components().insertPrivateProject(organization, "abcd", p -> p.setDbKey("polop").setName("Polop").setDescription("test project")); }
@Test public void canUpdateProjectVisibilityToPrivate_is_true_if_logged_in_as_project_administrator_and_extension_returns_false() { OrganizationDto org = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(org); ComponentDto project = db.components().insertPublicProject(org); init(createPages()); userSession.logIn().addProjectPermission(UserRole.ADMIN, project); when(billingValidations.canUpdateProjectVisibilityToPrivate(any(BillingValidations.Organization.class))).thenReturn(false); assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canUpdateProjectVisibilityToPrivate\": false}}"); userSession.logIn().addProjectPermission(UserRole.ADMIN, project); when(billingValidations.canUpdateProjectVisibilityToPrivate(any(BillingValidations.Organization.class))).thenReturn(true); assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canUpdateProjectVisibilityToPrivate\": true}}"); }
@Test public void fail_when_default_qgate_defined_does_not_exists() { ComponentDto project = db.components().insertPrivateProject(); QualityGateDto dbQualityGate = db.qualityGates().createDefaultQualityGate(db.getDefaultOrganization(), qg -> qg.setName("Sonar way")); db.getDbClient().qualityGateDao().delete(dbQualityGate, dbSession); db.commit(); assertThat(underTest.getQualityGate(dbSession, db.getDefaultOrganization(), project)).isEmpty(); }
@Test public void fail_to_delete_default_quality_gate() { OrganizationDto organization = db.organizations().insert(); QualityGateDto defaultQualityGate = db.qualityGates().createDefaultQualityGate(organization); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage("The default quality gate cannot be removed"); ws.newRequest() .setParam(PARAM_ID, valueOf(defaultQualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
@Test public void delete_quality_gate() { OrganizationDto organization = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(organization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); ws.newRequest() .setParam(PARAM_ID, qualityGate.getId().toString()) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndId(dbSession, organization, qualityGate.getId())).isNull(); }
@Test public void delete_quality_gate_if_non_default_when_a_default_exist() { OrganizationDto organization = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(organization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); ws.newRequest() .setParam(PARAM_ID, valueOf(qualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndId(dbSession, organization, qualityGate.getId())).isNull(); }
@Test public void fail_when_not_quality_gates_administer() { OrganizationDto organization = db.organizations().insert(); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); db.qualityGates().createDefaultQualityGate(organization); userSession.logIn("john").addPermission(ADMINISTER_QUALITY_PROFILES, organization); expectedException.expect(ForbiddenException.class); ws.newRequest() .setParam(PARAM_ID, qualityGate.getId().toString()) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
@Test public void default_organization_is_used_when_no_organization_parameter() { OrganizationDto defaultOrganization = db.getDefaultOrganization(); db.qualityGates().createDefaultQualityGate(defaultOrganization); userSession.addPermission(ADMINISTER_QUALITY_GATES, defaultOrganization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(defaultOrganization); OrganizationDto otherOrganization = db.organizations().insert(); QGateWithOrgDto otherQualityGate = db.qualityGates().insertQualityGate(otherOrganization); ws.newRequest() .setParam(PARAM_ID, valueOf(qualityGate.getId())) .execute(); assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndId(dbSession, defaultOrganization, qualityGate.getId())).isNull(); }
@Test public void return_default_quality_gate() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org")); ComponentDto project = db.components().insertPrivateProject(organization); db.qualityGates().createDefaultQualityGate(organization, qg -> qg.setName("Sonar way")); userSession.addProjectPermission(UserRole.USER, project); init(); executeAndVerify(project.getDbKey(), "return_default_quality_gate.json"); }
@Test public void delete_quality_gate_and_any_association_to_any_project() { OrganizationDto organization = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(organization); QGateWithOrgDto qualityGate = db.qualityGates().insertQualityGate(organization); ComponentDto prj1 = db.components().insertPublicProject(organization); ComponentDto prj2 = db.components().insertPublicProject(organization); db.qualityGates().associateProjectToQualityGate(prj1, qualityGate); db.qualityGates().associateProjectToQualityGate(prj2, qualityGate); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); ws.newRequest() .setParam(PARAM_ID, valueOf(qualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); assertThat(db.getDbClient().qualityGateDao().selectByOrganizationAndId(dbSession, organization, qualityGate.getId())) .isNull(); assertThat(db.getDbClient().propertiesDao().selectProjectProperties(prj1.getDbKey())) .isEmpty(); assertThat(db.getDbClient().propertiesDao().selectProjectProperties(prj2.getDbKey())) .isEmpty(); }
@Test public void does_not_delete_built_in_quality_gate() { OrganizationDto organization = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(organization); QualityGateDto builtInQualityGate = db.qualityGates().insertBuiltInQualityGate(); db.getDbClient().qualityGateDao().associate(db.getSession(), Uuids.createFast(), organization, builtInQualityGate); db.commit(); userSession.addPermission(ADMINISTER_QUALITY_GATES, organization); expectedException.expect(IllegalArgumentException.class); expectedException.expectMessage(format("Operation forbidden for built-in Quality Gate '%s'", builtInQualityGate.getName())); ws.newRequest() .setParam(PARAM_ID, valueOf(builtInQualityGate.getId())) .setParam(PARAM_ORGANIZATION, organization.getKey()) .execute(); }
@Test public void should_return_private_flag_for_project() { OrganizationDto org = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(org); ComponentDto project = db.components().insertPrivateProject(org); init(); userSession.logIn() .addProjectPermission(UserRole.ADMIN, project) .addPermission(OrganizationPermission.ADMINISTER, org); assertJson(execute(project.getDbKey())).isSimilarTo("{\"visibility\": \"private\"}"); }
@Test public void should_return_public_flag_for_project() { OrganizationDto org = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(org); ComponentDto project = db.components().insertPublicProject(org); init(); userSession.logIn() .addProjectPermission(UserRole.ADMIN, project) .addPermission(OrganizationPermission.ADMINISTER, org); assertJson(execute(project.getDbKey())).isSimilarTo("{\"visibility\": \"public\"}"); }
@Test public void return_quality_gate_defined_on_project() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org")); db.qualityGates().createDefaultQualityGate(organization); ComponentDto project = db.components().insertPrivateProject(organization); QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way")); db.qualityGates().associateProjectToQualityGate(project, qualityGateDto); userSession.addProjectPermission(UserRole.USER, project); init(); executeAndVerify(project.getDbKey(), "return_quality_gate.json"); }
@Test public void return_extensions_for_application() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org")); db.qualityGates().createDefaultQualityGate(organization); ComponentDto project = db.components().insertPrivateProject(organization); Page page = Page.builder("my_plugin/app_page") .setName("App Page") .setScope(COMPONENT) .setComponentQualifiers(Qualifier.VIEW, Qualifier.APP) .build(); ComponentDto application = componentDbTester.insertPublicApplication(organization); QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way")); db.qualityGates().associateProjectToQualityGate(project, qualityGateDto); userSession.registerComponents(application); init(page); String result = ws.newRequest() .setParam(PARAM_COMPONENT, application.getDbKey()) .execute().getInput(); assertThat(result).contains("my_plugin/app_page"); }
@Test public void return_component_info_when_file_on_master() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org2")); db.qualityGates().createDefaultQualityGate(organization); ComponentDto main = componentDbTester.insertMainBranch(organization, p -> p.setName("Sample"), p -> p.setDbKey("sample")); userSession.addProjectPermission(UserRole.USER, main); init(); ComponentDto dirDto = componentDbTester.insertComponent(newDirectory(main, "src")); ComponentDto fileDto = componentDbTester.insertComponent(newFileDto(main, dirDto) .setUuid("abcd") .setName("Main.xoo") .setDbKey("sample:src/Main.xoo")); executeAndVerify(fileDto.getDbKey(), "return_component_info_when_file_on_master.json"); }
@Test public void canApplyPermissionTemplate_is_true_if_logged_in_as_organization_administrator() { OrganizationDto org = db.organizations().insert(); db.qualityGates().createDefaultQualityGate(org); ComponentDto project = db.components().insertPrivateProject(org); init(createPages()); userSession.logIn() .addProjectPermission(UserRole.ADMIN, project) .addPermission(OrganizationPermission.ADMINISTER, org); assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canApplyPermissionTemplate\": true}}"); userSession.logIn() .addProjectPermission(UserRole.ADMIN, project); assertJson(execute(project.getDbKey())).isSimilarTo("{\"configuration\": {\"canApplyPermissionTemplate\": false}}"); }
@Test public void quality_gate_for_a_long_living_branch() { OrganizationDto organization = db.organizations().insert(o -> o.setKey("my-org")); db.qualityGates().createDefaultQualityGate(organization); ComponentDto project = db.components().insertPrivateProject(organization); ComponentDto longLivingBranch = db.components().insertProjectBranch(project, b -> b.setBranchType(BranchType.LONG)); QualityGateDto qualityGateDto = db.qualityGates().insertQualityGate(organization, qg -> qg.setName("Sonar way")); db.qualityGates().associateProjectToQualityGate(project, qualityGateDto); userSession.addProjectPermission(UserRole.USER, project); init(); String json = ws.newRequest() .setParam("componentKey", longLivingBranch.getKey()) .setParam("branch", longLivingBranch.getBranch()) .execute() .getInput(); verify(json, "return_quality_gate.json"); }