Bael 1271 (#2907)
* BAEL-1271 - initial commit * BAEL-1271 - created an admin server and a client app that registers to * BAEL-1271 - added security on admin server/on client actuator endpoints * BAEL-1271 - configured mail notifications * added unit test coverage * added unit test coverage * hipchat configuration
This commit is contained in:
parent
6365159f68
commit
45997664ad
|
@ -0,0 +1 @@
|
||||||
|
Spring Boot Admin
|
|
@ -0,0 +1,24 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
nbproject/private/
|
||||||
|
build/
|
||||||
|
nbbuild/
|
||||||
|
dist/
|
||||||
|
nbdist/
|
||||||
|
.nb-gradle/
|
|
@ -0,0 +1,71 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>spring-boot-admin-client</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>spring-boot-admin-client</name>
|
||||||
|
<description>Demo project for Spring Boot</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>1.5.8.RELEASE</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<spring-boot-admin-starter-client.version>1.5.4</spring-boot-admin-starter-client.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
|
<version>${spring-boot-admin-starter-client.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.security</groupId>
|
||||||
|
<artifactId>spring-security-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>build-info</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.baeldung.springbootadminclient;
|
||||||
|
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@SpringBootApplication
|
||||||
|
public class SpringBootAdminClientApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(SpringBootAdminClientApplication.class, args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
#basic auth creddentials
|
||||||
|
security.user.name=client
|
||||||
|
security.user.password=client
|
||||||
|
|
||||||
|
#configs to connect to a secured server
|
||||||
|
spring.boot.admin.url=http://localhost:8080
|
||||||
|
spring.boot.admin.username=admin
|
||||||
|
spring.boot.admin.password=admin
|
||||||
|
|
||||||
|
#configs to give secured server info
|
||||||
|
spring.boot.admin.client.metadata.user.name=${security.user.name}
|
||||||
|
spring.boot.admin.client.metadata.user.password=${security.user.password}
|
||||||
|
|
||||||
|
#app config
|
||||||
|
spring.application.name=spring-boot-admin-client
|
||||||
|
server.port=8081
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<jmxConfigurator />
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date [%thread] %-5level %logger{25} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,55 @@
|
||||||
|
package com.baeldung.springbootadminclient;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.core.env.Environment;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||||
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT;
|
||||||
|
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(webEnvironment = RANDOM_PORT)
|
||||||
|
public class SpringBootAdminClientApplicationTests {
|
||||||
|
|
||||||
|
@Autowired Environment environment;
|
||||||
|
|
||||||
|
@Autowired WebApplicationContext wac;
|
||||||
|
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
mockMvc = MockMvcBuilders
|
||||||
|
.webAppContextSetup(wac)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenEnvironmentAvailable_ThenAdminServerPropertiesExist() {
|
||||||
|
assertEquals(environment.getProperty("spring.boot.admin.url"), "http://localhost:8080");
|
||||||
|
assertEquals(environment.getProperty("spring.boot.admin.username"), "admin");
|
||||||
|
assertEquals(environment.getProperty("spring.boot.admin.password"), "admin");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenHttpBasicAttempted_ThenSuccess() throws Exception {
|
||||||
|
mockMvc.perform(get("/env").with(httpBasic("client", "client")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception {
|
||||||
|
mockMvc
|
||||||
|
.perform(get("/env").with(httpBasic("client", "invalid")))
|
||||||
|
.andExpect(status().isUnauthorized());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
nbproject/private/
|
||||||
|
build/
|
||||||
|
nbbuild/
|
||||||
|
dist/
|
||||||
|
nbdist/
|
||||||
|
.nb-gradle/
|
|
@ -0,0 +1,95 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>spring-boot-admin-server</artifactId>
|
||||||
|
<version>0.0.1-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>spring-boot-admin-server</name>
|
||||||
|
<description>Demo project for Spring Boot</description>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>1.5.8.RELEASE</version>
|
||||||
|
<relativePath/> <!-- lookup parent from repository -->
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<spring-boot-admin-server.version>1.5.4</spring-boot-admin-server.version>
|
||||||
|
<spring-boot-admin-starter-client.version>1.5.4</spring-boot-admin-starter-client.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- dependencies used to enable admin server and UI-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-server</artifactId>
|
||||||
|
<version>${spring-boot-admin-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-server-ui</artifactId>
|
||||||
|
<version>${spring-boot-admin-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!--Add login page and logout feature-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-server-ui-login</artifactId>
|
||||||
|
<version>${spring-boot-admin-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-security</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.hazelcast</groupId>
|
||||||
|
<artifactId>hazelcast</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!--declare the admin server as a client, for self monitoring-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>de.codecentric</groupId>
|
||||||
|
<artifactId>spring-boot-admin-starter-client</artifactId>
|
||||||
|
<version>${spring-boot-admin-starter-client.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!--mail notifications-->
|
||||||
|
<!--<dependency>-->
|
||||||
|
<!--<groupId>org.springframework.boot</groupId>-->
|
||||||
|
<!--<artifactId>spring-boot-starter-mail</artifactId>-->
|
||||||
|
<!--</dependency>-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.security</groupId>
|
||||||
|
<artifactId>spring-security-test</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,14 @@
|
||||||
|
package com.baeldung.springbootadminserver;
|
||||||
|
|
||||||
|
import de.codecentric.boot.admin.config.EnableAdminServer;
|
||||||
|
import org.springframework.boot.SpringApplication;
|
||||||
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
|
||||||
|
@EnableAdminServer
|
||||||
|
@SpringBootApplication
|
||||||
|
public class SpringBootAdminServerApplication {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
SpringApplication.run(SpringBootAdminServerApplication.class, args);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.baeldung.springbootadminserver.configs;
|
||||||
|
|
||||||
|
import com.hazelcast.config.Config;
|
||||||
|
import com.hazelcast.config.EvictionPolicy;
|
||||||
|
import com.hazelcast.config.ListConfig;
|
||||||
|
import com.hazelcast.config.MapConfig;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class HazelcastConfig {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Config hazelcast() {
|
||||||
|
return new Config()
|
||||||
|
.setProperty("hazelcast.jmx", "true")
|
||||||
|
.addMapConfig(new MapConfig("spring-boot-admin-application-store")
|
||||||
|
.setBackupCount(1)
|
||||||
|
.setEvictionPolicy(EvictionPolicy.NONE))
|
||||||
|
.addListConfig(new ListConfig("spring-boot-admin-event-store")
|
||||||
|
.setBackupCount(1)
|
||||||
|
.setMaxSize(1000));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.baeldung.springbootadminserver.configs;
|
||||||
|
|
||||||
|
import de.codecentric.boot.admin.notify.LoggingNotifier;
|
||||||
|
import de.codecentric.boot.admin.notify.RemindingNotifier;
|
||||||
|
import de.codecentric.boot.admin.notify.filter.FilteringNotifier;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableScheduling
|
||||||
|
public class NotifierConfiguration {
|
||||||
|
|
||||||
|
// @Autowired private Notifier notifier;
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public LoggingNotifier notifier() {
|
||||||
|
return new LoggingNotifier();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public FilteringNotifier filteringNotifier() {
|
||||||
|
return new FilteringNotifier(notifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@Primary
|
||||||
|
public RemindingNotifier remindingNotifier() {
|
||||||
|
RemindingNotifier remindingNotifier = new RemindingNotifier(filteringNotifier());
|
||||||
|
remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5));
|
||||||
|
return remindingNotifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Scheduled(fixedRate = 60_000L)
|
||||||
|
public void remind() {
|
||||||
|
remindingNotifier().sendReminders();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.baeldung.springbootadminserver.configs;
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||||
|
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void configure(HttpSecurity http) throws Exception {
|
||||||
|
http
|
||||||
|
.formLogin()
|
||||||
|
.loginPage("/login.html")
|
||||||
|
.loginProcessingUrl("/login")
|
||||||
|
.permitAll();
|
||||||
|
http
|
||||||
|
.logout()
|
||||||
|
.logoutUrl("/logout");
|
||||||
|
http
|
||||||
|
.csrf()
|
||||||
|
.disable();
|
||||||
|
http
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/login.html", "/**/*.css", "/img/**", "/third-party/**")
|
||||||
|
.permitAll();
|
||||||
|
http
|
||||||
|
.authorizeRequests()
|
||||||
|
.antMatchers("/**")
|
||||||
|
.authenticated();
|
||||||
|
http.httpBasic();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
spring.application.name=spring-boot-admin-server
|
||||||
|
|
||||||
|
security.user.name=admin
|
||||||
|
security.user.password=admin
|
||||||
|
|
||||||
|
#configs to connect to self register the admin server as a client
|
||||||
|
spring.boot.admin.url=http://localhost:8080
|
||||||
|
spring.boot.admin.username=${security.user.name}
|
||||||
|
spring.boot.admin.password=${security.user.password}
|
||||||
|
|
||||||
|
#configs to give secured server info
|
||||||
|
spring.boot.admin.client.metadata.user.name=${security.user.name}
|
||||||
|
spring.boot.admin.client.metadata.user.password=${security.user.password}
|
||||||
|
|
||||||
|
#mail notifications
|
||||||
|
#spring.mail.host=smtp.gmail.com
|
||||||
|
#spring.mail.username=test@gmail.com
|
||||||
|
#spring.mail.password=password
|
||||||
|
#spring.mail.port=587
|
||||||
|
#spring.mail.properties.mail.smtp.auth=true
|
||||||
|
#spring.mail.properties.mail.smtp.starttls.enable=true
|
||||||
|
|
||||||
|
#spring.boot.admin.notify.mail.to=test@gmail.com
|
||||||
|
|
||||||
|
#hipchat notifications
|
||||||
|
#spring.boot.admin.notify.hipchat.auth-token=<generated_token>
|
||||||
|
#spring.boot.admin.notify.hipchat.room-id=<room-id>
|
||||||
|
#spring.boot.admin.notify.hipchat.url=https://youcompany.hipchat.com/v2/
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<jmxConfigurator />
|
||||||
|
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date [%thread] %-5level %logger{25} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="CONSOLE"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,24 @@
|
||||||
|
package com.baeldung.springbootadminserver;
|
||||||
|
|
||||||
|
import com.baeldung.springbootadminserver.configs.HazelcastConfig;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(classes = { HazelcastConfig.class }, webEnvironment = NONE)
|
||||||
|
public class HazelcastConfigTest {
|
||||||
|
|
||||||
|
@Autowired private ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenApplicationContextStarts_HazelcastConfigBeanExists() {
|
||||||
|
assertNotEquals(applicationContext.getBean("hazelcast"), null);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.baeldung.springbootadminserver;
|
||||||
|
|
||||||
|
import com.baeldung.springbootadminserver.configs.NotifierConfiguration;
|
||||||
|
import de.codecentric.boot.admin.notify.Notifier;
|
||||||
|
import de.codecentric.boot.admin.notify.RemindingNotifier;
|
||||||
|
import de.codecentric.boot.admin.notify.filter.FilteringNotifier;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.NONE;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(classes = { NotifierConfiguration.class }, webEnvironment = NONE)
|
||||||
|
public class NotifierConfigurationTest {
|
||||||
|
|
||||||
|
@Autowired private ApplicationContext applicationContext;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenApplicationContextStart_ThenNotifierBeanExists() {
|
||||||
|
Notifier notifier = (Notifier) applicationContext.getBean("notifier");
|
||||||
|
assertNotEquals(notifier, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenApplicationContextStart_ThenFilteringNotifierBeanExists() {
|
||||||
|
FilteringNotifier filteringNotifier = (FilteringNotifier) applicationContext.getBean("filteringNotifier");
|
||||||
|
assertNotEquals(filteringNotifier, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenApplicationContextStart_ThenRemindingNotifierBeanExists() {
|
||||||
|
RemindingNotifier remindingNotifier = (RemindingNotifier) applicationContext.getBean("remindingNotifier");
|
||||||
|
assertNotEquals(remindingNotifier, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
package com.baeldung.springbootadminserver;
|
||||||
|
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
|
||||||
|
import org.springframework.web.context.WebApplicationContext;
|
||||||
|
|
||||||
|
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestBuilders.formLogin;
|
||||||
|
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
|
||||||
|
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
|
||||||
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
|
public class WebSecurityConfigTest {
|
||||||
|
|
||||||
|
@Autowired WebApplicationContext wac;
|
||||||
|
|
||||||
|
private MockMvc mockMvc;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setup() {
|
||||||
|
mockMvc = MockMvcBuilders
|
||||||
|
.webAppContextSetup(wac)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenApplicationStarts_ThenGetLoginPageWithSuccess() throws Exception {
|
||||||
|
mockMvc
|
||||||
|
.perform(get("/login.html"))
|
||||||
|
.andExpect(status().is2xxSuccessful());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenFormLoginAttempted_ThenSuccess() throws Exception {
|
||||||
|
mockMvc.perform(formLogin("/login")
|
||||||
|
.user("admin")
|
||||||
|
.password("admin"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenFormLoginWithSuccess_ThenApiEndpointsAreAccessible() throws Exception {
|
||||||
|
mockMvc.perform(formLogin("/login")
|
||||||
|
.user("admin")
|
||||||
|
.password("admin"));
|
||||||
|
|
||||||
|
mockMvc
|
||||||
|
.perform(get("/api/applications/"))
|
||||||
|
.andExpect(status().is2xxSuccessful());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenHttpBasicAttempted_ThenSuccess() throws Exception {
|
||||||
|
mockMvc.perform(get("/env").with(httpBasic("admin", "admin")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInvalidHttpBasicAttempted_ThenUnauthorized() throws Exception {
|
||||||
|
mockMvc
|
||||||
|
.perform(get("/env").with(httpBasic("admin", "invalid")))
|
||||||
|
.andExpect(status().isUnauthorized());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue