diff --git a/src/main/java/uk/co/bconline/ndelius/model/entity/LDUEntity.java b/src/main/java/uk/co/bconline/ndelius/model/entity/LDUEntity.java deleted file mode 100644 index 847673ae..00000000 --- a/src/main/java/uk/co/bconline/ndelius/model/entity/LDUEntity.java +++ /dev/null @@ -1,33 +0,0 @@ -package uk.co.bconline.ndelius.model.entity; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.SequenceGenerator; -import javax.persistence.Table; -import java.io.Serializable; - -@Getter -@Entity -@NoArgsConstructor -@AllArgsConstructor -@Table(name = "LOCAL_DELIVERY_UNIT") -public class LDUEntity implements Serializable -{ - @Id - @Column(name = "LOCAL_DELIVERY_UNIT_ID") - @GeneratedValue(generator = "LOCAL_DELIVERY_UNIT_ID_SEQ") - @SequenceGenerator(name = "LOCAL_DELIVERY_UNIT_ID_SEQ", sequenceName = "LOCAL_DELIVERY_UNIT_ID_SEQ", allocationSize = 1) - private Long id; - - @Column(name = "CODE") - private String code; - - @Column(name = "DESCRIPTION") - private String description; -} diff --git a/src/main/java/uk/co/bconline/ndelius/model/entity/export/BoroughExportEntity.java b/src/main/java/uk/co/bconline/ndelius/model/entity/export/BoroughExportEntity.java index 41589cee..c401bf93 100644 --- a/src/main/java/uk/co/bconline/ndelius/model/entity/export/BoroughExportEntity.java +++ b/src/main/java/uk/co/bconline/ndelius/model/entity/export/BoroughExportEntity.java @@ -35,6 +35,6 @@ public class BoroughExportEntity implements Serializable { private ProbationAreaExportEntity probationArea; public String getExportDescription() { - return description + " (" + code + ") " + (isSelectable() ? " [Active]" : " [Inactive]"); + return description + " (" + code + ")" + (isSelectable() ? "" : " [Inactive]"); } } diff --git a/src/main/java/uk/co/bconline/ndelius/model/entity/export/DistrictExportEntity.java b/src/main/java/uk/co/bconline/ndelius/model/entity/export/DistrictExportEntity.java index d72f15d3..06fe93a3 100644 --- a/src/main/java/uk/co/bconline/ndelius/model/entity/export/DistrictExportEntity.java +++ b/src/main/java/uk/co/bconline/ndelius/model/entity/export/DistrictExportEntity.java @@ -36,6 +36,6 @@ public class DistrictExportEntity implements Serializable private BoroughExportEntity borough; public String getExportDescription() { - return description + " (" + code + ") " + (isSelectable() ? " [Active]" : " [Inactive]"); + return description + " (" + code + ")" + (isSelectable() ? "" : " [Inactive]"); } } diff --git a/src/main/java/uk/co/bconline/ndelius/model/entity/export/ProbationAreaExportEntity.java b/src/main/java/uk/co/bconline/ndelius/model/entity/export/ProbationAreaExportEntity.java index 2a023c65..a339cd07 100644 --- a/src/main/java/uk/co/bconline/ndelius/model/entity/export/ProbationAreaExportEntity.java +++ b/src/main/java/uk/co/bconline/ndelius/model/entity/export/ProbationAreaExportEntity.java @@ -3,7 +3,6 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; -import org.hibernate.annotations.Cache; import org.hibernate.annotations.Type; import javax.persistence.*; @@ -11,7 +10,6 @@ import java.time.LocalDate; import static java.time.LocalDate.now; -import static org.hibernate.annotations.CacheConcurrencyStrategy.READ_ONLY; @Entity @Getter @@ -37,6 +35,6 @@ public class ProbationAreaExportEntity implements Serializable { public String getExportDescription() { - return description + " (" + code + ") " + ((getEndDate() != null && getEndDate().isBefore(now())) ? " [Inactive]" : " [Active]"); + return description + " (" + code + ")" + ((getEndDate() != null && getEndDate().isBefore(now())) ? " [Inactive]" : ""); } } diff --git a/src/main/java/uk/co/bconline/ndelius/model/entity/export/TeamExportEntity.java b/src/main/java/uk/co/bconline/ndelius/model/entity/export/TeamExportEntity.java index 759b7170..8843c828 100644 --- a/src/main/java/uk/co/bconline/ndelius/model/entity/export/TeamExportEntity.java +++ b/src/main/java/uk/co/bconline/ndelius/model/entity/export/TeamExportEntity.java @@ -37,8 +37,7 @@ public class TeamExportEntity implements Serializable { @Type(type = "java.time.LocalDate") private LocalDate endDate; - public String getExportDescription() - { - return description + " (" + code + ") " + ((getEndDate() != null && getEndDate().isBefore(now())) ? " [Inactive]" : " [Active]"); + public String getExportDescription() { + return description + " (" + code + ")" + ((getEndDate() != null && getEndDate().isBefore(now())) ? " [Inactive]" : ""); } } diff --git a/src/main/java/uk/co/bconline/ndelius/service/UserRoleService.java b/src/main/java/uk/co/bconline/ndelius/service/UserRoleService.java index 683f7d79..90841d5c 100644 --- a/src/main/java/uk/co/bconline/ndelius/service/UserRoleService.java +++ b/src/main/java/uk/co/bconline/ndelius/service/UserRoleService.java @@ -9,7 +9,6 @@ public interface UserRoleService { Set getRolesICanAssign(); Set getUserRoles(String username); - Set getUserRoleNames(String username); List getAllUsersWithRole(String role); Set getClientRoles(String clientId); diff --git a/src/main/java/uk/co/bconline/ndelius/service/impl/UserRoleServiceImpl.java b/src/main/java/uk/co/bconline/ndelius/service/impl/UserRoleServiceImpl.java index f3d3ce58..93096050 100644 --- a/src/main/java/uk/co/bconline/ndelius/service/impl/UserRoleServiceImpl.java +++ b/src/main/java/uk/co/bconline/ndelius/service/impl/UserRoleServiceImpl.java @@ -93,7 +93,7 @@ public Set getUserRoles(String username) { @Override public Set getUserRoleNames(String username) { return stream(getAssignedRoleAssociations(username, usersBase).spliterator(), false) - .map(RoleAssociationEntry::getName) + .map(RoleAssociationEntry::getCn) .collect(toSet()); } diff --git a/src/main/resources/data.ldif b/src/main/resources/data.ldif index 25890c5e..a3244404 100644 --- a/src/main/resources/data.ldif +++ b/src/main/resources/data.ldif @@ -521,7 +521,7 @@ dn: cn=UABT0052,cn=test.user.private,ou=Users,dc=bcl,dc=local objectclass: top objectclass: alias objectclass: NDRoleAssociation -cn: UABT0051 +cn: UABT0052 aliasedObjectName: cn=UABT0052,cn=ndRoleCatalogue,ou=Users,dc=bcl,dc=local dn: cn=TestUser1,ou=Users,dc=bcl,dc=local diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index da766086..812d21ad 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -21,12 +21,19 @@ INSERT INTO PROBATION_AREA(PROBATION_AREA_ID, CODE, DESCRIPTION, ORGANISATION_ID INSERT INTO PROBATION_AREA(PROBATION_AREA_ID, CODE, DESCRIPTION, ORGANISATION_ID, ESTABLISHMENT, SELECTABLE) VALUES (PROBATION_AREA_ID_SEQ.NEXTVAL, 'NWI', 'Norwich (HMP & YOI)', ORGANISATION_ID_SEQ.CURRVAL, 'Y', 'Y'); INSERT INTO PROBATION_AREA(PROBATION_AREA_ID, CODE, DESCRIPTION, ORGANISATION_ID, ESTABLISHMENT, SELECTABLE) VALUES (PROBATION_AREA_ID_SEQ.NEXTVAL, 'PVI', 'Pentonville (HMP)', ORGANISATION_ID_SEQ.CURRVAL, 'Y', 'Y'); --- LDU/PDU -INSERT INTO BOROUGH (BOROUGH_ID, CODE, DESCRIPTION, PROBATION_AREA_ID) VALUES (BOROUGH_ID_SEQ.NEXTVAL, 'B1', 'Borough A', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE='N01')); -INSERT INTO BOROUGH (BOROUGH_ID, CODE, DESCRIPTION, PROBATION_AREA_ID) VALUES (BOROUGH_ID_SEQ.NEXTVAL, 'B2', 'Borough B', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE='N02')); -INSERT INTO LOCAL_DELIVERY_UNIT (LOCAL_DELIVERY_UNIT_ID, CODE, DESCRIPTION) VALUES (LOCAL_DELIVERY_UNIT_ID_SEQ.NEXTVAL, 'LDU1', 'Local Delivery Unit A'); -INSERT INTO LOCAL_DELIVERY_UNIT (LOCAL_DELIVERY_UNIT_ID, CODE, DESCRIPTION) VALUES (LOCAL_DELIVERY_UNIT_ID_SEQ.NEXTVAL, 'LDU2', 'Local Delivery Unit B'); +-- Probation Delivery Units +INSERT INTO BOROUGH (BOROUGH_ID, CODE, DESCRIPTION, SELECTABLE, PROBATION_AREA_ID) +VALUES (BOROUGH_ID_SEQ.NEXTVAL, 'B1', 'Borough A', 'N', + (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N01')); +INSERT INTO BOROUGH (BOROUGH_ID, CODE, DESCRIPTION, SELECTABLE, PROBATION_AREA_ID) +VALUES (BOROUGH_ID_SEQ.NEXTVAL, 'B2', 'Borough B', 'Y', + (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N02')); +-- Local Admin Units +INSERT INTO DISTRICT (DISTRICT_ID, CODE, DESCRIPTION, SELECTABLE, BOROUGH_ID) +VALUES (DISTRICT_ID_SEQ.NEXTVAL, 'LAU1', 'Local Admin Unit A', 'Y', (SELECT BOROUGH_ID FROM BOROUGH WHERE CODE = 'B1')); +INSERT INTO DISTRICT (DISTRICT_ID, CODE, DESCRIPTION, SELECTABLE, BOROUGH_ID) +VALUES (DISTRICT_ID_SEQ.NEXTVAL, 'LAU2', 'Local Admin Unit B', 'Y', (SELECT BOROUGH_ID FROM BOROUGH WHERE CODE = 'B2')); -- Sub-contracted Providers INSERT INTO SC_PROVIDER(SC_PROVIDER_ID, CODE, DESCRIPTION, ACTIVE_FLAG, PROVIDER_ID) VALUES (SC_PROVIDER_ID_SEQ.NEXTVAL, 'N01SC1', 'NPS London SC 1', 1, (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE='N01')); @@ -480,6 +487,7 @@ INSERT INTO USER_NOTE (USER_NOTE_ID, ROW_VERSION, USER_ID, LAST_UPDATED_USER_ID, VALUES (USER_NOTE_ID_SEQ.NEXTVAL, 0, (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = 'Joe.Bloggs'), (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = 'Mavis.Mehler'), CURRENT_TIMESTAMP-9.9, 'Added user management roles, to allow access to UMT.'); INSERT INTO USER_NOTE (USER_NOTE_ID, ROW_VERSION, USER_ID, LAST_UPDATED_USER_ID, LAST_UPDATED_DATETIME, NOTES) VALUES (USER_NOTE_ID_SEQ.NEXTVAL, 0, (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = 'Joe.Bloggs'), (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = '[Data Maintenance]'), CURRENT_TIMESTAMP-9.9, 'Added user management roles, to allow access to UMT.'); + -- Datasets INSERT INTO PROBATION_AREA_USER (PROBATION_AREA_ID, USER_ID) VALUES ((SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N01'), (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = 'test.user')); INSERT INTO PROBATION_AREA_USER (PROBATION_AREA_ID, USER_ID) VALUES ((SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N02'), (SELECT USER_ID FROM USER_ WHERE DISTINGUISHED_NAME = 'test.user')); @@ -490,9 +498,15 @@ INSERT INTO PROBATION_AREA_USER (PROBATION_AREA_ID, USER_ID) VALUES ((SELECT PRO -- Teams INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, END_DATE) VALUES (TEAM_ID_SEQ.NEXTVAL, 'N01TST', 'Test team (Ended)', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N01'), CURRENT_TIMESTAMP); -INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, DISTRICT_ID) VALUES (TEAM_ID_SEQ.NEXTVAL, 'N01TST', 'Test team', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N01'), (SELECT BOROUGH_ID FROM BOROUGH WHERE CODE = 'B2')); -INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, DISTRICT_ID, LOCAL_DELIVERY_UNIT_ID) VALUES (TEAM_ID_SEQ.NEXTVAL, 'N02TST', 'Other team', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N02'), (SELECT BOROUGH_ID FROM BOROUGH WHERE CODE = 'B1'), (SELECT LOCAL_DELIVERY_UNIT_ID FROM LOCAL_DELIVERY_UNIT WHERE CODE = 'LDU1')); -INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, LOCAL_DELIVERY_UNIT_ID) VALUES (TEAM_ID_SEQ.NEXTVAL, 'N03TST', 'Another', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N03'), (SELECT LOCAL_DELIVERY_UNIT_ID FROM LOCAL_DELIVERY_UNIT WHERE CODE = 'LDU1')); +INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, DISTRICT_ID) +VALUES (TEAM_ID_SEQ.NEXTVAL, 'N01TST', 'Test team', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N01'), + (SELECT DISTRICT_ID FROM DISTRICT WHERE CODE = 'LAU2')); +INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, DISTRICT_ID) +VALUES (TEAM_ID_SEQ.NEXTVAL, 'N02TST', 'Other team', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N02'), + (SELECT DISTRICT_ID FROM DISTRICT WHERE CODE = 'LAU1')); +INSERT INTO TEAM (TEAM_ID, CODE, DESCRIPTION, PROBATION_AREA_ID, DISTRICT_ID) +VALUES (TEAM_ID_SEQ.NEXTVAL, 'N03TST', 'Another', (SELECT PROBATION_AREA_ID FROM PROBATION_AREA WHERE CODE = 'N03'), + (SELECT DISTRICT_ID FROM DISTRICT WHERE CODE = 'LAU1')); INSERT INTO STAFF_TEAM (STAFF_ID, TEAM_ID) VALUES ((SELECT STAFF_ID FROM STAFF WHERE OFFICER_CODE = 'N01A001'), (SELECT TEAM_ID FROM TEAM WHERE CODE = 'N01TST' AND END_DATE IS NULL)); INSERT INTO STAFF_TEAM (STAFF_ID, TEAM_ID) VALUES ((SELECT STAFF_ID FROM STAFF WHERE OFFICER_CODE = 'N01A002'), (SELECT TEAM_ID FROM TEAM WHERE CODE = 'N01TST' AND END_DATE IS NULL)); INSERT INTO STAFF_TEAM (STAFF_ID, TEAM_ID) VALUES ((SELECT STAFF_ID FROM STAFF WHERE OFFICER_CODE = 'N01A003'), (SELECT TEAM_ID FROM TEAM WHERE CODE = 'N01TST' AND END_DATE IS NULL)); diff --git a/src/test/java/uk/co/bconline/ndelius/controller/UserControllerExportTest.java b/src/test/java/uk/co/bconline/ndelius/controller/UserControllerExportTest.java index c4db986d..31df2632 100644 --- a/src/test/java/uk/co/bconline/ndelius/controller/UserControllerExportTest.java +++ b/src/test/java/uk/co/bconline/ndelius/controller/UserControllerExportTest.java @@ -14,7 +14,6 @@ import static java.time.LocalDate.now; import static java.time.format.DateTimeFormatter.ISO_LOCAL_DATE; -import static java.time.temporal.ChronoUnit.DAYS; import static org.hamcrest.Matchers.*; import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.asyncDispatch; @@ -188,14 +187,14 @@ public void fullExportIsRestrictedToNationalAdmins() throws Exception { @Test public void dataIsDisplayedCorrectlyForFullExport() throws Exception { - String expectedHeader = "\"Username\",\"Forenames\",\"Surname\",\"Email\",\"Telephone Number\",\"Start Date\",\"End Date\",\"Last Accessed Delius\",\"Home Area\",\"Datasets\",\"Sector\",\"Staff Code\",\"Staff Grade\",\"Team\",\"LAU\",\"PDU\",\"Provider\",\"Role Descriptions\""; - String expectedStartDate = now().minus(10, DAYS).format(ISO_LOCAL_DATE); + String expectedHeader = "\"Username\",\"Forenames\",\"Surname\",\"Email\",\"Telephone Number\",\"Start Date\",\"End Date\",\"Last Accessed Delius\",\"Home Area\",\"Datasets\",\"Sector\",\"Staff Code\",\"Staff Grade\",\"Team\",\"LAU\",\"PDU\",\"Provider\",\"Role Names\""; + String expectedStartDate = now().minusDays(10).format(ISO_LOCAL_DATE); String expectedLoginDate = now().format(ISO_LOCAL_DATE);// see data.sql String[] expectedUsers = { "\n\"Abdul.Austria\",\"Abdul\",\"Austria\",\"\",\"\",\"" + expectedStartDate + "\",\"\",\"\",\"N01\",\"\",\"Public\",\"N01A168\",\"GRADE1\",\"\",\"\",\"\",\"\",\"\"", "\n\"Leia.Leaman\",\"Leia\",\"Leaman\",\"\",\"\",\"" + expectedStartDate + "\",\"\",\"\",\"N01\",\"\",\"Public\",\"N01A086\",\"GRADE1\",\"\",\"\",\"\",\"\",\"\"", "\n\"Zina.Zenon\",\"Zina\",\"Zenon\",\"\",\"\",\"" + expectedStartDate + "\",\"\",\"\",\"N01\",\"\",\"Public\",\"N01A131\",\"GRADE1\",\"\",\"\",\"\",\"\",\"\"", - "\n\"test.user\",\"Test\",\"User\",\"test.user@test.com\",\"0123 456 789\",\"2000-01-02\",\"\",\"" + expectedLoginDate + " 00:00:00\",\"N01\",\"N01,N02,N03\",\"Public\",\"N01A001\",\"GRADE1\",\"Another (N03TST) [Active],Other team (N02TST) [Active],Test team (N01TST) [Active]\",\"Local Delivery Unit A (LDU1) [Active]\",\"Borough A (B1) [Active],Borough B (B2) [Active]\",\"NPS London (N01) [Active],NPS North East (N02) [Active]\",\"APBT001,APBT002,RDBT001,SPGADBT005,UABT0050,UMBT001\"", + "\n\"test.user\",\"Test\",\"User\",\"test.user@test.com\",\"0123 456 789\",\"2000-01-02\",\"\",\"" + expectedLoginDate + " 00:00:00\",\"N01\",\"N01,N02,N03\",\"Public\",\"N01A001\",\"GRADE1\",\"Another (N03TST),Other team (N02TST),Test team (N01TST)\",\"Local Admin Unit A (LAU1),Local Admin Unit B (LAU2)\",\"Borough A (B1) [Inactive],Borough B (B2)\",\"NPS London (N01),NPS North East (N02)\",\"APBT001,APBT002,RDBT001,SPGADBT005,UABT0050,UMBT001,UMBT003\"", "\n\"test.user.private\",\"Test\",\"User (Private)\",\"test.user.private@test.com\",\"\",\"\",\"\",\"" + expectedLoginDate + " 00:00:00\",\"C01\",\"C01,C02\",\"Public\",\"\",\"\",\"\",\"\",\"\",\"\",\"UABT0052,UMBT001\""}; MvcResult asyncResult = mvc.perform(get("/api/users/export/all")