Skip to content

Commit f225eba

Browse files
committed
add test config
1 parent c8513d0 commit f225eba

File tree

6 files changed

+142
-41
lines changed

6 files changed

+142
-41
lines changed

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/dao/PrivilegeRepository.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
import org.springframework.data.jpa.repository.JpaRepository;
55

66
public interface PrivilegeRepository extends JpaRepository<Privilege, Long> {
7-
Privilege findByName(String name);
7+
public Privilege findByName(String name);
8+
public void delete(Privilege privilege);
89
}

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/dao/RoleRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55

66
public interface RoleRepository extends JpaRepository<Role, Long> {
77
public Role findByName(String name);
8+
public void delete(Role role);
89
}

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/model/Role.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.util.Collection;
44

5-
import javax.persistence.CascadeType;
65
import javax.persistence.Entity;
76
import javax.persistence.GeneratedValue;
87
import javax.persistence.GenerationType;
@@ -21,7 +20,7 @@ public class Role {
2120
@ManyToMany(mappedBy = "roles")
2221
private Collection<User> users;
2322

24-
@ManyToMany(cascade = CascadeType.ALL)
23+
@ManyToMany
2524
@JoinTable(name = "roles_privileges", joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
2625
private Collection<Privilege> privileges;
2726

spring-security-login-and-registration/src/main/java/org/baeldung/persistence/model/User.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import java.util.Collection;
55

6-
import javax.persistence.CascadeType;
76
import javax.persistence.Entity;
87
import javax.persistence.GeneratedValue;
98
import javax.persistence.GenerationType;
@@ -31,7 +30,7 @@ public class User {
3130

3231
private boolean tokenExpired;
3332

34-
@ManyToMany(cascade = CascadeType.ALL)
33+
@ManyToMany
3534
@JoinTable(
3635
name = "users_roles",
3736
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
Lines changed: 64 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package org.baeldung.test;
22

3+
import static org.junit.Assert.assertNotNull;
4+
import static org.junit.Assert.assertNull;
5+
6+
import java.util.ArrayList;
37
import java.util.Arrays;
48

59
import org.baeldung.persistence.dao.PrivilegeRepository;
@@ -8,12 +12,6 @@
812
import org.baeldung.persistence.model.Privilege;
913
import org.baeldung.persistence.model.Role;
1014
import org.baeldung.persistence.model.User;
11-
import org.baeldung.spring.AppConfig;
12-
import org.baeldung.spring.MvcConfig;
13-
import org.baeldung.spring.PersistenceJPAConfig;
14-
import org.baeldung.spring.SecSecurityConfig;
15-
import org.junit.After;
16-
import org.junit.Before;
1715
import org.junit.Test;
1816
import org.junit.runner.RunWith;
1917
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,13 +20,13 @@
2220
import org.springframework.test.context.ContextConfiguration;
2321
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
2422
import org.springframework.test.context.transaction.TransactionConfiguration;
25-
import org.springframework.test.context.web.WebAppConfiguration;
2623
import org.springframework.transaction.annotation.Transactional;
2724
import org.springframework.test.context.support.AnnotationConfigContextLoader;
2825

29-
3026
@RunWith(SpringJUnit4ClassRunner.class)
31-
@ContextConfiguration(classes = { AppConfig.class, MvcConfig.class, PersistenceJPAConfig.class, SecSecurityConfig.class})
27+
@ContextConfiguration(classes = { TestConfig.class }, loader = AnnotationConfigContextLoader.class)
28+
@Transactional
29+
@TransactionConfiguration
3230
public class SpringSecurityRolesTest {
3331

3432
@Autowired
@@ -39,19 +37,16 @@ public class SpringSecurityRolesTest {
3937

4038
@Autowired
4139
private PrivilegeRepository privilegeRepository;
42-
40+
4341
private User user;
4442
private Role role;
4543
private Privilege privilege;
46-
47-
@Before
48-
public void init(){
49-
privilege = new Privilege("TEST_PRIVILEGE");
50-
privilegeRepository.save(privilege);
51-
44+
45+
@Test
46+
public void testDeleteUser() {
5247
role = new Role("TEST_ROLE");
5348
roleRepository.save(role);
54-
49+
5550
user = new User();
5651
user.setFirstName("John");
5752
user.setLastName("Doe");
@@ -61,31 +56,64 @@ public void init(){
6156
user.setRoles(Arrays.asList(role));
6257
user.setEnabled(true);
6358
userRepository.save(user);
64-
}
65-
66-
@After
67-
public void cleanUp(){
68-
privilegeRepository.delete(privilege);
69-
roleRepository.delete(role);
70-
userRepository.delete(user);
71-
}
72-
73-
@Test
74-
public void testDeleteUser(){
59+
60+
assertNotNull(userRepository.findByEmail(user.getEmail()));
61+
assertNotNull(roleRepository.findByName(role.getName()));
62+
user.setRoles(null);
7563
userRepository.delete(user);
76-
System.out.println(roleRepository.findByName(role.getName()));
64+
65+
assertNull(userRepository.findByEmail(user.getEmail()));
66+
assertNotNull(roleRepository.findByName(role.getName()));
7767
}
78-
68+
7969
@Test
80-
public void testDeleteRole(){
70+
public void testDeleteRole() {
71+
privilege = new Privilege("TEST_PRIVILEGE");
72+
privilegeRepository.save(privilege);
73+
74+
role = new Role("TEST_ROLE");
75+
role.setPrivileges(Arrays.asList(privilege));
76+
roleRepository.save(role);
77+
78+
user = new User();
79+
user.setFirstName("John");
80+
user.setLastName("Doe");
81+
PasswordEncoder encoder = new BCryptPasswordEncoder();
82+
user.setPassword(encoder.encode("123"));
83+
user.setEmail("[email protected]");
84+
user.setRoles(Arrays.asList(role));
85+
user.setEnabled(true);
86+
userRepository.save(user);
87+
88+
assertNotNull(privilegeRepository.findByName(privilege.getName()));
89+
assertNotNull(userRepository.findByEmail(user.getEmail()));
90+
assertNotNull(roleRepository.findByName(role.getName()));
91+
92+
user.setRoles(new ArrayList<Role>());
93+
role.setPrivileges(new ArrayList<Privilege>());
8194
roleRepository.delete(role);
82-
System.out.println(privilegeRepository.findByName(privilege.getName()));
83-
System.out.println(userRepository.findByEmail(user.getEmail()));
95+
96+
assertNull(roleRepository.findByName(role.getName()));
97+
assertNotNull(privilegeRepository.findByName(privilege.getName()));
98+
assertNotNull(userRepository.findByEmail(user.getEmail()));
8499
}
85-
100+
86101
@Test
87-
public void testDeletePrivilege(){
102+
public void testDeletePrivilege() {
103+
privilege = new Privilege("TEST_PRIVILEGE");
104+
privilegeRepository.save(privilege);
105+
106+
role = new Role("TEST_ROLE");
107+
role.setPrivileges(Arrays.asList(privilege));
108+
roleRepository.save(role);
109+
110+
assertNotNull(roleRepository.findByName(role.getName()));
111+
assertNotNull(privilegeRepository.findByName(privilege.getName()));
112+
113+
role.setPrivileges(new ArrayList<Privilege>());
88114
privilegeRepository.delete(privilege);
89-
System.out.println(roleRepository.findByName(role.getName()));
115+
116+
assertNull(privilegeRepository.findByName(privilege.getName()));
117+
assertNotNull(roleRepository.findByName(role.getName()));
90118
}
91119
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.baeldung.test;
2+
3+
import java.util.Properties;
4+
5+
import javax.sql.DataSource;
6+
7+
import org.springframework.beans.factory.annotation.Autowired;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.ComponentScan;
10+
import org.springframework.context.annotation.Configuration;
11+
import org.springframework.context.annotation.PropertySource;
12+
import org.springframework.core.env.Environment;
13+
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
14+
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
15+
import org.springframework.jdbc.datasource.DriverManagerDataSource;
16+
import org.springframework.orm.jpa.JpaTransactionManager;
17+
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
18+
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
19+
import org.springframework.transaction.annotation.EnableTransactionManagement;
20+
21+
@Configuration
22+
@EnableTransactionManagement
23+
@PropertySource({ "classpath:persistence.properties" })
24+
@ComponentScan({ "org.baeldung.persistence.model","org.baeldung.persistence.dao" })
25+
@EnableJpaRepositories(basePackages = "org.baeldung.persistence.dao")
26+
public class TestConfig {
27+
@Autowired
28+
private Environment env;
29+
30+
public TestConfig() {
31+
super();
32+
}
33+
34+
@Bean
35+
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
36+
final LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
37+
em.setDataSource(dataSource());
38+
em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" });
39+
final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
40+
em.setJpaVendorAdapter(vendorAdapter);
41+
em.setJpaProperties(additionalProperties());
42+
return em;
43+
}
44+
45+
@Bean
46+
public DataSource dataSource() {
47+
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
48+
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
49+
dataSource.setUrl(env.getProperty("jdbc.url"));
50+
dataSource.setUsername(env.getProperty("jdbc.user"));
51+
dataSource.setPassword(env.getProperty("jdbc.pass"));
52+
return dataSource;
53+
}
54+
55+
@Bean
56+
public JpaTransactionManager transactionManager() {
57+
JpaTransactionManager transactionManager = new JpaTransactionManager();
58+
transactionManager.setEntityManagerFactory(entityManagerFactory().getObject());
59+
return transactionManager;
60+
}
61+
62+
@Bean
63+
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
64+
return new PersistenceExceptionTranslationPostProcessor();
65+
}
66+
67+
final Properties additionalProperties() {
68+
final Properties hibernateProperties = new Properties();
69+
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
70+
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
71+
return hibernateProperties;
72+
}
73+
}

0 commit comments

Comments
 (0)