diff --git a/.gitea/workflows/build-pr.yaml b/.gitea/workflows/build-pr.yaml new file mode 100644 index 0000000..90aad01 --- /dev/null +++ b/.gitea/workflows/build-pr.yaml @@ -0,0 +1,14 @@ +name: PR Builder +run-name: ${{ gitea.actor }} building PR +on: [pull_request] + +jobs: + Build-PR: + runs-on: ubuntu-22.04 + steps: + - run: echo "The job was automatically triggered by a ${{ gitea.event_name }} event on branch ${{ gitea.head_ref }} and ref is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." + - name: Build PR + if: gitea.base_ref == 'main' + run: | + git clone --single-branch --branch "${{ gitea.head_ref }}" https://git.primefactorsolutions.com/PFS/pfs-intra.git && cd pfs-intra && ./mvnw clean package -Pproduction + - run: echo "This job's status is ${{ job.status }}." diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..e64cc3a --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,16 @@ +name: Builder +run-name: ${{ gitea.actor }} building +on: + push: + branches: + - main + +jobs: + Build-Project: + runs-on: ubuntu-22.04 + steps: + - run: echo "The job was automatically triggered by a ${{ gitea.event_name }} event on branch is ${{ gitea.ref }} and your repository is ${{ gitea.repository }}." + - name: Build package + run: | + git clone --single-branch --branch main https://git.primefactorsolutions.com/PFS/pfs-intra.git && cd pfs-intra && ./mvnw clean package -Pproduction && unlink /home/ubuntu/pfs-intra/app.jar && cp target/*.jar /home/ubuntu/pfs-intra/app.jar && sudo systemctl restart pfs-intra + - run: echo "This job's status is ${{ job.status }}." diff --git a/src/main/java/com/primefactorsolutions/config/SecurityConfig.java b/src/main/java/com/primefactorsolutions/config/SecurityConfig.java index 8d10f24..f347ba3 100644 --- a/src/main/java/com/primefactorsolutions/config/SecurityConfig.java +++ b/src/main/java/com/primefactorsolutions/config/SecurityConfig.java @@ -1,20 +1,32 @@ package com.primefactorsolutions.config; +import com.primefactorsolutions.model.Employee; +import com.primefactorsolutions.service.EmployeeService; import com.primefactorsolutions.views.LoginView; import com.vaadin.flow.spring.security.VaadinWebSecurity; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; +import org.springframework.ldap.core.DirContextOperations; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.ldap.LdapBindAuthenticationManagerFactory; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.ldap.DefaultSpringSecurityContextSource; +import org.springframework.security.ldap.userdetails.LdapUserDetailsMapper; +import org.springframework.security.ldap.userdetails.UserDetailsContextMapper; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import java.util.Collection; + @EnableWebSecurity @Configuration public class SecurityConfig extends VaadinWebSecurity { + @Value("${spring.ldap.url}") + private String ldapUrl; @Override protected void configure(final HttpSecurity http) throws Exception { @@ -37,13 +49,28 @@ public class SecurityConfig extends VaadinWebSecurity { } @Bean - public AuthenticationManager authenticationManager() { - DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource( - "ldap://localhost:8389/dc=primefactorsolutions,dc=com"); + public AuthenticationManager authenticationManager(final UserDetailsContextMapper userDetailsContextMapper) { + final DefaultSpringSecurityContextSource contextSource = new DefaultSpringSecurityContextSource( + String.format("%s/dc=primefactorsolutions,dc=com", ldapUrl)); contextSource.setCacheEnvironmentProperties(false); - LdapBindAuthenticationManagerFactory factory = new LdapBindAuthenticationManagerFactory(contextSource); + final LdapBindAuthenticationManagerFactory factory = new LdapBindAuthenticationManagerFactory(contextSource); factory.setUserDnPatterns("uid={0},ou=users"); + factory.setUserDetailsContextMapper(userDetailsContextMapper); return factory.createAuthenticationManager(); } + + @Bean + public UserDetailsContextMapper userDetailsContextMapper(final EmployeeService employeeService) { + return new LdapUserDetailsMapper() { + @Override + public UserDetails mapUserFromContext(final DirContextOperations ctx, final String username, + final Collection authorities) { + final UserDetails details = super.mapUserFromContext(ctx, username, authorities); + final Employee employee = employeeService.getDetachedEmployeeByUsername(details.getUsername()); + + return employee == null ? details : employee; + } + }; + } } diff --git a/src/main/java/com/primefactorsolutions/model/Employee.java b/src/main/java/com/primefactorsolutions/model/Employee.java index c9035d7..142492e 100644 --- a/src/main/java/com/primefactorsolutions/model/Employee.java +++ b/src/main/java/com/primefactorsolutions/model/Employee.java @@ -1,19 +1,23 @@ package com.primefactorsolutions.model; + import com.google.common.collect.Lists; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; + import org.springframework.security.core.GrantedAuthority; + import org.springframework.security.core.userdetails.UserDetails; import java.time.LocalDate; + import java.util.Collection; @Data @Entity @AllArgsConstructor @NoArgsConstructor @EqualsAndHashCode(callSuper = true) - public class Employee extends BaseEntity { - private String userName; + public class Employee extends BaseEntity implements UserDetails { + private String username; private String firstName; private String lastName; private LocalDate birthday; @@ -76,6 +80,42 @@ private String profileImage; @Enumerated(EnumType.STRING) private Status status; + + @Override + public Collection getAuthorities() { + return Lists.newArrayList(); + } + + @Override + public String getPassword() { + return null; + } + + @Override + public String getUsername() { + return this.username; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + public enum Status { ACTIVE, INACTIVE diff --git a/src/main/java/com/primefactorsolutions/repositories/EmployeeRepository.java b/src/main/java/com/primefactorsolutions/repositories/EmployeeRepository.java index 323ac5b..e27a88b 100644 --- a/src/main/java/com/primefactorsolutions/repositories/EmployeeRepository.java +++ b/src/main/java/com/primefactorsolutions/repositories/EmployeeRepository.java @@ -3,7 +3,9 @@ package com.primefactorsolutions.repositories; import com.primefactorsolutions.model.Employee; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; import java.util.UUID; public interface EmployeeRepository extends JpaRepository { + Optional findByUsername(String username); } diff --git a/src/main/java/com/primefactorsolutions/service/EmployeeService.java b/src/main/java/com/primefactorsolutions/service/EmployeeService.java index c30f9b8..94a1f64 100644 --- a/src/main/java/com/primefactorsolutions/service/EmployeeService.java +++ b/src/main/java/com/primefactorsolutions/service/EmployeeService.java @@ -1,5 +1,6 @@ package com.primefactorsolutions.service; import com.primefactorsolutions.model.Employee; +import jakarta.persistence.EntityManager; import lombok.AllArgsConstructor; import org.apache.commons.beanutils.BeanComparator; import com.primefactorsolutions.repositories.EmployeeRepository; @@ -19,16 +20,28 @@ import java.util.Collections; public class EmployeeService { private final EmployeeRepository employeeRepository; private final LdapTemplate ldapTemplate; + private final EntityManager entityManager; public static final String BASE_DN = "dc=primefactorsolutions,dc=com"; protected Name buildDn(final Employee employee) { return LdapNameBuilder.newInstance(BASE_DN) .add("ou", "users") - .add("uid", employee.getUserName()) + .add("uid", employee.getUsername()) .build(); } + public Employee getDetachedEmployeeByUsername(final String username) { + final Employee employee = employeeRepository.findByUsername(username).orElse(null); + + if (employee != null) { + entityManager.detach(employee); + return employee; + } + + return null; + } + public List findEmployees( final int start, final int pageSize, final String sortProperty, final boolean asc) { List employees = employeeRepository.findAll(); @@ -75,14 +88,14 @@ public class EmployeeService { attrs.put(ocattr); attrs.put("cn", String.format("%s %s", employee.getFirstName(), employee.getLastName())); attrs.put("sn", String.format("%s %s", employee.getFirstName(), employee.getLastName())); - attrs.put("uid", employee.getUserName()); - attrs.put("userpassword", String.format("%s%s", employee.getUserName(), 123)); + attrs.put("uid", employee.getUsername()); + attrs.put("userpassword", String.format("%s%s", employee.getUsername(), 123)); return attrs; } public void updatePassword(final Employee employee) { - final Attribute attr = new BasicAttribute("userpassword", employee.getUserName() + "123"); + final Attribute attr = new BasicAttribute("userpassword", employee.getUsername() + "123"); final ModificationItem item = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr); ldapTemplate.modifyAttributes(buildDn(employee), new ModificationItem[] {item}); diff --git a/src/main/java/com/primefactorsolutions/views/EmployeeView.java b/src/main/java/com/primefactorsolutions/views/EmployeeView.java index e724059..3f057dc 100644 --- a/src/main/java/com/primefactorsolutions/views/EmployeeView.java +++ b/src/main/java/com/primefactorsolutions/views/EmployeeView.java @@ -40,7 +40,7 @@ public class EmployeeView extends BeanValidationForm implements HasUrl // TODO: campo usado para registrar al empleado en LDAP. Este campo podria estar en otro form eventualmente. // INFORMACION PERSONAL - private final TextField userName = createTextField("Username: ", 30, true); + private final TextField username = createTextField("Username: ", 30, true); private final TextField firstName = createTextField("Nombres: ", 30, true); private final TextField lastName = createTextField("Apellidos", 30, true); private final ComboBox status = createStatusComboBox(); @@ -382,38 +382,38 @@ public class EmployeeView extends BeanValidationForm implements HasUrl emergencyCEmail.setReadOnly(true); upload.setVisible(true); profileImagePreview.setVisible(true); - age.setVisible(true); - gender.setVisible(true); - status.setVisible(true); - ci.setVisible(true); - issuedIn.setVisible(true); - pTitle1.setVisible(true); - pTitle2.setVisible(true); - pTitle3.setVisible(true); - pStudy1.setVisible(true); - pStudy2.setVisible(true); - pStudy3.setVisible(true); - certification1.setVisible(true); - certification2.setVisible(true); - certification3.setVisible(true); - certification4.setVisible(true); - recognition.setVisible(true); - achievements.setVisible(true); - language.setVisible(true); - languageLevel.setVisible(true); - cod.setVisible(true); - leadManager.setVisible(true); - project.setVisible(true); - dateOfEntry.setVisible(true); - dateOfExit.setVisible(true); - contractType.setVisible(true); - seniority.setVisible(true); - salary.setVisible(true); - bankName.setVisible(true); - accountNumber.setVisible(true); - gpss.setVisible(true); - sss.setVisible(true); - beneficiaries.setVisible(true); + age.setReadOnly(true); + gender.setReadOnly(true); + status.setReadOnly(true); + ci.setReadOnly(true); + issuedIn.setReadOnly(true); + pTitle1.setReadOnly(true); + pTitle2.setReadOnly(true); + pTitle3.setReadOnly(true); + pStudy1.setReadOnly(true); + pStudy2.setReadOnly(true); + pStudy3.setReadOnly(true); + certification1.setReadOnly(true); + certification2.setReadOnly(true); + certification3.setReadOnly(true); + certification4.setReadOnly(true); + recognition.setReadOnly(true); + achievements.setReadOnly(true); + language.setReadOnly(true); + languageLevel.setReadOnly(true); + cod.setReadOnly(true); + leadManager.setReadOnly(true); + project.setReadOnly(true); + dateOfEntry.setReadOnly(true); + dateOfExit.setReadOnly(true); + contractType.setReadOnly(true); + seniority.setReadOnly(true); + salary.setReadOnly(true); + bankName.setReadOnly(true); + accountNumber.setReadOnly(true); + gpss.setReadOnly(true); + sss.setReadOnly(true); + beneficiaries.setReadOnly(true); } private void setFieldsEditable() { @@ -433,43 +433,44 @@ public class EmployeeView extends BeanValidationForm implements HasUrl emergencyCPhone.setReadOnly(false); emergencyCEmail.setReadOnly(false); upload.setVisible(true); - age.setVisible(false); - gender.setVisible(false); - status.setVisible(false); - ci.setVisible(false); - issuedIn.setVisible(false); - pTitle1.setVisible(false); - pTitle2.setVisible(false); - pTitle3.setVisible(false); - pStudy1.setVisible(false); - pStudy2.setVisible(false); - pStudy3.setVisible(false); - certification1.setVisible(false); - certification2.setVisible(false); - certification3.setVisible(false); - certification4.setVisible(false); - recognition.setVisible(false); - achievements.setVisible(false); - language.setVisible(false); - languageLevel.setVisible(false); - cod.setVisible(false); - leadManager.setVisible(false); - project.setVisible(false); - dateOfEntry.setVisible(false); - dateOfExit.setVisible(false); - contractType.setVisible(false); - seniority.setVisible(false); - salary.setVisible(false); - bankName.setVisible(false); - accountNumber.setVisible(false); - gpss.setVisible(false); - sss.setVisible(false); - beneficiaries.setVisible(false); + age.setReadOnly(false); + gender.setReadOnly(false); + status.setReadOnly(false); + ci.setReadOnly(false); + issuedIn.setReadOnly(false); + pTitle1.setReadOnly(false); + pTitle2.setReadOnly(false); + pTitle3.setReadOnly(false); + pStudy1.setReadOnly(false); + pStudy2.setReadOnly(false); + pStudy3.setReadOnly(false); + certification1.setReadOnly(false); + certification2.setReadOnly(false); + certification3.setReadOnly(false); + certification4.setReadOnly(false); + recognition.setReadOnly(false); + achievements.setReadOnly(false); + language.setReadOnly(false); + languageLevel.setReadOnly(false); + cod.setReadOnly(false); + leadManager.setReadOnly(false); + project.setReadOnly(false); + dateOfEntry.setReadOnly(false); + dateOfExit.setReadOnly(false); + contractType.setReadOnly(false); + seniority.setReadOnly(false); + salary.setReadOnly(false); + bankName.setReadOnly(false); + accountNumber.setReadOnly(false); + gpss.setReadOnly(false); + sss.setReadOnly(false); + beneficiaries.setReadOnly(false); } @Override protected List getFormComponents() { return List.of( + username, infoPer, infoGenr, upload, profileImagePreview, diff --git a/src/main/java/com/primefactorsolutions/views/MainLayout.java b/src/main/java/com/primefactorsolutions/views/MainLayout.java index 78e3e50..dfd4e31 100644 --- a/src/main/java/com/primefactorsolutions/views/MainLayout.java +++ b/src/main/java/com/primefactorsolutions/views/MainLayout.java @@ -1,5 +1,6 @@ package com.primefactorsolutions.views; +import com.primefactorsolutions.model.Employee; import com.vaadin.flow.component.applayout.AppLayout; import com.vaadin.flow.component.applayout.DrawerToggle; import com.vaadin.flow.component.button.Button; @@ -10,6 +11,7 @@ import com.vaadin.flow.component.html.Span; import com.vaadin.flow.component.orderedlayout.FlexComponent; import com.vaadin.flow.component.orderedlayout.HorizontalLayout; import com.vaadin.flow.component.orderedlayout.Scroller; +import com.vaadin.flow.component.shared.Tooltip; import com.vaadin.flow.component.sidenav.SideNav; import com.vaadin.flow.component.sidenav.SideNavItem; import com.vaadin.flow.router.PageTitle; @@ -18,6 +20,8 @@ import com.vaadin.flow.theme.lumo.LumoUtility; import org.springframework.security.core.userdetails.UserDetails; import org.vaadin.lineawesome.LineAwesomeIcon; +import java.util.UUID; + /** * The main view is a top-level placeholder for other views. */ @@ -44,10 +48,25 @@ public class MainLayout extends AppLayout { header = authContext.getAuthenticatedUser(UserDetails.class) .map(user -> { - Button logout = new Button("Logout", click -> this.authContext.logout()); - Span loggedUser = new Span("Welcome " + user.getUsername()); - HorizontalLayout hl = new HorizontalLayout(loggedUser, logout); + final Button logout = new Button("Logout", click -> this.authContext.logout()); + final Span loggedUser = new Span("Welcome " + user.getUsername()); + String employeeId = "N/A"; + + if (user instanceof Employee) { + final UUID uuid = ((Employee) user).getId(); + + if (uuid != null) { + employeeId = uuid.toString(); + } + } + + final Tooltip tooltip = Tooltip.forComponent(loggedUser) + .withText("Employee id: " + employeeId) + .withPosition(Tooltip.TooltipPosition.TOP_START); + + final HorizontalLayout hl = new HorizontalLayout(loggedUser, logout); hl.setJustifyContentMode(FlexComponent.JustifyContentMode.END); + return hl; }).orElseGet(HorizontalLayout::new); header.setAlignItems(FlexComponent.Alignment.STRETCH); diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties new file mode 100644 index 0000000..fd2c3c7 --- /dev/null +++ b/src/main/resources/application-test.properties @@ -0,0 +1,2 @@ +spring.ldap.url=ldap://localhost:8391 +spring.ldap.embedded.port=8391 diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index ae045c3..2a243e7 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -9,19 +9,21 @@ insert into ASSESSMENT_QUESTIONS (assessment_id, question_id) values ('46b153f4- insert into ASSESSMENT_QUESTIONS (assessment_id, question_id) values ('46b153f4-23fd-462f-8430-fbe67b83caab', '8a4b213c-ca81-4c38-b56d-d7028c2dde88'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('e99b7af5-7d3a-4c0f-b8bc-e8d0388d8fc4', 1, 'jperez', 'Juan', 'Perez Condori', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('f6ab3c6d-7078-45f6-9b22-4e37637bfec6', 1, 'agarcia', 'Ana', 'Garcia Rojas', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('2e2293b1-3f9a-4f3d-abc8-32639b0a5e15', 1, 'clopez', 'Carlos', 'Lopez Mendoza', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('4b1c6c35-4627-4b35-b6e9-dc75c68b2c31', 1, 'mfernandez', 'Maria', 'Fernandez Villca', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('afc5c741-f70a-4394-853b-39d51b118927', 1, 'lgutierrez', 'Luis', 'Gutierrez Mamani', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('b2436b82-7b9f-4f0d-9463-f2c3173a45c3', 1, 'lmartinez', 'Laura', 'Martinez Paredes', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('6e6a8a4e-9f6b-44eb-8c69-40acfdc86756', 1, 'rsantos', 'Roberto', 'Santos Escobar', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('36b0d1c6-bdc0-4d98-94bb-08b9bce3f0d5', 1, 'vmorales', 'Valeria', 'Morales Ochoa', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('5a1c6d80-58b3-43e3-a5a5-24b4a2d1d54a', 1, 'jramirez', 'Jorge', 'Ramirez Tapia', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('9d6a5b2e-6d0b-4b89-8d6a-d3f3d1bfc047', 1, 'storres', 'Sandra', 'Torres Huanca', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('f8b3e0c0-0d5a-4e5c-bf9d-207b9b5e8279', 1, 'fquispe', 'Felipe', 'Quispe Huanca', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('cd80e1d0-9a08-44a6-bd63-2c63eaa003d4', 1, 'grivas', 'Gabriela', 'Rivas Arana', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('62d3c1b7-815e-4e96-8d7e-f8c4236bca55', 1, 'oflores', 'Oscar', 'Flores Quiroga', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('f20b7c5a-5a67-44f0-9ec1-4c1b8e80de05', 1, 'mvargas', 'Marta', 'Vargas Soria', 'ACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('19b5a76e-d7b1-4b76-8b02-4d0748e85809', 1, 'aespinoza', 'Andres', 'Espinoza Chura', 'INACTIVE'); -insert into employee (id, version, user_name, first_name, last_name, status) values ('5c1a7b82-832d-4f24-8377-54b77b91b6a8', 1, 'cvillanueva', 'Carla', 'Villanueva Arce', 'ACTIVE'); \ No newline at end of file +insert into employee (id, version, username, first_name, last_name, status) values ('5c6f11fe-c341-4be7-a9a6-bba0081ad7c6', 1, 'bob', 'Bob', 'Test', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('cba3efb7-32bc-44be-9fdc-fc5e4f211254', 1, 'ben', 'Ben', 'Test', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('e99b7af5-7d3a-4c0f-b8bc-e8d0388d8fc4', 1, 'jperez', 'Juan', 'Perez Condori', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('f6ab3c6d-7078-45f6-9b22-4e37637bfec6', 1, 'agarcia', 'Ana', 'Garcia Rojas', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('2e2293b1-3f9a-4f3d-abc8-32639b0a5e15', 1, 'clopez', 'Carlos', 'Lopez Mendoza', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('4b1c6c35-4627-4b35-b6e9-dc75c68b2c31', 1, 'mfernandez', 'Maria', 'Fernandez Villca', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('afc5c741-f70a-4394-853b-39d51b118927', 1, 'lgutierrez', 'Luis', 'Gutierrez Mamani', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('b2436b82-7b9f-4f0d-9463-f2c3173a45c3', 1, 'lmartinez', 'Laura', 'Martinez Paredes', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('6e6a8a4e-9f6b-44eb-8c69-40acfdc86756', 1, 'rsantos', 'Roberto', 'Santos Escobar', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('36b0d1c6-bdc0-4d98-94bb-08b9bce3f0d5', 1, 'vmorales', 'Valeria', 'Morales Ochoa', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('5a1c6d80-58b3-43e3-a5a5-24b4a2d1d54a', 1, 'jramirez', 'Jorge', 'Ramirez Tapia', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('9d6a5b2e-6d0b-4b89-8d6a-d3f3d1bfc047', 1, 'storres', 'Sandra', 'Torres Huanca', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('f8b3e0c0-0d5a-4e5c-bf9d-207b9b5e8279', 1, 'fquispe', 'Felipe', 'Quispe Huanca', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('cd80e1d0-9a08-44a6-bd63-2c63eaa003d4', 1, 'grivas', 'Gabriela', 'Rivas Arana', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('62d3c1b7-815e-4e96-8d7e-f8c4236bca55', 1, 'oflores', 'Oscar', 'Flores Quiroga', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('f20b7c5a-5a67-44f0-9ec1-4c1b8e80de05', 1, 'mvargas', 'Marta', 'Vargas Soria', 'ACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('19b5a76e-d7b1-4b76-8b02-4d0748e85809', 1, 'aespinoza', 'Andres', 'Espinoza Chura', 'INACTIVE'); +insert into employee (id, version, username, first_name, last_name, status) values ('5c1a7b82-832d-4f24-8377-54b77b91b6a8', 1, 'cvillanueva', 'Carla', 'Villanueva Arce', 'ACTIVE'); diff --git a/src/test/java/com/primefactorsolutions/views/AbstractAppTests.java b/src/test/java/com/primefactorsolutions/views/AbstractAppTests.java index f05c2ef..d51af1f 100644 --- a/src/test/java/com/primefactorsolutions/views/AbstractAppTests.java +++ b/src/test/java/com/primefactorsolutions/views/AbstractAppTests.java @@ -14,21 +14,19 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; -import com.github.mvysny.kaributesting.v10.MockVaadin; import com.github.mvysny.kaributesting.v10.Routes; import org.springframework.security.core.userdetails.User; -import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.test.context.ActiveProfiles; -import java.util.Collection; import java.util.List; import java.util.stream.Collectors; @SpringBootTest +@ActiveProfiles(value = "test") public class AbstractAppTests { private static final Routes routes = new Routes().autoDiscoverViews("com.primefactorsolutions");