X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-pdp%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fpdp%2Fpersistence%2Fprovider%2FPdpProviderTest.java;h=620b8184cf8b0ff5ea0670d555a4f76519710cbd;hb=d19537308cbdce440c1faf819eb586983d0a67c9;hp=7dc5d3ae825d253e63c756844fbf289c98ef4354;hpb=ce850be00732359bb04d8dd3666a1293dbf8f1ff;p=policy%2Fmodels.git diff --git a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java index 7dc5d3ae8..620b8184c 100644 --- a/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java +++ b/models-pdp/src/test/java/org/onap/policy/models/pdp/persistence/provider/PdpProviderTest.java @@ -1,7 +1,8 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019-2021,2023 Nordix Foundation. + * Modifications Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2023 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,21 +22,25 @@ package org.onap.policy.models.pdp.persistence.provider; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertTrue; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Properties; -import org.eclipse.persistence.config.PersistenceUnitProperties; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.models.base.PfModelException; +import org.onap.policy.models.base.PfModelRuntimeException; +import org.onap.policy.models.base.Validated; import org.onap.policy.models.dao.DaoParameters; import org.onap.policy.models.dao.PfDao; import org.onap.policy.models.dao.PfDaoFactory; @@ -44,12 +49,14 @@ import org.onap.policy.models.pdp.concepts.Pdp; import org.onap.policy.models.pdp.concepts.PdpGroup; import org.onap.policy.models.pdp.concepts.PdpGroupFilter; import org.onap.policy.models.pdp.concepts.PdpGroups; -import org.onap.policy.models.pdp.concepts.PdpStatistics; +import org.onap.policy.models.pdp.concepts.PdpPolicyStatus; +import org.onap.policy.models.pdp.concepts.PdpPolicyStatus.PdpPolicyStatusBuilder; +import org.onap.policy.models.pdp.concepts.PdpPolicyStatus.State; import org.onap.policy.models.pdp.concepts.PdpSubGroup; import org.onap.policy.models.pdp.enums.PdpHealthStatus; import org.onap.policy.models.pdp.enums.PdpState; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyIdentifier; -import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicyTypeIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion; import org.onap.policy.models.tosca.simple.provider.SimpleToscaProvider; /** @@ -64,9 +71,14 @@ public class PdpProviderTest { private static final String GROUP_IS_NULL = "pdpGroupName is marked .*ull but is null"; private static final String DAO_IS_NULL = "dao is marked .*ull but is null"; private static final String PDP_GROUP0 = "PdpGroup0"; + private static final String GROUP_A = "groupA"; + private static final String GROUP_B = "groupB"; + private static final ToscaConceptIdentifier MY_POLICY = new ToscaConceptIdentifier("MyPolicy", "1.2.3"); + private static final ToscaConceptIdentifier MY_POLICY2 = new ToscaConceptIdentifier("MyPolicyB", "2.3.4"); + private PfDao pfDao; private StandardCoder standardCoder; - + private PdpPolicyStatusBuilder statusBuilder; /** * Set up the DAO towards the database. @@ -81,12 +93,16 @@ public class PdpProviderTest { daoParameters.setPersistenceUnit("ToscaConceptTest"); Properties jdbcProperties = new Properties(); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_USER, "policy"); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_PASSWORD, "P01icY"); + jdbcProperties.setProperty("javax.persistence.jdbc.user", "policy"); + jdbcProperties.setProperty("javax.persistence.jdbc.password", "P01icY"); - // H2, use "org.mariadb.jdbc.Driver" and "jdbc:mariadb://localhost:3306/policy" for locally installed MariaDB - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_DRIVER, "org.h2.Driver"); - jdbcProperties.setProperty(PersistenceUnitProperties.JDBC_URL, "jdbc:h2:mem:testdb"); + if (System.getProperty("USE-MARIADB") != null) { + jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.mariadb.jdbc.Driver"); + jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:mariadb://localhost:3306/policy"); + } else { + jdbcProperties.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver"); + jdbcProperties.setProperty("javax.persistence.jdbc.url", "jdbc:h2:mem:PdpProviderTest"); + } daoParameters.setJdbcProperties(jdbcProperties); @@ -102,6 +118,17 @@ public class PdpProviderTest { standardCoder = new StandardCoder(); } + /** + * Set up Policy Status builder. + */ + @Before + public void setupBuilder() { + ToscaConceptIdentifier policyType = new ToscaConceptIdentifier("MyPolicyType", "1.2.4"); + + statusBuilder = PdpPolicyStatus.builder().deploy(true).pdpType("MyPdpType").policy(MY_POLICY) + .policyType(policyType).state(State.SUCCESS); + } + @After public void teardown() { pfDao.close(); @@ -152,11 +179,11 @@ public class PdpProviderTest { assertEquals(5, new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()).size()); - List policyTypeList = new ArrayList<>(); - policyTypeList.add(new ToscaPolicyTypeIdentifier("policy.type.0", "1.2.3")); + List policyTypeList = new ArrayList<>(); + policyTypeList.add(new ToscaConceptIdentifier("policy.type.0", "1.2.3")); - List policyList = new ArrayList<>(); - policyList.add(new ToscaPolicyIdentifier("Policy0", "4.5.6")); + List policyList = new ArrayList<>(); + policyList.add(new ToscaConceptIdentifier("Policy0", "4.5.6")); // @formatter:off final PdpGroupFilter filter = PdpGroupFilter.builder() @@ -204,7 +231,8 @@ public class PdpProviderTest { pdpGroups0.getGroups().get(0).setPdpGroupState(null); assertThatThrownBy(() -> { new PdpProvider().createPdpGroups(pfDao, pdpGroups0.getGroups()); - }).hasMessageContaining("INVALID:pdpGroupState may not be null"); + }).hasMessageContaining("PDP group").hasMessageContaining("pdpGroupState") + .hasMessageContaining(Validated.IS_NULL); } @Test @@ -269,7 +297,8 @@ public class PdpProviderTest { pdpGroups0.getGroups().get(0).setPdpGroupState(null); assertThatThrownBy(() -> { new PdpProvider().updatePdpGroups(pfDao, pdpGroups0.getGroups()); - }).hasMessageContaining("INVALID:pdpGroupState may not be null"); + }).hasMessageContaining("PDP group").hasMessageContaining("pdpGroupState") + .hasMessageContaining(Validated.IS_NULL); } @Test @@ -375,7 +404,8 @@ public class PdpProviderTest { existingSubGroup.setDesiredInstanceCount(-1); assertThatThrownBy(() -> { new PdpProvider().updatePdpSubGroup(pfDao, PDP_GROUP0, existingSubGroup); - }).hasMessageContaining("INVALID:the desired instance count of a PDP sub group may not be negative"); + }).hasMessageContaining("PDP sub group").hasMessageContaining("desiredInstanceCount") + .hasMessageContaining("below the minimum value"); existingSubGroup.setDesiredInstanceCount(10); } @@ -466,156 +496,190 @@ public class PdpProviderTest { List afterUpdatePdpGroups = new PdpProvider().getPdpGroups(pfDao, PDP_GROUP0); assertEquals(PdpState.TEST, - afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getPdpState()); + afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getPdpState()); assertEquals(PdpHealthStatus.TEST_IN_PROGRESS, - afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getHealthy()); + afterUpdatePdpGroups.get(0).getPdpSubgroups().get(0).getPdpInstances().get(0).getHealthy()); existingPdp.setMessage(""); assertThatThrownBy(() -> { new PdpProvider().updatePdp(pfDao, PDP_GROUP0, "APEX", existingPdp); - }).hasMessageContaining("INVALID:message may not be blank"); + }).hasMessageContaining("PDP").hasMessageContaining("message").hasMessageContaining(Validated.IS_BLANK); existingPdp.setMessage("A Message"); } @Test - public void testGetPdpStatistics() throws PfModelException { + public void testGetAllPolicyStatusPfDao() throws PfModelException { assertThatThrownBy(() -> { - new PdpProvider().getPdpStatistics(null, null); + new PdpProvider().getAllPolicyStatus(null); }).hasMessageMatching(DAO_IS_NULL); - assertThatThrownBy(() -> { - new PdpProvider().getPdpStatistics(null, "name"); - }).hasMessageMatching(DAO_IS_NULL); + assertThat(new PdpProvider().getAllPolicyStatus(pfDao)).isEmpty(); - assertEquals(0, new PdpProvider().getPdpStatistics(pfDao, "name").size()); + PdpProvider provider = loadDeployments(); + assertThat(provider.getAllPolicyStatus(pfDao)).hasSize(5); } - @Test - public void testUpdatePdpStatistics() throws PfModelException { - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, null, null, null); - }).hasMessageMatching(DAO_IS_NULL); + private PdpProvider loadDeployments() { + PdpProvider provider = new PdpProvider(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, null, null, new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + // same name, different version + final ToscaConceptIdentifier policy3 = new ToscaConceptIdentifier(MY_POLICY.getName(), "10.20.30"); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, null, "inst", null); - }).hasMessageMatching(DAO_IS_NULL); + PdpPolicyStatus id1 = statusBuilder.pdpGroup(GROUP_A).pdpId("pdp1").policy(MY_POLICY).build(); + PdpPolicyStatus id2 = statusBuilder.pdpGroup(GROUP_A).pdpId("pdp2").policy(MY_POLICY2).build(); + PdpPolicyStatus id3 = statusBuilder.pdpGroup(GROUP_A).pdpId("pdp3").policy(policy3).build(); + PdpPolicyStatus id4 = statusBuilder.pdpGroup(GROUP_B).pdpId("pdp4").policy(MY_POLICY).build(); + PdpPolicyStatus id5 = statusBuilder.pdpGroup(GROUP_B).pdpId("pdp5").policy(MY_POLICY2).build(); + provider.cudPolicyStatus(pfDao, List.of(id1, id2, id3, id4, id5), null, null); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, null, "inst", new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + return provider; + } + @Test + public void testGetAllPolicyStatusPfDaoToscaConceptIdentifierOptVersion() throws PfModelException { assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, "TYPE", null, null); + new PdpProvider().getAllPolicyStatus(null, new ToscaConceptIdentifierOptVersion("somePdp", null)); }).hasMessageMatching(DAO_IS_NULL); assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, "TYPE", null, new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + new PdpProvider().getAllPolicyStatus(pfDao, null); + }).hasMessageContaining("policy").hasMessageContaining("null"); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, "TYPE", "inst", null); - }).hasMessageMatching(DAO_IS_NULL); + assertThat(new PdpProvider().getAllPolicyStatus(pfDao, new ToscaConceptIdentifierOptVersion("somePdp", null))) + .isEmpty(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, null, "TYPE", "inst", new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + PdpProvider provider = loadDeployments(); + assertThat(provider.getAllPolicyStatus(pfDao, new ToscaConceptIdentifierOptVersion(MY_POLICY))).hasSize(2); + assertThat(provider.getAllPolicyStatus(pfDao, new ToscaConceptIdentifierOptVersion(MY_POLICY.getName(), null))) + .hasSize(3); + } + @Test + public void testGetGroupPolicyStatus() throws PfModelException { assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", null, null, null); + new PdpProvider().getGroupPolicyStatus(null, "someGroup"); }).hasMessageMatching(DAO_IS_NULL); assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", null, null, new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + new PdpProvider().getGroupPolicyStatus(pfDao, null); + }).hasMessageContaining("group").hasMessageContaining("null"); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", null, "inst", null); - }).hasMessageMatching(DAO_IS_NULL); + assertThat(new PdpProvider().getGroupPolicyStatus(pfDao, PDP_GROUP0)).isEmpty(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", null, "inst", new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + PdpProvider provider = loadDeployments(); + assertThat(provider.getGroupPolicyStatus(pfDao, GROUP_A)).hasSize(3); + } - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", "TYPE", null, null); - }).hasMessageMatching(DAO_IS_NULL); + @Test + public void cudPolicyStatus() throws PfModelException { + PdpProvider prov = new PdpProvider(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", "TYPE", null, new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + assertThatThrownBy(() -> prov.cudPolicyStatus(null, List.of(), List.of(), List.of())) + .hasMessageMatching(DAO_IS_NULL); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", "TYPE", "inst", null); - }).hasMessageMatching(DAO_IS_NULL); + // null collections should be OK + assertThatCode(() -> prov.cudPolicyStatus(pfDao, null, null, null)).doesNotThrowAnyException(); + } - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(null, "name", "TYPE", "inst", new PdpStatistics()); - }).hasMessageMatching(DAO_IS_NULL); + @Test + public void cudPolicyStatus_Create() throws PfModelException { + PdpProvider prov = new PdpProvider(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, null, null, null); - }).hasMessageMatching(GROUP_IS_NULL); + PdpPolicyStatus idx = statusBuilder.pdpGroup(GROUP_A).pdpId("idX").build(); + PdpPolicyStatus idy = statusBuilder.pdpGroup(GROUP_A).pdpId("idY").build(); + PdpPolicyStatus idz = statusBuilder.pdpGroup(GROUP_B).pdpId("idZ").build(); + prov.cudPolicyStatus(pfDao, List.of(idx, idy), null, null); + prov.cudPolicyStatus(pfDao, List.of(idz), null, null); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, null, null, new PdpStatistics()); - }).hasMessageMatching(GROUP_IS_NULL); + List records = prov.getGroupPolicyStatus(pfDao, GROUP_A); + assertThat(records).hasSize(2); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, null, "inst", null); - }).hasMessageMatching(GROUP_IS_NULL); + Collections.sort(records, (rec1, rec2) -> rec1.getPdpId().compareTo(rec2.getPdpId())); + assertThat(records.get(0)).isEqualTo(idx); + assertThat(records.get(1)).isEqualTo(idy); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, null, "inst", new PdpStatistics()); - }).hasMessageMatching(GROUP_IS_NULL); + records = prov.getGroupPolicyStatus(pfDao, GROUP_B); + assertThat(records).hasSize(1); + assertThat(records.get(0)).isEqualTo(idz); + } - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, "TYPE", null, null); - }).hasMessageMatching(GROUP_IS_NULL); + @Test + public void cudPolicyStatus_Update() throws PfModelException { + PdpProvider prov = new PdpProvider(); + + PdpPolicyStatus idw = statusBuilder.pdpGroup(GROUP_A).pdpId("wId").build(); + PdpPolicyStatus idx = statusBuilder.pdpGroup(GROUP_A).pdpId("xId").build(); + PdpPolicyStatus idy = statusBuilder.pdpGroup(GROUP_A).pdpId("yId").build(); + PdpPolicyStatus idz = statusBuilder.pdpGroup(GROUP_A).pdpId("zId").build(); + prov.cudPolicyStatus(pfDao, List.of(idw, idx, idy, idz), null, null); + + assertThat(prov.getGroupPolicyStatus(pfDao, GROUP_A)).hasSize(4); + + /* + * Now update some records. + */ + idx.setState(State.FAILURE); + idz.setState(State.WAITING); + prov.cudPolicyStatus(pfDao, null, List.of(idx, idz), null); + List records = prov.getGroupPolicyStatus(pfDao, GROUP_A); + assertThat(records).hasSize(4); + + Collections.sort(records, (rec1, rec2) -> rec1.getPdpId().compareTo(rec2.getPdpId())); + assertThat(records.get(0)).isEqualTo(idw); + assertThat(records.get(1)).isEqualTo(idx); + assertThat(records.get(2)).isEqualTo(idy); + assertThat(records.get(3)).isEqualTo(idz); + } - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, "TYPE", null, new PdpStatistics()); - }).hasMessageMatching(GROUP_IS_NULL); + @Test + public void cudPolicyStatus_Delete() throws PfModelException { + PdpProvider prov = new PdpProvider(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, "TYPE", "inst", null); - }).hasMessageMatching(GROUP_IS_NULL); + PdpPolicyStatus idw = statusBuilder.pdpGroup(GROUP_A).pdpId("idW").build(); + PdpPolicyStatus idx = statusBuilder.pdpGroup(GROUP_A).pdpId("idX").build(); + PdpPolicyStatus idy = statusBuilder.pdpGroup(GROUP_A).pdpId("idY").build(); + PdpPolicyStatus idz = statusBuilder.pdpGroup(GROUP_A).pdpId("idZ").build(); + prov.cudPolicyStatus(pfDao, List.of(idw, idx, idy, idz), null, null); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, null, "TYPE", "inst", new PdpStatistics()); - }).hasMessageMatching(GROUP_IS_NULL); + assertThat(prov.getGroupPolicyStatus(pfDao, GROUP_A)).hasSize(4); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, null); - }).hasMessageMatching(PDP_TYPE_IS_NULL); + /* + * Delete some records and then check again. + */ + prov.cudPolicyStatus(pfDao, null, null, List.of(idw, idy)); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", null, null, new PdpStatistics()); - }).hasMessageMatching(PDP_TYPE_IS_NULL); + List records = prov.getGroupPolicyStatus(pfDao, GROUP_A); + assertThat(records).hasSize(2); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", null, "inst", null); - }).hasMessageMatching(PDP_TYPE_IS_NULL); + Collections.sort(records, (rec1, rec2) -> rec1.getPdpId().compareTo(rec2.getPdpId())); + assertThat(records.get(0)).isEqualTo(idx); + assertThat(records.get(1)).isEqualTo(idz); + } - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", null, "inst", new PdpStatistics()); - }).hasMessageMatching(PDP_TYPE_IS_NULL); + @Test + public void testFromAuthorativeStatus() throws PfModelException { + PdpProvider prov = new PdpProvider(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", "TYPE", null, null); - }).hasMessageMatching("pdpInstanceId is marked .*ull but is null"); + assertThatCode(() -> prov.cudPolicyStatus(pfDao, null, null, null)).doesNotThrowAnyException(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", "TYPE", null, new PdpStatistics()); - }).hasMessageMatching("pdpInstanceId is marked .*ull but is null"); + PdpPolicyStatus ida = statusBuilder.pdpGroup(GROUP_A).pdpId("idA").build(); + PdpPolicyStatus idb = statusBuilder.pdpGroup(GROUP_A).pdpId("idB").build(); + PdpPolicyStatus idc = statusBuilder.pdpGroup(GROUP_A).pdpId("idC").build(); + PdpPolicyStatus idd = statusBuilder.pdpGroup(GROUP_A).pdpId("idD").build(); - assertThatThrownBy(() -> { - new PdpProvider().updatePdpStatistics(pfDao, "name", "TYPE", "inst", null); - }).hasMessageMatching("pdpStatistics is marked .*ull but is null"); + // make a couple invalid records + idb.setState(null); + idd.setState(null); + + List list = List.of(ida, idb, idc, idd); + + // @formatter:off + assertThatCode(() -> prov.cudPolicyStatus(pfDao, list, null, null)) + .isInstanceOf(PfModelRuntimeException.class) + .hasMessageContaining("1").hasMessageContaining("3") + .hasMessageNotContaining("0").hasMessageNotContaining("2"); + // @formatter:on - new PdpProvider().updatePdpStatistics(pfDao, "name", "TYPE", "inst", new PdpStatistics()); + assertThat(prov.getGroupPolicyStatus(pfDao, GROUP_A)).isEmpty(); } }