diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/CertificateAuthority.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/CertificateAuthority.java index 31427c6a45..60083e9ea7 100644 --- a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/CertificateAuthority.java +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/CertificateAuthority.java @@ -37,6 +37,7 @@ @Accessors(chain = true) public class CertificateAuthority { private Integer id; + private Integer certificationServiceId; private CertificateDetails caCertificate; private List ocspResponders; private Instant createdAt; diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/OcspResponderCertificateDetails.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/OcspResponderCertificateDetails.java new file mode 100644 index 0000000000..1ead7b8d94 --- /dev/null +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/dto/OcspResponderCertificateDetails.java @@ -0,0 +1,40 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + *

+ * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + *

+ * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + *

+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package org.niis.xroad.cs.admin.api.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class OcspResponderCertificateDetails extends CertificateDetails { + + private Integer certificationServiceId; + private Integer intermediateCaId; + +} diff --git a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/OcspRespondersService.java b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/OcspRespondersService.java index f9e73d4ce9..c013a4e145 100644 --- a/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/OcspRespondersService.java +++ b/src/central-server/admin-service/core-api/src/main/java/org/niis/xroad/cs/admin/api/service/OcspRespondersService.java @@ -25,12 +25,12 @@ */ package org.niis.xroad.cs.admin.api.service; -import org.niis.xroad.cs.admin.api.dto.CertificateDetails; import org.niis.xroad.cs.admin.api.dto.OcspResponder; +import org.niis.xroad.cs.admin.api.dto.OcspResponderCertificateDetails; import org.niis.xroad.cs.admin.api.dto.OcspResponderRequest; public interface OcspRespondersService { - CertificateDetails getOcspResponderCertificateDetails(Integer id); + OcspResponderCertificateDetails getOcspResponderCertificateDetails(Integer id); OcspResponder update(OcspResponderRequest updateRequest); diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CaInfoConverter.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CaInfoConverter.java index 244755939e..3a41abf04a 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CaInfoConverter.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CaInfoConverter.java @@ -52,6 +52,7 @@ public class CaInfoConverter { public CertificateAuthority toCertificateAuthority(CaInfoEntity caInfo) { return new CertificateAuthority() .setId(caInfo.getId()) + .setCertificationServiceId(caInfo.getApprovedCa() == null ? null : caInfo.getApprovedCa().getId()) .setCaCertificate(certConverter.toCertificateDetails(caInfo.getCert())) .setOcspResponders(caInfo.getOcspInfos().stream() .map(ocspResponderConverter::toModel) diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CertificateConverter.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CertificateConverter.java index 82b13fed83..18e3fab0da 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CertificateConverter.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/converter/CertificateConverter.java @@ -32,8 +32,10 @@ import lombok.RequiredArgsConstructor; import org.niis.xroad.common.core.exception.XrdRuntimeException; import org.niis.xroad.cs.admin.api.dto.CertificateDetails; +import org.niis.xroad.cs.admin.api.dto.OcspResponderCertificateDetails; import org.niis.xroad.cs.admin.api.dto.SecurityServerAuthenticationCertificateDetails; import org.niis.xroad.cs.admin.core.entity.AuthCertEntity; +import org.niis.xroad.cs.admin.core.entity.OcspInfoEntity; import org.springframework.stereotype.Component; import java.io.IOException; @@ -70,6 +72,19 @@ public CertificateDetails toCertificateDetails(final byte[] cert) { } } + public OcspResponderCertificateDetails toCertificateDetails(final OcspInfoEntity ocspInfo) { + if (ocspInfo.getCert() == null) { + return null; + } + try { + OcspResponderCertificateDetails certificateDetails = new OcspResponderCertificateDetails(); + populateCertificateDetails(certificateDetails, ocspInfo.getCert()); + return certificateDetails; + } catch (Exception e) { + throw XrdRuntimeException.systemException(e); + } + } + public CertificateDetails toCertificateDetails(final X509Certificate certificate) { try { var certificateDetails = new CertificateDetails(); diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/repository/ApprovedCaRepository.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/repository/ApprovedCaRepository.java index 61e718fe9b..23088bd47c 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/repository/ApprovedCaRepository.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/repository/ApprovedCaRepository.java @@ -26,7 +26,10 @@ package org.niis.xroad.cs.admin.core.repository; import org.niis.xroad.cs.admin.core.entity.ApprovedCaEntity; +import org.niis.xroad.cs.admin.core.entity.CaInfoEntity; -public interface ApprovedCaRepository extends GenericRepository { +import java.util.Optional; +public interface ApprovedCaRepository extends GenericRepository { + Optional findApprovedCaIdByCaId(CaInfoEntity caInfoEntity); } diff --git a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImpl.java b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImpl.java index be186f1e3f..b0de7682c3 100644 --- a/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImpl.java +++ b/src/central-server/admin-service/core/src/main/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImpl.java @@ -28,13 +28,14 @@ import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import org.niis.xroad.common.exception.NotFoundException; -import org.niis.xroad.cs.admin.api.dto.CertificateDetails; import org.niis.xroad.cs.admin.api.dto.OcspResponder; +import org.niis.xroad.cs.admin.api.dto.OcspResponderCertificateDetails; import org.niis.xroad.cs.admin.api.dto.OcspResponderRequest; import org.niis.xroad.cs.admin.api.service.OcspRespondersService; import org.niis.xroad.cs.admin.core.converter.CertificateConverter; import org.niis.xroad.cs.admin.core.converter.OcspResponderConverter; import org.niis.xroad.cs.admin.core.entity.OcspInfoEntity; +import org.niis.xroad.cs.admin.core.repository.ApprovedCaRepository; import org.niis.xroad.cs.admin.core.repository.OcspInfoRepository; import org.niis.xroad.cs.admin.core.validation.UrlValidator; import org.niis.xroad.restapi.config.audit.AuditDataHelper; @@ -55,6 +56,7 @@ @RequiredArgsConstructor public class OcspRespondersServiceImpl implements OcspRespondersService { private final OcspInfoRepository ocspInfoRepository; + private final ApprovedCaRepository approvedCaRepository; private final CertificateConverter certConverter; private final OcspResponderConverter ocspResponderConverter; @@ -62,13 +64,27 @@ public class OcspRespondersServiceImpl implements OcspRespondersService { private final UrlValidator urlValidator; @Override - public CertificateDetails getOcspResponderCertificateDetails(Integer id) { + public OcspResponderCertificateDetails getOcspResponderCertificateDetails(Integer id) { return ocspInfoRepository.findById(id) - .map(OcspInfoEntity::getCert) - .map(certConverter::toCertificateDetails) + .filter(ocsp -> ocsp.getCert() != null) + .map(ocsp -> attachCaIds(ocsp, certConverter.toCertificateDetails(ocsp))) .orElseThrow(() -> new NotFoundException(OCSP_RESPONDER_NOT_FOUND.build())); } + private OcspResponderCertificateDetails attachCaIds(final OcspInfoEntity ocspInfo, + final OcspResponderCertificateDetails certificateDetails) { + if (ocspInfo.getCaInfo().getApprovedCa() == null) { + certificateDetails.setCertificationServiceId( + approvedCaRepository.findApprovedCaIdByCaId(ocspInfo.getCaInfo()).orElse(null) + ); + } else { + certificateDetails.setIntermediateCaId(ocspInfo.getCaInfo().getId()); + certificateDetails.setCertificationServiceId(ocspInfo.getCaInfo().getApprovedCa().getId()); + } + + return certificateDetails; + } + private OcspInfoEntity get(Integer id) { return ocspInfoRepository.findById(id) .orElseThrow(() -> new NotFoundException(OCSP_RESPONDER_NOT_FOUND.build())); diff --git a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/mapper/ApprovedTsaMapperTest.java b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/mapper/ApprovedTsaMapperTest.java index d503bd6623..61ae32d94d 100644 --- a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/mapper/ApprovedTsaMapperTest.java +++ b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/entity/mapper/ApprovedTsaMapperTest.java @@ -35,6 +35,7 @@ import org.niis.xroad.cs.admin.core.converter.CertificateConverter; import org.niis.xroad.cs.admin.core.converter.KeyUsageConverter; import org.niis.xroad.cs.admin.core.entity.ApprovedTsaEntity; +import org.niis.xroad.cs.admin.core.repository.ApprovedCaRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -51,7 +52,7 @@ import static org.niis.xroad.cs.admin.api.dto.KeyUsageEnum.NON_REPUDIATION; @ActiveProfiles("test") -@SpringBootTest(classes = {ApprovedTsaMapperImpl.class, CertificateConverter.class, KeyUsageConverter.class}) +@SpringBootTest(classes = {ApprovedTsaMapperImpl.class, CertificateConverter.class, KeyUsageConverter.class, ApprovedCaRepository.class}) class ApprovedTsaMapperTest { private static final int ID = 123; diff --git a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImplTest.java b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImplTest.java index bc6fad0fae..72fdc5c20f 100644 --- a/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImplTest.java +++ b/src/central-server/admin-service/core/src/test/java/org/niis/xroad/cs/admin/core/service/OcspRespondersServiceImplTest.java @@ -77,6 +77,8 @@ class OcspRespondersServiceImplTest { @Mock private OcspInfoRepository ocspInfoRepository; @Mock + private ApprovedCaRepository approvedCaRepository; + @Mock private AuditDataHelper auditDataHelper; @Mock private UrlValidator urlValidator; diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/CertificateDetailsDtoConverter.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/CertificateDetailsDtoConverter.java index e1ec35e0c0..0f14b281ee 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/CertificateDetailsDtoConverter.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/converter/CertificateDetailsDtoConverter.java @@ -31,8 +31,10 @@ import org.mapstruct.MappingConstants; import org.niis.xroad.cs.admin.api.converter.GenericMapper; import org.niis.xroad.cs.admin.api.dto.CertificateDetails; +import org.niis.xroad.cs.admin.api.dto.OcspResponderCertificateDetails; import org.niis.xroad.cs.admin.api.dto.SecurityServerAuthenticationCertificateDetails; import org.niis.xroad.cs.openapi.model.CertificateDetailsDto; +import org.niis.xroad.cs.openapi.model.OcspResponderCertificateDetailsDto; import org.niis.xroad.cs.openapi.model.SecurityServerAuthenticationCertificateDetailsDto; @Mapper(componentModel = MappingConstants.ComponentModel.SPRING) @@ -40,6 +42,8 @@ public interface CertificateDetailsDtoConverter extends GenericMapper { CertificateDetailsDto convert(CertificateDetails certificateDetails); + OcspResponderCertificateDetailsDto convert(OcspResponderCertificateDetails certificateDetails); + SecurityServerAuthenticationCertificateDetailsDto convert(SecurityServerAuthenticationCertificateDetails certificateDetails); } diff --git a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/OcspRespondersController.java b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/OcspRespondersController.java index 4c9dffb942..373e85baf7 100644 --- a/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/OcspRespondersController.java +++ b/src/central-server/admin-service/infra-api-rest/src/main/java/org/niis/xroad/cs/admin/rest/api/openapi/OcspRespondersController.java @@ -33,7 +33,7 @@ import org.niis.xroad.cs.admin.rest.api.converter.CertificateDetailsDtoConverter; import org.niis.xroad.cs.admin.rest.api.converter.OcspResponderDtoConverter; import org.niis.xroad.cs.openapi.OcspRespondersApi; -import org.niis.xroad.cs.openapi.model.CertificateDetailsDto; +import org.niis.xroad.cs.openapi.model.OcspResponderCertificateDetailsDto; import org.niis.xroad.cs.openapi.model.OcspResponderDto; import org.niis.xroad.restapi.config.audit.AuditEventMethod; import org.niis.xroad.restapi.config.audit.RestApiAuditEvent; @@ -91,7 +91,7 @@ public ResponseEntity updateOcspResponder(Integer id, String u @Override @PreAuthorize("hasAuthority('VIEW_APPROVED_CA_DETAILS')") - public ResponseEntity getOcspRespondersCertificate(Integer id) { + public ResponseEntity getOcspRespondersCertificate(Integer id) { return ok(certificateDetailsDtoConverter.convert(ocspRespondersService.getOcspResponderCertificateDetails(id))); } } diff --git a/src/central-server/admin-service/infra-jpa/src/main/java/org/niis/xroad/cs/admin/jpa/repository/JpaApprovedCaRepository.java b/src/central-server/admin-service/infra-jpa/src/main/java/org/niis/xroad/cs/admin/jpa/repository/JpaApprovedCaRepository.java index 64aa044bee..890dd8dc3d 100644 --- a/src/central-server/admin-service/infra-jpa/src/main/java/org/niis/xroad/cs/admin/jpa/repository/JpaApprovedCaRepository.java +++ b/src/central-server/admin-service/infra-jpa/src/main/java/org/niis/xroad/cs/admin/jpa/repository/JpaApprovedCaRepository.java @@ -26,11 +26,16 @@ package org.niis.xroad.cs.admin.jpa.repository; import org.niis.xroad.cs.admin.core.entity.ApprovedCaEntity; +import org.niis.xroad.cs.admin.core.entity.CaInfoEntity; import org.niis.xroad.cs.admin.core.repository.ApprovedCaRepository; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface JpaApprovedCaRepository extends JpaRepository, ApprovedCaRepository { - + @Query("select aca.id FROM ApprovedCaEntity aca WHERE aca.caInfo = :caInfoEntity") + Optional findApprovedCaIdByCaId(CaInfoEntity caInfoEntity); } diff --git a/src/central-server/admin-service/int-test/src/intTest/java/org/niis/xroad/cs/test/glue/OcspRespondersApiStepDefs.java b/src/central-server/admin-service/int-test/src/intTest/java/org/niis/xroad/cs/test/glue/OcspRespondersApiStepDefs.java index 9cd4549017..bcb23871af 100644 --- a/src/central-server/admin-service/int-test/src/intTest/java/org/niis/xroad/cs/test/glue/OcspRespondersApiStepDefs.java +++ b/src/central-server/admin-service/int-test/src/intTest/java/org/niis/xroad/cs/test/glue/OcspRespondersApiStepDefs.java @@ -30,7 +30,7 @@ import com.nortal.test.asserts.Assertion; import com.nortal.test.asserts.AssertionOperation; import io.cucumber.java.en.Step; -import org.niis.xroad.cs.openapi.model.CertificateDetailsDto; +import org.niis.xroad.cs.openapi.model.OcspResponderCertificateDetailsDto; import org.niis.xroad.cs.openapi.model.OcspResponderDto; import org.niis.xroad.cs.test.api.FeignOcspRespondersApi; import org.springframework.beans.factory.annotation.Autowired; @@ -75,7 +75,7 @@ public void updateOcspResponderUrl() { public void ocspResponderUrlAndCertificateIsUpdated() throws Exception { Integer ocspResponderId = getRequiredStepData(OCSP_RESPONDER_ID); - final ResponseEntity certificateResponse = ocspRespondersApi + final ResponseEntity certificateResponse = ocspRespondersApi .getOcspRespondersCertificate(ocspResponderId); getKeyOldOcspResponderCertHash = certificateResponse.getBody().getHash(); @@ -100,7 +100,7 @@ public void ocspResponderUrlAndCertificateIsUpdated() throws Exception { public void theOCSPResponderCertificateWasUpdated() { Integer ocspResponderId = getRequiredStepData(OCSP_RESPONDER_ID); - final ResponseEntity certificateResponse = ocspRespondersApi + final ResponseEntity certificateResponse = ocspRespondersApi .getOcspRespondersCertificate(ocspResponderId); validate(certificateResponse) diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/GlobalGroupDetailsStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/GlobalGroupDetailsStepDefs.java index 0720ccf79d..56d8a71abd 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/GlobalGroupDetailsStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/GlobalGroupDetailsStepDefs.java @@ -124,7 +124,7 @@ public void membersAreSelected(final DataTable identifiers) { identifiers.asList() .forEach(identifier -> globalGroupDetailsPage.getAddMembersDialogObj().rowCheckbox(identifier) .$("i") - .shouldHave(cssClass("mdi-checkbox-marked"))); + .shouldHave(cssClass("check_box"))); } @Step("user filters selectable members list with query: {string}") diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/ManagementRequestsStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/ManagementRequestsStepDefs.java index bbcb232cd3..1c9004a767 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/ManagementRequestsStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/ManagementRequestsStepDefs.java @@ -45,7 +45,7 @@ import static com.codeborne.selenide.Condition.focused; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Condition.visible; -import static org.niis.xroad.common.test.ui.utils.VuetifyHelper.vCheckbox; +import static org.niis.xroad.common.test.ui.utils.VuetifyHelper.vSwitch; import static org.niis.xroad.common.test.ui.utils.VuetifyHelper.vTextField; import static org.niis.xroad.cs.test.ui.constants.Constants.getSecurityServerId; import static org.niis.xroad.cs.test.ui.glue.BaseUiStepDefs.StepDataKey.MANAGEMENT_REQUEST_ID; @@ -89,7 +89,7 @@ private void userIsAbleToSortByFieldAndOrder(String name, String defaultOrder) { } private String orderDirectionClass(final boolean descending) { - return descending ? "mdi-arrow-down" : "mdi-arrow-up"; + return descending ? "arrow_downward" : "arrow_upward"; } @Step("the user clicks on search icon") @@ -228,7 +228,6 @@ public void userIsAbleToDeclineManagementRequestInRow(String securityServerCode, commonPageObj.dialog.btnCancel().shouldBe(Condition.enabled); commonPageObj.dialog.btnSave().shouldBe(Condition.enabled).click(); - commonPageObj.snackBar.success().shouldBe(visible); commonPageObj.snackBar.btnClose().click(); } @@ -257,17 +256,17 @@ public void managementRequestsTableShouldBeVisible() { @Step("the option to show only pending requests is selected") public void showOnlyPendingRequestsIsSelected() { - vCheckbox(managementRequestsPageObj.showOnlyPendingRequests()).shouldBeChecked(); + vSwitch(managementRequestsPageObj.showOnlyPendingRequests()).shouldBeOn(); } @Step("the option to show only pending requests is not selected") public void showOnlyPendingRequestsIsNotSelected() { - vCheckbox(managementRequestsPageObj.showOnlyPendingRequests()).shouldBeUnchecked(); + vSwitch(managementRequestsPageObj.showOnlyPendingRequests()).shouldBeOff(); } @Step("the user clicks the checkbox to show only pending requests") public void showOnlyPendingRequestsIsClicked() { - vCheckbox(managementRequestsPageObj.showOnlyPendingRequests()).click(); + vSwitch(managementRequestsPageObj.showOnlyPendingRequests()).click(); } @Step("the user can not see the Approve, Decline actions for requests that have already been processed") diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java index 7363265653..abbdb176db 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/MemberSubsystemsStepDefs.java @@ -67,7 +67,7 @@ public void subsystemIsAdded(String subsystemCode, String subsystemName) { @Step("Subsystem with code: {string} and status: {string} is listed") public void subsystemIsShown(String subsystemCode, String subsystemStatus) { - memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, subsystemStatus).shouldBe(Condition.visible); + memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, null, subsystemStatus).shouldBe(Condition.visible); } @Step("Subsystem with code: {string}, name: {string} and status: {string} is listed") @@ -104,6 +104,6 @@ public void subsystemIsRenamed(String subsystemCode, String newName) { @Step("Subsystem with code: {string} not listed any more") public void subsystemIsNotShown(String subsystemCode) { - memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode).shouldNotBe(Condition.visible); + memberSubsystemsPageObj.listSubsystemsRowOf(subsystemCode, null, null).shouldNotBe(Condition.visible); } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SettingsApiKeysStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SettingsApiKeysStepDefs.java index 8ee9086b97..f13e15e6ca 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SettingsApiKeysStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SettingsApiKeysStepDefs.java @@ -29,6 +29,7 @@ import com.codeborne.selenide.WebElementCondition; import io.cucumber.datatable.DataTable; import io.cucumber.java.en.Step; +import org.niis.xroad.common.test.ui.utils.VuetifyHelper; import org.niis.xroad.cs.test.ui.glue.mappers.ParameterMappers.SelenideValidation; import org.niis.xroad.cs.test.ui.page.SettingsApiKeysPageObj; @@ -74,21 +75,6 @@ public void btnWizardNextStatus(String status) { } - @Step("Create API key wizard Previous button is clicked") - public void clickWizardBack() { - apiKeysPage.wizard.btnPrevious().click(); - } - - @Step("Create API key wizard Cancel button is clicked") - public void clickWizardCancel() { - commonPageObj.dialog.btnCancel().click(); - } - - @Step("Create API key wizard Create Key button is clicked") - public void clickWizardCreateKey() { - apiKeysPage.wizard.btnCreateKey().click(); - } - @Step("Create API key wizard Finish button is clicked") public void clickWizardFinish() { apiKeysPage.wizard.btnFinish().click(); @@ -97,14 +83,16 @@ public void clickWizardFinish() { @Step("API key is created and visible") public void apiKeyIsPresent() { commonPageObj.snackBar.success().shouldBe(Condition.visible); - createdApiKeyId = apiKeysPage.wizard.createdApiKeyId() - .shouldBe(Condition.visible) - .text(); + createdApiKeyId = VuetifyHelper.vTextField(apiKeysPage.wizard.createdApiKeyId()) + .shouldBe(Condition.attribute("value")) + .getValue(); } @Step("API key is set to token {} and in Authentication header") public void getApiKeyAndSetAuthenticationHeaderIsSet(CommonStepDefs.TokenType type) { - var createdApiKey = apiKeysPage.wizard.createdApiKey().text(); + var createdApiKey = VuetifyHelper.vTextField(apiKeysPage.wizard.createdApiKey()) + .shouldBe(Condition.attribute("value")) + .getValue(); type.setToken(createdApiKey); putStepData(StepDataKey.TOKEN_TYPE, type); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SystemSettingsMemberClassesStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SystemSettingsMemberClassesStepDefs.java index 0db700e0da..c5aeeb6a08 100755 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SystemSettingsMemberClassesStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/SystemSettingsMemberClassesStepDefs.java @@ -28,6 +28,7 @@ import com.codeborne.selenide.Condition; import io.cucumber.datatable.DataTable; import io.cucumber.java.en.Step; +import org.niis.xroad.common.test.ui.utils.VuetifyHelper; import org.niis.xroad.cs.test.ui.page.SettingsMemberClassesPageObj; import java.util.List; @@ -119,14 +120,9 @@ public void editMemberClassDesc(String value) { @Step("Member class list is set to {} rows per page") public void setMemberClassListSize(String value) { - settingsMemberClassesPageObj.listSizeSelector().click(); - - settingsMemberClassesPageObj.listSizeSelectorOptionOf(value) - .shouldBe(Condition.visible) - .click(); - - settingsMemberClassesPageObj.listSizeSelectorText() - .shouldBe(Condition.text(value)); + VuetifyHelper.vSelect(settingsMemberClassesPageObj.listSizeSelector()) + .clickAndSelect(value) + .hasValueSelected(value); } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesIntermediateCasStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesIntermediateCasStepDefs.java index 1e82f58b1b..3b1f5e116e 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesIntermediateCasStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesIntermediateCasStepDefs.java @@ -101,13 +101,13 @@ public void userIsAbleToSortByColumn(int headerColumnIndex) { column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-up")) + .shouldHave(cssClass("arrow_upward")) .click(); column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-down")) + .shouldHave(cssClass("arrow_downward")) .click(); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesOcspRespondersStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesOcspRespondersStepDefs.java index 742172ef7e..dc620d6f7c 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesOcspRespondersStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesOcspRespondersStepDefs.java @@ -101,13 +101,13 @@ public void userIsAbleToSortOcspRespondersByUrl() { tableHeader .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-up")) + .shouldHave(cssClass("arrow_upward")) .click(); tableHeader .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-down")) + .shouldHave(cssClass("arrow_downward")) .click(); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesStepDefs.java index b2e203c54c..82b0342bb1 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesStepDefs.java @@ -39,6 +39,8 @@ import static com.codeborne.selenide.Condition.appear; import static com.codeborne.selenide.Condition.cssClass; +import static com.codeborne.selenide.Condition.disabled; +import static com.codeborne.selenide.Condition.enabled; import static com.codeborne.selenide.Condition.text; import static com.codeborne.selenide.Condition.visible; import static org.niis.xroad.common.test.ui.utils.VuetifyHelper.vCheckbox; @@ -62,11 +64,14 @@ public void newCertificationServiceIsAdded() throws Exception { final byte[] certificate = CertificateUtils.generateAuthCert(CN_SUBJECT_PREFIX + certificationServiceName); testCertificate = CertificateUtils.readCertificate(certificate); - + commonPageObj.dialog.btnSave().shouldBe(disabled); trustServicesPageObj.addDialog.inputFile().uploadFile(CertificateUtils.getAsFile(certificate)); - commonPageObj.dialog.btnSave().click(); + commonPageObj.dialog.btnSave().shouldBe(disabled); + commonPageObj.dialog.btnUpload().click(); + commonPageObj.dialog.btnSave().shouldBe(disabled); vTextField(trustServicesPageObj.addCaSettingsDialog.inputCertificateProfile()) .setValue(CERTIFICATE_PROFILE); + commonPageObj.dialog.btnSave().shouldBe(enabled); commonPageObj.dialog.btnSave().click(); commonPageObj.snackBar.success().shouldBe(Condition.visible); @@ -80,7 +85,7 @@ public void newCaCertificateIsUploaded() throws Exception { final byte[] certificate = CertificateUtils.generateAuthCert(CN_SUBJECT_PREFIX + certificationServiceName); testCertificate = CertificateUtils.readCertificate(certificate); trustServicesPageObj.addDialog.inputFile().uploadFile(CertificateUtils.getAsFile(certificate)); - commonPageObj.dialog.btnSave().click(); + trustServicesPageObj.addDialog.uploadBtn().click(); } @Step("new acme certification service fields dont allow invalid values") @@ -141,13 +146,13 @@ public void userIsAbleToSortByColumn(int columnIndex) { column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-up")) + .shouldHave(cssClass("arrow_upward")) .click(); column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-down")) + .shouldHave(cssClass("arrow_downward")) .click(); } @@ -186,7 +191,7 @@ public void caSettingsAreShown() { @Step("user can change the certificate profile") public void userCanChangeTheCertificateProfile() { - trustServicesPageObj.certServiceDetails.caSettings.btnEditCertProfile().click(); + trustServicesPageObj.certServiceDetails.caSettings.btnEditCa().click(); vTextField(trustServicesPageObj.certServiceDetails.caSettings.inputCertProfile()) .clear() @@ -202,7 +207,7 @@ public void userCanChangeTheCertificateProfile() { @Step("user can change the TLS Auth setting") public void userCanChangeTheTLSAuthSetting() { - trustServicesPageObj.certServiceDetails.caSettings.btnEditTlsAuth().click(); + trustServicesPageObj.certServiceDetails.caSettings.btnEditCa().click(); vCheckbox(trustServicesPageObj.certServiceDetails.caSettings.checkboxTlsAuth()) .click(); commonPageObj.dialog.btnSave().shouldBe(Condition.enabled).click(); diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesTimestampingServicesStepDefs.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesTimestampingServicesStepDefs.java index dce62feb78..bf33c30f01 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesTimestampingServicesStepDefs.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/glue/TrustServicesTimestampingServicesStepDefs.java @@ -79,13 +79,13 @@ public void userIsAbleToSortByColumn(int columnIndex) { column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-up")) + .shouldHave(cssClass("arrow_upward")) .click(); column .shouldHave(cssClass("v-data-table__th--sorted")) .$x(".//i") - .shouldHave(cssClass("mdi-arrow-down")) + .shouldHave(cssClass("arrow_downward")) .click(); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CertificateViewPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CertificateViewPageObj.java index 9c146d499c..79cb4bb191 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CertificateViewPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CertificateViewPageObj.java @@ -32,7 +32,7 @@ public class CertificateViewPageObj { public SelenideElement certificateDetails() { - return $x("//div[contains(@class, 'certificate-details-wrapper')]"); + return $x("//div[@data-test='xrd-certificate']"); } public SelenideElement btnClose() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CommonPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CommonPageObj.java index c2ee089130..060d062a33 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CommonPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/CommonPageObj.java @@ -43,7 +43,7 @@ public class CommonPageObj { public final Button button = new Button(); public SelenideElement viewTitle(final String viewTitle) { - return $x(String.format("//div[@data-test='view-title' and text()='%s']", viewTitle)); + return $x(String.format("//div[@data-test='view-title-text' and text()='%s']", viewTitle)); } public class Menu { @@ -61,7 +61,7 @@ public SelenideElement trustServices() { } public SelenideElement globalConfiguration() { - return $x(getTabXpath("Global Configuration")); + return $x(getTabXpath("Global Conf.")); } public SelenideElement settingsTab() { @@ -69,11 +69,11 @@ public SelenideElement settingsTab() { } public SelenideElement usernameButton() { - return $x("//button[@data-test='username-button']"); + return $x("//div[@data-test='user-menu']"); } public SelenideElement logout() { - return $x("//div[@data-test='logout-list-tile']"); + return $x("//div[@data-test='logout-button']"); } public SelenideElement securityServersTab() { @@ -81,7 +81,8 @@ public SelenideElement securityServersTab() { } private String getTabXpath(String tabName) { - var xpath = "//div[contains(@class, 'main-tabs')]//a[contains(@class,'v-tab') and .//span[text()='%s']]"; + var xpath = "//a[@data-test='main-navigation-item' " + + "and .//div[@data-test='main-navigation-item-name' and contains(text(), '%s')]]"; return String.format(xpath, tabName); } } @@ -121,6 +122,10 @@ public SelenideElement btnSave() { return $x("//button[@data-test='dialog-save-button']"); } + public SelenideElement btnUpload() { + return $x("//button[@data-test='upload-file-btn']"); + } + public SelenideElement btnConfirm() { return $x("//button[@data-test='dialog-save-button']"); } @@ -142,7 +147,7 @@ public SelenideElement btnClose() { public class Alerts { public SelenideElement alert(final String text) { - return $x("//div[@data-test='contextual-alert']//div[contains(text(), '%s')]".formatted(text)); + return $x("//div[@data-test='contextual-alert']//p[contains(text(), '%s')]".formatted(text)); } public SelenideElement btnClose() { @@ -165,6 +170,6 @@ public SelenideElement inputFile() { } public SelenideElement backLink() { - return $x("//div[@data-test='navigation-back']/a"); + return $x("//a[@data-test='navigation-back']"); } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationPageObj.java index 0d992191de..c65af52dfc 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationPageObj.java @@ -61,7 +61,7 @@ public SelenideElement addSigningKey(final String tokenName) { } public SelenideElement signingKeyLabel(final String tokenName, final String keyLabel) { - return $x(format(X_TOKEN_EXPANDABLE + "//span[@data-test='key-label-text'][contains(text(), '%s')]", tokenName, keyLabel)); + return $x(format(X_TOKEN_EXPANDABLE + "//div[@data-test='key-label-text']/span[contains(., '%s')]", tokenName, keyLabel)); } public SelenideElement btnActivateSigningKey(final String tokenName, final String keyLabel) { @@ -132,7 +132,7 @@ public SelenideElement btnDownload() { } public SelenideElement txtHash() { - return $x("//span[@data-test='anchor-hash']"); + return $x("//div[@data-test='anchor-hash']/span"); } public SelenideElement txtCreatedAt() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationTrustedAnchorsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationTrustedAnchorsPageObj.java index 116a573f90..264392fedb 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationTrustedAnchorsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalConfigurationTrustedAnchorsPageObj.java @@ -39,28 +39,28 @@ public SelenideElement uploadAnchorButton() { } public SelenideElement downloadAnchorButton(String instance) { - var xpath = "../../div/button[@data-test='download-anchor-button']"; + var xpath = "..//button[@data-test='download-anchor-button']"; return instanceWithName(instance).find(xpath(xpath)); } public SelenideElement deleteAnchorButton(String instance) { - var xpath = "../../div/button[@data-test='delete-anchor-button']"; + var xpath = "..//button[@data-test='delete-anchor-button']"; return instanceWithName(instance).find(xpath(xpath)); } public SelenideElement instanceWithName(String title) { - var xpath = "//div[@class='xdr-table-title' and contains(text(), '%s')]"; + var xpath = "//div[@data-test='view-title-text' and contains(text(), '%s')]"; return $x(String.format(xpath, title)); } public SelenideElement instanceWithNameAndHash(String title, String hash) { - var hashXpath = "../../..//span[@data-test='anchor-hash' and contains(text(), '%s')]"; + var hashXpath = "../..//div[@data-test='anchor-hash']/span[contains(., '%s')]"; return instanceWithName(title) .find(xpath(String.format(hashXpath, hash))); } public SelenideElement createdAtForInstanceWithName(String title) { - var createdXpath = "../../..//span[@data-test='anchor-created-at']"; + var createdXpath = "../..//span[@data-test='anchor-created-at']"; return instanceWithName(title) .find(xpath(createdXpath)); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalGroupDetailsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalGroupDetailsPageObj.java index 5380bcc4e8..a11197459d 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalGroupDetailsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/GlobalGroupDetailsPageObj.java @@ -39,12 +39,12 @@ public class GlobalGroupDetailsPageObj { private final DeleteMemberDialogObj deleteMemberDialogObj = new DeleteMemberDialogObj(); public SelenideElement btnAddMembersButton() { - final var xpath = "//article[@data-test='global-resources-view']//button[@data-test='add-member-button']"; + final var xpath = "//div[@data-test='global-resources-view']//button[@data-test='add-member-button']"; return $x(xpath); } public SelenideElement membersCount() { - final var xpath = "//article[@data-test='global-resources-view']//span[@data-test='member-count']"; + final var xpath = "//div[@data-test='global-resources-view']//span[@data-test='member-count']"; return $x(xpath); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/InitializationPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/InitializationPageObj.java index ef76e8d20a..0fa8bcba70 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/InitializationPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/InitializationPageObj.java @@ -33,7 +33,7 @@ public class InitializationPageObj { public SelenideElement initializationView() { - return $x("//div[@data-test='central-server-initialization-page-title']"); + return $x("//div[@data-test='central-server-initialization-page']"); } public SelenideElement initializationPhaseId() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/IntermediateCasPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/IntermediateCasPageObj.java index 1a27fa96da..dea0453f98 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/IntermediateCasPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/IntermediateCasPageObj.java @@ -47,7 +47,7 @@ public SelenideElement table() { } public SelenideElement tableRowOf(String name) { - var xpath = "./tbody/tr/td/div[contains(text(), '%s')]"; + var xpath = "./tbody/tr/td/div/span[contains(., '%s')]"; return table().find(xpath(String.format(xpath, name))); } @@ -57,12 +57,12 @@ public SelenideElement tableHeaderCol(int headerColumnIndex) { } public SelenideElement btnViewIntermediateCa(String url) { - var xpath = "./../..//td/div/button[@data-test='view-intermediate-ca-certificate']"; + var xpath = "../../..//td//button[@data-test='view-intermediate-ca-certificate']"; return tableRowOf(url).find(xpath(xpath)); } public SelenideElement btnDeleteIntermediateCa(String url) { - var xpath = "./../..//td/div/button[@data-test='delete-intermediate-ca']"; + var xpath = "../../..//td//button[@data-test='delete-intermediate-ca']"; return tableRowOf(url).find(xpath(xpath)); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/ManagementRequestsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/ManagementRequestsPageObj.java index e5ba776d4c..9a17f4fc09 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/ManagementRequestsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/ManagementRequestsPageObj.java @@ -34,6 +34,9 @@ @SuppressWarnings("InnerClassMayBeStatic") public class ManagementRequestsPageObj { + private static final String DATA_ROW = "//td[@data-test='row-label' and contains(text(),'%s')]/../td[@data-test='row-value']"; + private static final String RELATIVE_DATA_ROW = ".//td[@data-test='row-label' and contains(text(),'%s')]/../td[@data-test='row-value']"; + public final RequestInformation requestInformation = new RequestInformation(); public final SecurityServerInformation securityServerInformation = new SecurityServerInformation(); public final Certificate certificate = new Certificate(); @@ -49,17 +52,17 @@ public SelenideElement table() { public SelenideElement tableRowOf(String text) { var xpath = "./tbody/tr/td/div[contains(text(), '%s')]"; - return table().find(xpath(String.format(xpath, text))); + return table().find(xpath(xpath.formatted(text))); } public SelenideElement titleOfDetails(String title) { - var xpath = "//div[@class='xrd-view-title' and text()='%s']"; - return $x(String.format(xpath, title)); + var xpath = "//header/span[contains(@class, 'title-view') and text()='%s']"; + return $x(xpath.formatted(title)); } public SelenideElement titleOfSection(String title) { - var xpath = "//h2[contains(text(), '%s')]"; - return $x(String.format(xpath, title)); + var xpath = "//div[@data-test='view-title']/div[@data-test='view-title-text' and text() = '%s']"; + return $x(xpath.formatted(title)); } public SelenideElement search() { @@ -68,133 +71,124 @@ public SelenideElement search() { public SelenideElement tableCol(String name) { var xpath = "./thead/tr/th/div/span[text()='%s']/../.."; - return table().find(xpath(String.format(xpath, name))); + return table().find(xpath(xpath.formatted(name))); } public SelenideElement btnApproveManagementRequest(String text) { - var xpath = "../..//td/div/div/button[@data-test='approve-button']"; + var xpath = "../..//td/button[@data-test='approve-button']"; return tableRowOf(text).find(xpath(xpath)); } public SelenideElement btnApproveManagementRequest() { - var xpath = "../..//td/div/div/button[@data-test='approve-button']"; + var xpath = "../..//td/button[@data-test='approve-button']"; return table().find(xpath(xpath)); } public SelenideElement btnDeclineManagementRequest(String url) { - var xpath = "../..//td/div/div/button[@data-test='decline-button']"; + var xpath = "../..//td/button[@data-test='decline-button']"; return tableRowOf(url).find(xpath(xpath)); } public SelenideElement btnDeclineManagementRequest() { - var xpath = "../..//td/div/div/button[@data-test='decline-button']"; + var xpath = "../..//td/button[@data-test='decline-button']"; return table().find(xpath(xpath)); } public SelenideElement clickableRequestId(String status, String type, String securityServerId) { - var statusXpath = "../..//div[contains(text(),'%s')]"; - var typeXpath = "../../..//span[text()='%s']"; - var requestIdXpath = "../../..//div[contains(@class,'request-id')]"; + var statusXpath = "../..//span[contains(text(),'%s')]"; + var typeXpath = "../../../..//span[text()='%s']"; + var requestIdXpath = "../../../td/div[contains(@class,'cursor-pointer')]"; return tableRowOf(securityServerId) - .find(xpath(String.format(statusXpath, status))) - .find(xpath(String.format(typeXpath, type))) + .find(xpath(statusXpath.formatted(status))) + .find(xpath(typeXpath.formatted(type))) .find(xpath(requestIdXpath)); } public class RequestInformation { public SelenideElement requestId() { - return $x("//td[@data-test='managementRequestDetails.requestId']"); + return $x(DATA_ROW.formatted("Request ID")); } public SelenideElement received() { - return $x("//td[@data-test='managementRequestDetails.received']"); + return $x(DATA_ROW.formatted("Received") + "/span"); } public SelenideElement source() { - return $x("//td[@data-test='managementRequestDetails.source']"); + return $x(DATA_ROW.formatted("Source")); } public SelenideElement status() { - return $x("//td[@data-test='managementRequestDetails.status']"); + return $x(DATA_ROW.formatted("Status") + "//div[contains(@class, 'v-chip__content')]/span"); } public SelenideElement comments() { - return $x("//td[@data-test='managementRequestDetails.comments']"); + return $x(DATA_ROW.formatted("Comments")); } } public class SecurityServerInformation { private SelenideElement securityServerInformation() { - return $x("//section[@data-test='managementRequestDetails.securityServerInformation']"); + return $x("//div[@data-test='view-title-text' and text() = 'Affected Security Server Information']/../.."); } public SelenideElement ownerName() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerName']"; - return securityServerInformation().find(xpath(xpath)); + return securityServerInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Name"))); } public SelenideElement ownerClass() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerClass']"; - return securityServerInformation().find(xpath(xpath)); + return securityServerInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Class"))); } public SelenideElement ownerCode() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerCode']"; - return securityServerInformation().find(xpath(xpath)); + return securityServerInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Code"))); } public SelenideElement serverCode() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.serverCode']"; - return securityServerInformation().find(xpath(xpath)); + return securityServerInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Server Code"))); } public SelenideElement address() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.address']"; - return securityServerInformation().find(xpath(xpath)); + return securityServerInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Address"))); } } public class Certificate { public SelenideElement ca() { - return $x("//td[@data-test='managementRequestDetails.ca']"); + return $x(DATA_ROW.formatted("CA")); } public SelenideElement serialNumber() { - return $x("//td[@data-test='managementRequestDetails.serialNumber']"); + return $x(DATA_ROW.formatted("Serial number")); } public SelenideElement subject() { - return $x("//td[@data-test='managementRequestDetails.subject']"); + return $x(DATA_ROW.formatted("Subject")); } public SelenideElement expires() { - return $x("//td[@data-test='managementRequestDetails.expires']"); + return $x(DATA_ROW.formatted("Expires") + "/span"); } } public class Client { private SelenideElement clientInformation() { - return $x("//section[@data-test='managementRequestDetails.clientInformation']"); + return $x("//div[@data-test='view-title-text' and text() = 'Client Submitted for Registration']/../.."); } public SelenideElement ownerName() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerName']"; - return clientInformation().find(xpath(xpath)); + return clientInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Name"))); } public SelenideElement ownerClass() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerClass']"; - return clientInformation().find(xpath(xpath)); + return clientInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Class"))); } public SelenideElement ownerCode() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.ownerCode']"; - return clientInformation().find(xpath(xpath)); + return clientInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Owner Code"))); } public SelenideElement subsystemCode() { - var xpath = "./div/div/table/tbody/tr/td[@data-test='managementRequestDetails.subsystemCode']"; - return clientInformation().find(xpath(xpath)); + return clientInformation().find(xpath(RELATIVE_DATA_ROW.formatted("Subsystem Code"))); } } } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberDetailsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberDetailsPageObj.java index afc9a0a7ac..6498e80e03 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberDetailsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberDetailsPageObj.java @@ -39,27 +39,27 @@ public class MemberDetailsPageObj { public SelenideElement memberNameCard(String name) { - var xpath = "//div[@data-test='member-name-card']//div[contains(@class, 'v-card-text')]//div[text()='%s']"; + var xpath = "//div[@data-test='member-details']//tr[@data-test='member-name']/td[@data-test='row-value' and text()='%s']"; return $x(String.format(xpath, name)); } public SelenideElement memberClassCard(String name) { - var xpath = "//div[@data-test='member-class-card']//div[contains(@class, 'v-card-text')]//div[text()='%s']"; + var xpath = "//div[@data-test='member-details']//tr[@data-test='member-class']/td[@data-test='row-value' and text()='%s']"; return $x(String.format(xpath, name)); } public SelenideElement memberCodeCard(String name) { - var xpath = "//div[@data-test='member-code-card']//div[contains(@class, 'v-card-text')]//div[text()='%s']"; + var xpath = "//div[@data-test='member-details']//tr[@data-test='member-code']/td[@data-test='row-value' and text()='%s']"; return $x(String.format(xpath, name)); } public SelenideElement tableTitle(String name) { - var xpath = "//div[@class='xrd-view-title' and text()='%s']"; + var xpath = "//div[@data-test='view-title-text' and text()='%s']"; return $x(String.format(xpath, name)); } public SelenideElement btnDelete() { - return $x("//div[@data-test='delete-member']"); + return $x("//button[@data-test='delete-member']"); } public SelenideElement btnEdit() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberPageObj.java index 9c26096b6b..c78186dc17 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberPageObj.java @@ -49,13 +49,13 @@ public SelenideElement searchInput() { } public SelenideElement listRowOf(String memberName) { - var xpath = "//div[@data-test='members-table']//table/tbody/tr/td//div[contains(text(), '%s')]"; + var xpath = "//div[@data-test='members-table']//table/tbody/tr/td//div[@data-test='member-name' and .//span[contains(., '%s')]]"; return $x(String.format(xpath, memberName)); } public SelenideElement listRowOf(String memberName, String memberCode, String memberClass) { - var xpath = "//div[@data-test='members-view']//table/tbody/tr[(normalize-space(td[1]/div/text()) = '%s') " - + " and (td[2] = '%s') and (td[3] = '%s')]"; + var xpath = "//div[@data-test='members-view']//table/tbody/tr" + + "[td[1][.//span[text() = '%s']] and td[2][text() = '%s'] and td[3][text() = '%s']]"; return $x(String.format(xpath, memberName, memberClass, memberCode)); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java index 7ba8ff9a97..f9f0a58355 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/MemberSubsystemsPageObj.java @@ -27,7 +27,8 @@ package org.niis.xroad.cs.test.ui.page; import com.codeborne.selenide.SelenideElement; -import org.apache.commons.lang3.StringUtils; + +import java.util.LinkedList; import static com.codeborne.selenide.Selenide.$x; import static org.openqa.selenium.By.xpath; @@ -45,22 +46,30 @@ public SelenideElement listSubsystems() { return $x("//div[@data-test='subsystems-table']"); } - public SelenideElement listSubsystemsRowOf(String code, Object... other) { + public SelenideElement listSubsystemsRowOf(String code, String name, String status) { + + var xpath = ".//div//table//tbody//tr[td/div[@data-test='subsystem-code' and span[text() = '%s']] %s]"; - var xpath = ".//div//table//tbody//tr[td[contains(text(), '%s')] %s]"; + var asserts = new LinkedList(); + if (name != null) { + asserts.add("td[contains(text(), '%s')]".formatted(name)); + } + if (status != null) { + asserts.add("td//div[contains(text(), '%s')]".formatted(status)); + } - var additional = StringUtils.repeat(" and td[contains(text(), '%s')]", other.length).formatted(other); + var additional = asserts.isEmpty() ? "" : ("and " + String.join(" and ", asserts)); return listSubsystems().find(xpath(String.format(xpath, code, additional))); } public SelenideElement btnDeleteSubsystem(String code) { - return listSubsystemsRowOf(code) + return listSubsystemsRowOf(code, null, null) .find(xpath(".//button[@data-test='delete-subsystem']")); } public SelenideElement btnRenameSubsystem(String code) { - return listSubsystemsRowOf(code) + return listSubsystemsRowOf(code, null, null) .find(xpath(".//button[@data-test='rename-subsystem']")); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/OcspRespondersPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/OcspRespondersPageObj.java index 31a54e7636..3e03a514fc 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/OcspRespondersPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/OcspRespondersPageObj.java @@ -45,22 +45,22 @@ public SelenideElement table() { } public SelenideElement tableRowOf(String url) { - var xpath = "./tbody/tr/td/div[contains(text(), '%s')]"; + var xpath = "./tbody/tr/td/div/span[contains(., '%s')]"; return table().find(xpath(String.format(xpath, url))); } public SelenideElement btnViewOcspResponder(String url) { - var xpath = "./../..//td/div/button[@data-test='view-ocsp-responder-certificate']"; + var xpath = "../../..//td/button[@data-test='view-ocsp-responder-certificate']"; return tableRowOf(url).find(xpath(xpath)); } public SelenideElement btnEditOcspResponder(String url) { - var xpath = "./../..//td/div/button[@data-test='edit-ocsp-responder']"; + var xpath = "../../..//td/button[@data-test='edit-ocsp-responder']"; return tableRowOf(url).find(xpath(xpath)); } public SelenideElement btnDeleteOcspResponder(String url) { - var xpath = "./../..//td/div/button[@data-test='delete-ocsp-responder']"; + var xpath = "../../..//td/button[@data-test='delete-ocsp-responder']"; return tableRowOf(url).find(xpath(xpath)); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SecurityServerAuthCertificatesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SecurityServerAuthCertificatesPageObj.java index 0f2f6e1522..b93b80b5b4 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SecurityServerAuthCertificatesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SecurityServerAuthCertificatesPageObj.java @@ -63,7 +63,7 @@ public ElementsCollection authCertificateRows() { public SelenideElement certificatedDetailsView() { var xpath = "//main[@id='security-server-authentication-certificate']"; - return $x(xpath).find("div.certificate-details-wrapper"); + return $x(xpath).find("div#certification-service-certificate-details"); } public ElementsCollection columnHeaders() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsApiKeysPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsApiKeysPageObj.java index 9185dc3426..5629a5eb8f 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsApiKeysPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsApiKeysPageObj.java @@ -43,7 +43,7 @@ public SelenideElement btnCreateApiKey() { } public SelenideElement apiKeyRow(String apiKeyId) { - var xpath = "//div[@data-test='api-keys-view']//div[contains(text(), '%s')]"; + var xpath = "//div[@data-test='api-keys-view']//div[@data-test='api-key-id' and ./span[contains(., '%s')]]"; return $x(String.format(xpath, apiKeyId)); } @@ -74,25 +74,17 @@ public SelenideElement checkboxRole(String role) { } public SelenideElement createdApiKeyId() { - return $x("//td[@data-test='created-apikey-id']"); + return $x("//div[@data-test='created-apikey-id']"); } public SelenideElement createdApiKey() { - return $x("//td[@data-test='created-apikey']"); - } - - public SelenideElement btnCreateKey() { - return $x("//button[@data-test='create-key-button']"); + return $x("//div[@data-test='created-apikey']"); } public SelenideElement btnNext() { return $x("//button[@data-test='next-button']"); } - public SelenideElement btnPrevious() { - return $x("//button[@data-test='previous-button']"); - } - public SelenideElement btnFinish() { return $x("//button[@data-test='finish-button']"); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsGlobalResourcesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsGlobalResourcesPageObj.java index 4bf14014f6..0496f72185 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsGlobalResourcesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsGlobalResourcesPageObj.java @@ -44,13 +44,13 @@ public SelenideElement globalResourcesView() { public class GlobalGroupList { public SelenideElement globalGroupRow(String code) { - var xpath = "//div[@data-test='global-groups-table']//div[@data-test='group-code' and contains(text(), '%s')]"; + var xpath = "//div[@data-test='global-groups-table']//div[@data-test='group-code']/span[text()='%s']"; return $x(String.format(xpath, code)).ancestor("tr"); } public SelenideElement globalGroupCodeBtn(String code) { - var xpath = "//div[@data-test='global-groups-table']//div[@data-test='group-code' and contains(text(), '%s')]"; - return $x(String.format(xpath, code)).ancestor(".xrd-clickable"); + var xpath = "//div[@data-test='global-groups-table']//div[@data-test='group-code']/span[text()='%s']"; + return $x(String.format(xpath, code)).ancestor(".cursor-pointer"); } public SelenideElement btnAddGlobalGroup() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsManagementServicesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsManagementServicesPageObj.java index c4842a79fa..0c1f619510 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsManagementServicesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsManagementServicesPageObj.java @@ -36,27 +36,27 @@ public class SettingsManagementServicesPageObj { public final EditManagementSecurityServerDialog editManagementSecurityServerDialog = new EditManagementSecurityServerDialog(); public SelenideElement serviceProviderIdentifier() { - return $x("//td[@data-test='management-service-provider-identifier-field']"); + return $x("//tr[@data-test='management-service-provider-identifier-field']/td[2]"); } public SelenideElement serviceProviderName() { - return $x("//td[@data-test='management-service-provider-name-field']"); + return $x("//tr[@data-test='management-service-provider-name-field']/td[2]"); } public SelenideElement securityServer() { - return $x("//td[@data-test='management-security-server-field']"); + return $x("//tr[@data-test='management-security-server-field']/td[2]"); } public SelenideElement wsdlAddress() { - return $x("//td[@data-test='management-wsdl-address-field']"); + return $x("//tr[@data-test='management-wsdl-address-field']/td[2]"); } public SelenideElement managementServicesAddress() { - return $x("//td[@data-test='management-management-services-address-field']"); + return $x("//tr[@data-test='management-management-services-address-field']/td[2]"); } public SelenideElement ownerGroupCode() { - return $x("//td[@data-test='management-owner-group-code-field']"); + return $x("//tr[@data-test='management-owner-group-code-field']/td[2]"); } public SelenideElement wsdlAddressCopyButton() { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsMemberClassesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsMemberClassesPageObj.java index 3c0c9ffe3d..df3c397870 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsMemberClassesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/SettingsMemberClassesPageObj.java @@ -73,13 +73,12 @@ public SelenideElement listRowBtnDeleteOf(String code) { public SelenideElement listSizeSelector() { return $x("//div[@data-test='member-classes-list']" - + "//div[contains(@class, 'v-data-table-footer__items-per-page')]" - + "/div[contains(@class, 'v-select')]"); + + "//div[@data-test='xrd-paginator-select']"); } public SelenideElement listSizeSelectorText() { return $x("//div[@data-test='member-classes-list']" - + "//div[contains(@class, 'v-data-table-footer__items-per-page')]" + + "//div[@data-test='xrd-paginator']" + "//span[@class='v-select__selection-text']"); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TimestampingServicesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TimestampingServicesPageObj.java index 160453b5cc..2bff49c2d2 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TimestampingServicesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TimestampingServicesPageObj.java @@ -52,7 +52,7 @@ public SelenideElement tableWithHeaders(String url, String interval, String cost } public SelenideElement tableServicesRowOf(String url) { - var xpath = "./tbody/tr/td[text()='%s']"; + var xpath = "./tbody/tr/td/div/span[text()='%s']"; return table().find(xpath(String.format(xpath, url))); } @@ -70,17 +70,17 @@ public SelenideElement tableServicesCol(int colIndex) { } public SelenideElement btnViewTimestampingService(String url) { - var xpath = "./..//td/div/button[@data-test='view-timestamping-service-certificate']"; + var xpath = "../../..//td/button[@data-test='view-timestamping-service-certificate']"; return tableServicesRowOf(url).find(xpath(xpath)); } public SelenideElement btnEditTimestampingService(String url) { - var xpath = "./..//td/div/button[@data-test='edit-timestamping-service']"; + var xpath = "../../..//td/button[@data-test='edit-timestamping-service']"; return tableServicesRowOf(url).find(xpath(xpath)); } public SelenideElement btnDeleteTimestampingService(String url) { - var xpath = "./..//td/div/button[@data-test='delete-timestamping-service']"; + var xpath = "../../..//td/button[@data-test='delete-timestamping-service']"; return tableServicesRowOf(url).find(xpath(xpath)); } diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TrustServicesPageObj.java b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TrustServicesPageObj.java index 4781686afd..71534d9cf5 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TrustServicesPageObj.java +++ b/src/central-server/admin-service/ui-system-test/src/intTest/java/org/niis/xroad/cs/test/ui/page/TrustServicesPageObj.java @@ -47,7 +47,7 @@ public SelenideElement tableServices() { } public SelenideElement tableServicesRowOf(String name) { - var xpath = "./tbody/tr/td/div[contains(text(), '%s')]"; + var xpath = "./tbody/tr/td/div//span[contains(., '%s')]"; return tableServices().find(xpath(String.format(xpath, name))); } @@ -58,19 +58,19 @@ public SelenideElement tableServicesCol(int colIndex) { public SelenideElement cardSubjectDn() { - return $x("//div[@data-test='subject-distinguished-name-card']/div[contains(@class, 'v-card-text')]/div"); + return $x("//tr[@data-test='subject-distinguished-name-card']/td[2]"); } public SelenideElement cardIssuerDn() { - return $x("//div[@data-test='issuer-distinguished-name-card']/div[contains(@class, 'v-card-text')]/div"); + return $x("//tr[@data-test='issuer-distinguished-name-card']/td[2]"); } public SelenideElement cardValidFrom() { - return $x("//div[@data-test='valid-from-card']/div[contains(@class, 'v-card-text')]//span"); + return $x("//tr[@data-test='valid-from-card']/td[2]//span"); } public SelenideElement cardValidTo() { - return $x("//div[@data-test='valid-to-card']/div[contains(@class, 'v-card-text')]//span"); + return $x("//tr[@data-test='valid-to-card']/td[2]//span"); } @@ -79,17 +79,17 @@ public class CertServiceDetails { public final IntermediateCasPageObj intermediaCas = new IntermediateCasPageObj(); public SelenideElement tabSettings() { - return $x("//article[@id='certification-service-view']//div[@role='tablist']" + return $x("//div[@data-test='trust-services-view']//div[@role='tablist']" + "//a[@data-test='certification-service-settings-tab-button']"); } public SelenideElement tabIntermediateCas() { - return $x("//article[@id='certification-service-view']//div[@role='tablist']" + return $x("//div[@data-test='trust-services-view']//div[@role='tablist']" + "//a[@data-test='certification-service-intermediate-cas-tab-button']"); } public SelenideElement tabOcspResponders() { - return $x("//article[@id='certification-service-view']//div[@role='tablist']" + return $x("//div[@data-test='trust-services-view']//div[@role='tablist']" + "//a[@data-test='certification-service-ocsp-responders-tab-button']"); } @@ -98,44 +98,40 @@ public SelenideElement btnViewCertificate() { } public SelenideElement btnDeleteTrustService() { - return $x("//div[@data-test='delete-trust-service']"); + return $x("//button[@data-test='delete-trust-service']"); } public class CaSettings { public SelenideElement cardTlsAuth() { - return $x("//div[@data-test='tls-auth-card']/div[contains(@class, 'v-card-text')]/div"); + return $x("//td[@data-test='tls-auth-card']"); } public SelenideElement cardCertProfile() { - return $x("//div[@data-test='cert-profile-card']/div[contains(@class, 'v-card-text')]/div"); + return $x("//td[@data-test='cert-profile-card']"); } public SelenideElement acmeServerDirectoryUrl() { - return $x("//div[@data-test='cert-acme-card']//div[@data-test='acme-server-directory-url']"); + return $x("//div[@data-test='cert-acme-card']//td[@data-test='acme-server-directory-url']"); } public SelenideElement acmeServerIpAddress() { - return $x("//div[@data-test='cert-acme-card']//div[@data-test='acme-server-ip-address']"); + return $x("//div[@data-test='cert-acme-card']//td[@data-test='acme-server-ip-address']"); } public SelenideElement authenticationCertificateProfileId() { - return $x("//div[@data-test='cert-acme-card']//div[@data-test='authentication-certificate-profile-id']"); + return $x("//div[@data-test='cert-acme-card']//td[@data-test='authentication-certificate-profile-id']"); } public SelenideElement signingCertificateProfileId() { - return $x("//div[@data-test='cert-acme-card']//div[@data-test='signing-certificate-profile-id']"); + return $x("//div[@data-test='cert-acme-card']//td[@data-test='signing-certificate-profile-id']"); } - public SelenideElement btnEditTlsAuth() { - return $x("//div[@data-test='tls-auth-card']//button[@data-test='info-card-edit-button']"); - } - - public SelenideElement btnEditCertProfile() { - return $x("//div[@data-test='cert-profile-card']//button[@data-test='info-card-edit-button']"); + public SelenideElement btnEditCa() { + return $x("//button[@data-test='edit-ca-btn']"); } public SelenideElement btnEditAcme() { - return $x("//div[@data-test='cert-acme-card']//button[@data-test='info-card-edit-button']"); + return $x("//div[@data-test='cert-acme-card']//button[@data-test='edit-ca-acme-btn']"); } public SelenideElement checkboxTlsAuth() { @@ -169,6 +165,10 @@ public class AddDialog { public SelenideElement inputFile() { return $x("//input[@type='file']"); } + + public SelenideElement uploadBtn() { + return $x("//button[@data-test='upload-file-btn']"); + } } public class AddCaSettingsDialog { diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0300-cs-settings-member-classes.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0300-cs-settings-member-classes.feature index 6532666d36..e8d89186c0 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0300-cs-settings-member-classes.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0300-cs-settings-member-classes.feature @@ -1,4 +1,5 @@ @CentralServer +@Settings @MemberClass Feature: 0300 - CS: System Settings -> System parameters -> Member Classes diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0340-cs-settings-global-resources.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0340-cs-settings-global-resources.feature index 3dcc2e2c58..3c6ea6abcb 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0340-cs-settings-global-resources.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0340-cs-settings-global-resources.feature @@ -1,5 +1,7 @@ @CentralServer -@CertificationService +@Settings +@GlobalResources + Feature: 0340 - CS: Settings -> Global Resources Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0350-cs-settings-system-parameters.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0350-cs-settings-system-parameters.feature index 5dff2f26f7..7d34f86174 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0350-cs-settings-system-parameters.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0350-cs-settings-system-parameters.feature @@ -1,5 +1,7 @@ @CentralServer -@CertificationService +@Settings +@SystemParameters + Feature: 0350 - CS: System Settings -> System parameters Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0360-cs-settings-api-keys.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0360-cs-settings-api-keys.feature index 406ac3e8d5..51f8769040 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0360-cs-settings-api-keys.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0360-cs-settings-api-keys.feature @@ -1,4 +1,5 @@ @CentralServer +@Settings @ApiKeys Feature: 0360 - CS: System Settings -> Api Keys @@ -16,11 +17,7 @@ Feature: 0360 - CS: System Settings -> Api Keys Then Create API key wizard next button status is enabled When Create API key wizard next button is clicked - And Create API key wizard Previous button is clicked - And Create API key wizard next button is clicked - And Create API key wizard Create Key button is clicked Then API key is created and visible - When Create API key wizard Finish button is clicked Then Newly created API key is present in the list @@ -28,7 +25,6 @@ Feature: 0360 - CS: System Settings -> Api Keys Given Create API key button is clicked When Role "Registration Officer" is being clicked When Create API key wizard next button is clicked - And Create API key wizard Create Key button is clicked Then API key is created and visible When Create API key wizard Finish button is clicked Then Newly created API key is present in the list @@ -39,7 +35,6 @@ Feature: 0360 - CS: System Settings -> Api Keys Given Create API key button is clicked When Role "Registration Officer" is being clicked When Create API key wizard next button is clicked - And Create API key wizard Create Key button is clicked Then API key is created and visible When Create API key wizard Finish button is clicked Then Newly created API key is present in the list @@ -61,7 +56,6 @@ Feature: 0360 - CS: System Settings -> Api Keys And Role "System Administrator" is being clicked And Role "Management Services" is being clicked And Create API key wizard next button is clicked - And Create API key wizard Create Key button is clicked Then API key is created and visible When Create API key wizard Finish button is clicked And Newly created API key is present in the list diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature index 92e78be762..80dda4fa43 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0450-cs-member-subsystems.feature @@ -1,5 +1,6 @@ @CentralServer @Member +@Subsystem Feature: 0450 - CS: Member details view Subsystem tab Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature index 5a0ee0f62d..d8ff8128ca 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0460-cs-management-service-provider-registration.feature @@ -1,6 +1,6 @@ @CentralServer -@Member -Feature: 0460 - CS: management service provider registration +@ManagementService +Feature: 0460 - CS: Management service provider registration Background: Given CentralServer login page is open diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0500-cs-trust-services.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0500-cs-trust-services.feature index e998141e58..46e48601a0 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0500-cs-trust-services.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0500-cs-trust-services.feature @@ -1,5 +1,6 @@ @CentralServer @CertificationService +@TrustServices Feature: 0500 - CS: Trust Services Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0540-cs-intermediate-ca-details.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0540-cs-intermediate-ca-details.feature index 805ed1e3f2..9585b71176 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0540-cs-intermediate-ca-details.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0540-cs-intermediate-ca-details.feature @@ -1,6 +1,7 @@ @CentralServer @CertificationService @IntermediateCA +@IntermediateCADetails Feature: 0540 - CS: Trust Services -> CA Details -> Intermediate CAs -> Intermediate CA Details Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0550-cs-intermediate-ca-ocsp-responders.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0550-cs-intermediate-ca-ocsp-responders.feature index 8a62a09b69..7c6913d620 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0550-cs-intermediate-ca-ocsp-responders.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0550-cs-intermediate-ca-ocsp-responders.feature @@ -1,6 +1,7 @@ @CentralServer @CertificationService @IntermediateCA +@IntermediateCAOCSPResponders Feature: 0550 - CS: Trust Services -> CA Details -> Intermediate CAs -> Intermediate CA OCSP Responders Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0600-cs-internal-signing-keys.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0600-cs-internal-signing-keys.feature index d882aed129..2d304ef03f 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0600-cs-internal-signing-keys.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0600-cs-internal-signing-keys.feature @@ -1,4 +1,5 @@ @CentralServer +@InternalGlobalConfiguration @SigningKeys @LoadingTesting Feature: 0600 - CS: Global configuration: Internal configuration: Signing keys diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0610-cs-external-signing-keys.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0610-cs-external-signing-keys.feature index bcb4c87f1d..c7848cfe32 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0610-cs-external-signing-keys.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0610-cs-external-signing-keys.feature @@ -1,4 +1,5 @@ @CentralServer +@ExternalGlobalConfiguration @SigningKeys @LoadingTesting Feature: 0610 - CS: Global configuration: External configuration: Signing keys diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0700-cs-global-configuration-anchor-internal.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0700-cs-global-configuration-anchor-internal.feature index f5f831363c..b4b58e03b8 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0700-cs-global-configuration-anchor-internal.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0700-cs-global-configuration-anchor-internal.feature @@ -1,4 +1,6 @@ @CentralServer +@GlobalConfiguration +@InternalGlobalConfiguration @ConfigurationAnchor @LoadingTesting Feature: 0700 - CS: Global configuration: Internal configuration: Anchor diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0710-cs-global-configuration-anchor-external.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0710-cs-global-configuration-anchor-external.feature index 3716bfce5e..02ec1e0388 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0710-cs-global-configuration-anchor-external.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0710-cs-global-configuration-anchor-external.feature @@ -1,4 +1,6 @@ @CentralServer +@GlobalConfiguration +@ExternalGlobalConfiguration @ConfigurationAnchor @LoadingTesting Feature: 0710 - CS: Global configuration: External configuration: Anchor diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0800-cs-global-configuration-parts-external.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0800-cs-global-configuration-parts-external.feature index b61b033d4d..8ac2dc9000 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0800-cs-global-configuration-parts-external.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0800-cs-global-configuration-parts-external.feature @@ -1,4 +1,6 @@ @CentralServer +@GlobalConfiguration +@ExternalGlobalConfiguration @ConfigurationParts @LoadingTesting Feature: 0800 - CS: Global configuration: External configuration: Configuration parts diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0810-cs-global-configuration-parts-internal.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0810-cs-global-configuration-parts-internal.feature index 0610a5eb7d..0b82bb988d 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0810-cs-global-configuration-parts-internal.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0810-cs-global-configuration-parts-internal.feature @@ -1,4 +1,6 @@ @CentralServer +@GlobalConfiguration +@InternalGlobalConfiguration @ConfigurationParts Feature: 0810 - CS: Global configuration: Internal configuration: Configuration parts diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0850-cs-global-configuration-trusted-anchors.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0850-cs-global-configuration-trusted-anchors.feature index e18c729786..a608d91a76 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0850-cs-global-configuration-trusted-anchors.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0850-cs-global-configuration-trusted-anchors.feature @@ -1,4 +1,6 @@ @CentralServer +@GlobalConfiguration +@TrustedAnchors Feature: 0850 - CS: Global configuration: Trusted Anchors Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0860-cs-settings-tls-certificates.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0860-cs-settings-tls-certificates.feature index 56eaf62fe9..0a39b7b655 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0860-cs-settings-tls-certificates.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0860-cs-settings-tls-certificates.feature @@ -1,4 +1,6 @@ @CentralServer +@Settings +@TlsCertificates Feature: 0860 - CS: Settings -> TLS Certificates Background: diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0900-cs-management-requests.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0900-cs-management-requests.feature index 24c82d7672..ad01f1df7e 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0900-cs-management-requests.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0900-cs-management-requests.feature @@ -11,7 +11,6 @@ Feature: 0900 - CS: Management Requests And Create API key button is clicked And Role "Registration Officer" is being clicked And Create API key wizard next button is clicked - And Create API key wizard Create Key button is clicked And API key is created and visible Then API key is set to token REGISTRATION_OFFICER and in Authentication header And Create API key wizard Finish button is clicked diff --git a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0970-cs-settings-management-services.feature b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0970-cs-settings-management-services.feature index 159fee09cd..137851a066 100644 --- a/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0970-cs-settings-management-services.feature +++ b/src/central-server/admin-service/ui-system-test/src/intTest/resources/behavior/ui/0970-cs-settings-management-services.feature @@ -1,4 +1,5 @@ @CentralServer +@Settings @ManagementServices Feature: 0970 - CS: Settings -> System Settings -> Management Services diff --git a/src/central-server/admin-service/ui/license-check-and-add-config.json b/src/central-server/admin-service/ui/license-check-and-add-config.json deleted file mode 100644 index 15bb287ee9..0000000000 --- a/src/central-server/admin-service/ui/license-check-and-add-config.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "ignore": [ - ".idea", - ".gradle/", - "frontend.iml", - "*.iml", - "**/*.md", - "**/*.svg", - "**/*.eot", - "**/*.ttf", - "**/*.xml", - "**/*.woff", - "**/*.DS_Store", - "**/*.config.js", - "**/*.cer", - "**/*.log", - "**/*.gradle.kts", - "**/*.yaml*", - "**/.*", - "src/openapi-types/", - "src/mock-openapi-types/", - "**/openapi-types.ts", - "scripts/dtsgen-wrapper.js", - "tests/e2e/testdata/", - "build/", - ".settings/**" - ], - "license": "../../../LICENSE.txt", - "licenseFormats": { - "ts|js|css|scss": { - "prepend": "/*", - "append": " */", - "eachLine": { - "prepend": " * " - } - }, - "vue": { - "prepend": "", - "eachLine": { - "prepend": " " - } - } - }, - "trailingWhitespace": "TRIM" -} diff --git a/src/central-server/admin-service/ui/package.json b/src/central-server/admin-service/ui/package.json index 55e17d5f4f..b7f30f40c8 100644 --- a/src/central-server/admin-service/ui/package.json +++ b/src/central-server/admin-service/ui/package.json @@ -12,8 +12,8 @@ "type-check": "vue-tsc --noEmit -p tsconfig.json --composite false", "lint": "eslint . --fix", "format": "prettier --write src/", - "license-check": "license-check-and-add check -f license-check-and-add-config.json", - "license-add": "license-check-and-add add -f license-check-and-add-config.json", + "license-check": "license-check-and-add check -f ../../../shared-ui/license-check-and-add-config.json", + "license-add": "license-check-and-add add -f ../../../shared-ui/license-check-and-add-config.json", "bundle-openapi": "rm -rf src/openapi-types && swagger-cli bundle -t yaml -o ./build/openapi/openapi-definition-bundled.yaml ../../openapi-model/src/main/resources/openapi-definition.yaml", "generate-types": "pnpm run bundle-openapi && openapi --input ./build/openapi/openapi-definition-bundled.yaml --output ./src/openapi-types --exportCore false --exportServices false" }, diff --git a/src/central-server/admin-service/ui/public/favicon-16x16.png b/src/central-server/admin-service/ui/public/favicon-16x16.png new file mode 100644 index 0000000000..c51fe0d3eb Binary files /dev/null and b/src/central-server/admin-service/ui/public/favicon-16x16.png differ diff --git a/src/central-server/admin-service/ui/public/favicon-32x32.png b/src/central-server/admin-service/ui/public/favicon-32x32.png new file mode 100644 index 0000000000..5c29413ec0 Binary files /dev/null and b/src/central-server/admin-service/ui/public/favicon-32x32.png differ diff --git a/src/central-server/admin-service/ui/public/favicon.ico b/src/central-server/admin-service/ui/public/favicon.ico index c36cda0d9e..c51fe0d3eb 100644 Binary files a/src/central-server/admin-service/ui/public/favicon.ico and b/src/central-server/admin-service/ui/public/favicon.ico differ diff --git a/src/central-server/admin-service/ui/src/App.vue b/src/central-server/admin-service/ui/src/App.vue index f864b5059b..18726e5090 100644 --- a/src/central-server/admin-service/ui/src/App.vue +++ b/src/central-server/admin-service/ui/src/App.vue @@ -25,63 +25,38 @@ THE SOFTWARE. --> - - - - + diff --git a/src/central-server/admin-service/ui/src/api-types.ts b/src/central-server/admin-service/ui/src/api-types.ts index 96edbaea50..6d62336376 100644 --- a/src/central-server/admin-service/ui/src/api-types.ts +++ b/src/central-server/admin-service/ui/src/api-types.ts @@ -24,12 +24,6 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -// Used in api-keys endpoints, but not defined in OpenAPI definitions -export interface ApiKey { - id: number; - roles: string[]; - key?: string; -} // return value of notifications/session-status export type SessionStatus = { diff --git a/src/central-server/admin-service/ui/src/assets/settings.scss b/src/central-server/admin-service/ui/src/assets/settings.scss index 8e9d455bad..0c613d68a4 100644 --- a/src/central-server/admin-service/ui/src/assets/settings.scss +++ b/src/central-server/admin-service/ui/src/assets/settings.scss @@ -24,9 +24,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ -@use '@niis/shared-ui/src/assets/colors'; @use 'vuetify/settings' with ( + $layers: false, + $table-row-height: 56px, +$button-text-transform: none, + $field-outline-opacity: .4, + $ripple-animation-visible-opacity: .24, + $body-font-family: ('Open Sans', sans-serif), + $overlay-opacity: 0.6, + $overlay-scrim-background: #0B283E, + $field-control-padding-bottom: 8px, ); - diff --git a/src/central-server/admin-service/ui/src/assets/styles.css b/src/central-server/admin-service/ui/src/assets/styles.css new file mode 100644 index 0000000000..a733118358 --- /dev/null +++ b/src/central-server/admin-service/ui/src/assets/styles.css @@ -0,0 +1,26 @@ +/* + * The MIT License + * + * Copyright (c) 2019- Nordic Institute for Interoperability Solutions (NIIS) + * Copyright (c) 2018 Estonian Information System Authority (RIA), + * Nordic Institute for Interoperability Solutions (NIIS), Population Register Centre (VRK) + * Copyright (c) 2015-2017 Estonian Information System Authority (RIA), Population Register Centre (VRK) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ diff --git a/src/central-server/admin-service/ui/src/components/ui/AlertsContainer.vue b/src/central-server/admin-service/ui/src/components/AlertsContainer.vue similarity index 77% rename from src/central-server/admin-service/ui/src/components/ui/AlertsContainer.vue rename to src/central-server/admin-service/ui/src/components/AlertsContainer.vue index a73d0fe755..83e8961be5 100644 --- a/src/central-server/admin-service/ui/src/components/ui/AlertsContainer.vue +++ b/src/central-server/admin-service/ui/src/components/AlertsContainer.vue @@ -25,28 +25,13 @@ THE SOFTWARE. --> - diff --git a/src/central-server/admin-service/ui/src/components/ContextualAlerts.vue b/src/central-server/admin-service/ui/src/components/ContextualAlerts.vue new file mode 100644 index 0000000000..731cd5e0c3 --- /dev/null +++ b/src/central-server/admin-service/ui/src/components/ContextualAlerts.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/central-server/admin-service/ui/src/components/GlobalAlerts.vue b/src/central-server/admin-service/ui/src/components/GlobalAlerts.vue new file mode 100644 index 0000000000..9f5de32e94 --- /dev/null +++ b/src/central-server/admin-service/ui/src/components/GlobalAlerts.vue @@ -0,0 +1,139 @@ + + + + diff --git a/src/central-server/admin-service/ui/src/components/ui/ContextualAlerts.vue b/src/central-server/admin-service/ui/src/components/InitNotification.vue similarity index 59% rename from src/central-server/admin-service/ui/src/components/ui/ContextualAlerts.vue rename to src/central-server/admin-service/ui/src/components/InitNotification.vue index a56ecf1e67..2982e62b21 100644 --- a/src/central-server/admin-service/ui/src/components/ui/ContextualAlerts.vue +++ b/src/central-server/admin-service/ui/src/components/InitNotification.vue @@ -25,39 +25,46 @@ THE SOFTWARE. --> +import { useNotifications, XrdBtn } from '@niis/shared-ui'; + +import { KEY_CONTINUE_INIT } from '@/global'; - + diff --git a/src/central-server/admin-service/ui/src/components/certificate/CertificateHash.vue b/src/central-server/admin-service/ui/src/components/certificate/CertificateHash.vue deleted file mode 100644 index d1ddfebcae..0000000000 --- a/src/central-server/admin-service/ui/src/components/certificate/CertificateHash.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/certificate/CertificateInfo.vue b/src/central-server/admin-service/ui/src/components/certificate/CertificateInfo.vue deleted file mode 100644 index dcde067da0..0000000000 --- a/src/central-server/admin-service/ui/src/components/certificate/CertificateInfo.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - - diff --git a/src/central-server/admin-service/ui/src/components/certificate/CertificateLine.vue b/src/central-server/admin-service/ui/src/components/certificate/CertificateLine.vue deleted file mode 100644 index d84c4fcce5..0000000000 --- a/src/central-server/admin-service/ui/src/components/certificate/CertificateLine.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/certificationServices/AddCertificationServiceDialog.vue b/src/central-server/admin-service/ui/src/components/certificationServices/AddCertificationServiceDialog.vue deleted file mode 100644 index 0706592cb6..0000000000 --- a/src/central-server/admin-service/ui/src/components/certificationServices/AddCertificationServiceDialog.vue +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/intermediateCas/IntermediateCasList.vue b/src/central-server/admin-service/ui/src/components/intermediateCas/IntermediateCasList.vue deleted file mode 100644 index 72f16a6f34..0000000000 --- a/src/central-server/admin-service/ui/src/components/intermediateCas/IntermediateCasList.vue +++ /dev/null @@ -1,262 +0,0 @@ - - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/MrActionsCell.vue b/src/central-server/admin-service/ui/src/components/managementRequests/MrActionsCell.vue deleted file mode 100644 index a1f93d48dd..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/MrActionsCell.vue +++ /dev/null @@ -1,159 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/MrStatusCell.vue b/src/central-server/admin-service/ui/src/components/managementRequests/MrStatusCell.vue deleted file mode 100644 index 11471f7a71..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/MrStatusCell.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/MrTypeCell.vue b/src/central-server/admin-service/ui/src/components/managementRequests/MrTypeCell.vue deleted file mode 100644 index dd03f0bf4c..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/MrTypeCell.vue +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/details/DetailsBlock.vue b/src/central-server/admin-service/ui/src/components/managementRequests/details/DetailsBlock.vue deleted file mode 100644 index 3f0b502c30..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/details/DetailsBlock.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/details/MrClientInformation.vue b/src/central-server/admin-service/ui/src/components/managementRequests/details/MrClientInformation.vue deleted file mode 100644 index fb0a293942..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/details/MrClientInformation.vue +++ /dev/null @@ -1,101 +0,0 @@ - - - - diff --git a/src/central-server/admin-service/ui/src/components/managementRequests/details/MrSecurityServerInformation.vue b/src/central-server/admin-service/ui/src/components/managementRequests/details/MrSecurityServerInformation.vue deleted file mode 100644 index 9730c576a1..0000000000 --- a/src/central-server/admin-service/ui/src/components/managementRequests/details/MrSecurityServerInformation.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - diff --git a/src/central-server/admin-service/ui/src/components/systemSettings/managementServices/ManagementServices.vue b/src/central-server/admin-service/ui/src/components/systemSettings/managementServices/ManagementServices.vue deleted file mode 100644 index a8ed7b1100..0000000000 --- a/src/central-server/admin-service/ui/src/components/systemSettings/managementServices/ManagementServices.vue +++ /dev/null @@ -1,289 +0,0 @@ - - - - - - diff --git a/src/central-server/admin-service/ui/src/components/timestampingServices/TimestampingServiceCertificate.vue b/src/central-server/admin-service/ui/src/components/timestampingServices/TimestampingServiceCertificate.vue deleted file mode 100644 index 33b7d122d9..0000000000 --- a/src/central-server/admin-service/ui/src/components/timestampingServices/TimestampingServiceCertificate.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - diff --git a/src/central-server/admin-service/ui/src/components/tokens/KeysTable.vue b/src/central-server/admin-service/ui/src/components/tokens/KeysTable.vue deleted file mode 100644 index 5d24aee71e..0000000000 --- a/src/central-server/admin-service/ui/src/components/tokens/KeysTable.vue +++ /dev/null @@ -1,205 +0,0 @@ - -