diff --git a/core-java/src/main/java/com/baeldung/string/Palindrome.java b/core-java/src/main/java/com/baeldung/string/Palindrome.java
new file mode 100644
index 0000000000..0759787249
--- /dev/null
+++ b/core-java/src/main/java/com/baeldung/string/Palindrome.java
@@ -0,0 +1,62 @@
+package com.baeldung.string;
+
+import java.util.stream.IntStream;
+
+public class Palindrome {
+
+ public boolean isPalindrome(String text) {
+ text = text.replaceAll("\\s+", "")
+ .toLowerCase();
+ int length = text.length();
+ int forward = 0;
+ int backward = length - 1;
+ boolean palindrome = true;
+ while (backward > forward) {
+ char forwardChar = text.charAt(forward++);
+ char backwardChar = text.charAt(backward--);
+ if (forwardChar != backwardChar)
+ return false;
+ }
+ return palindrome;
+ }
+
+ public boolean isPalindromeReverseTheString(String text) {
+ String reverse = "";
+ text = text.replaceAll("\\s+", "").toLowerCase();
+ char[] plain = text.toCharArray();
+ for (int i = plain.length - 1; i >= 0; i--)
+ reverse += plain[i];
+ return reverse.equals(text);
+ }
+
+ public boolean isPalindromeUsingStringBuilder(String text) {
+ StringBuilder plain = new StringBuilder(text);
+ StringBuilder reverse = plain.reverse();
+ return reverse.equals(plain);
+ }
+
+ public boolean isPalindromeUsingStringBuffer(String text) {
+ StringBuffer plain = new StringBuffer(text);
+ StringBuffer reverse = plain.reverse();
+ return reverse.equals(plain);
+ }
+
+ public boolean isPalindromeRecursive(String text, int forward, int backward) {
+ if (forward == backward)
+ return true;
+ if ((text.charAt(forward)) != (text.charAt(backward)))
+ return false;
+ if (forward < backward + 1) {
+ return isPalindromeRecursive(text, forward + 1, backward - 1);
+ }
+
+ return true;
+ }
+
+ public boolean isPalindromeUsingIntStream(String text) {
+ String temp = text.replaceAll("\\s+", "").toLowerCase();
+ return IntStream.range(0, temp.length() / 2)
+ .noneMatch(i -> temp.charAt(i) != temp.charAt(temp.length() - i - 1));
+ }
+
+}
diff --git a/core-java/src/test/java/com/baeldung/string/PalindromeTest.java b/core-java/src/test/java/com/baeldung/string/PalindromeTest.java
new file mode 100644
index 0000000000..d1a05b6617
--- /dev/null
+++ b/core-java/src/test/java/com/baeldung/string/PalindromeTest.java
@@ -0,0 +1,108 @@
+package com.baeldung.string;
+
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class PalindromeTest {
+
+ private String[] words = {
+ "Anna",
+ "Civic",
+ "Kayak",
+ "Level",
+ "Madam",
+ };
+
+ private String[] sentences = {
+ "Sore was I ere I saw Eros",
+ "Euston saw I was not Sue",
+ "Too hot to hoot",
+ "No mists or frost Simon",
+ "Stella won no wallets"
+ };
+
+ private Palindrome palindrome = new Palindrome();
+
+ @Test
+ public void whenWord_shouldBePalindrome() {
+ for(String word:words)
+ assertTrue(palindrome.isPalindrome(word));
+ }
+
+ @Test
+ public void whenSentence_shouldBePalindrome() {
+ for(String sentence:sentences)
+ assertTrue(palindrome.isPalindrome(sentence));
+ }
+
+ @Test
+ public void whenReverseWord_shouldBePalindrome() {
+ for(String word:words)
+ assertTrue(palindrome.isPalindromeReverseTheString(word));
+ }
+
+ @Test
+ public void whenReverseSentence_shouldBePalindrome() {
+ for(String sentence:sentences)
+ assertTrue(palindrome.isPalindromeReverseTheString(sentence));
+ }
+
+ @Test
+ public void whenStringBuilderWord_shouldBePalindrome() {
+ for(String word:words)
+ assertTrue(palindrome.isPalindromeUsingStringBuilder(word));
+ }
+
+ @Test
+ public void whenStringBuilderSentence_shouldBePalindrome() {
+ for(String sentence:sentences)
+ assertTrue(palindrome.isPalindromeUsingStringBuilder(sentence));
+ }
+
+ @Test
+ public void whenStringBufferWord_shouldBePalindrome() {
+ for(String word:words)
+ assertTrue(palindrome.isPalindromeUsingStringBuffer(word));
+ }
+
+ @Test
+ public void whenStringBufferSentence_shouldBePalindrome() {
+ for(String sentence:sentences)
+
+ assertTrue(palindrome.isPalindromeUsingStringBuffer(sentence));
+ }
+
+ @Test
+ public void whenPalindromeRecursive_wordShouldBePalindrome() {
+ for(String word:words) {
+ word = word.replaceAll("\\s+", "").toLowerCase();
+ int backward = word.length()-1;
+
+ assertTrue(palindrome.isPalindromeRecursive(word,0,backward));
+ }
+ }
+
+ @Test
+ public void whenPalindromeRecursive_sentenceShouldBePalindrome() {
+ for(String sentence:sentences) {
+ sentence = sentence.replaceAll("\\s+", "").toLowerCase();
+ int backward = sentence.length()-1;
+
+ assertTrue(palindrome.isPalindromeRecursive(sentence,0,backward));
+ }
+ }
+
+ @Test
+ public void whenPalindromeStreams_wordShouldBePalindrome() {
+ for(String word:words) {
+ assertTrue(palindrome.isPalindromeUsingIntStream(word));
+ }
+ }
+
+ @Test
+ public void whenPalindromeStreams_sentenceShouldBePalindrome() {
+ for(String sentence:sentences) {
+ assertTrue(palindrome.isPalindromeUsingIntStream(sentence));
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index ca6d4afe82..fc0c8f8ba7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,9 @@
core-java
core-java-io
core-java-8
+
couchbase
deltaspike
diff --git a/reactor-core/pom.xml b/reactor-core/pom.xml
index 12f481c96f..d387471d56 100644
--- a/reactor-core/pom.xml
+++ b/reactor-core/pom.xml
@@ -26,11 +26,17 @@
${assertj.version}
test
-
+
+
+ io.projectreactor
+ reactor-test
+ ${reactor-core.version}
+ test
+
- 3.0.5.RELEASE
+ 3.1.3.RELEASE
3.6.1
diff --git a/reactor-core/src/test/java/com/baeldung/reactor/core/CombiningPublishersTest.java b/reactor-core/src/test/java/com/baeldung/reactor/core/CombiningPublishersTest.java
new file mode 100644
index 0000000000..9d5d094875
--- /dev/null
+++ b/reactor-core/src/test/java/com/baeldung/reactor/core/CombiningPublishersTest.java
@@ -0,0 +1,182 @@
+package com.baeldung.reactor.core;
+
+import java.time.Duration;
+
+import org.junit.Test;
+
+import reactor.core.publisher.Flux;
+import reactor.test.StepVerifier;
+
+public class CombiningPublishersTest {
+
+ private static Integer min = 1;
+ private static Integer max = 5;
+
+ private static Flux evenNumbers = Flux.range(min, max).filter(x -> x % 2 == 0);
+ private static Flux oddNumbers = Flux.range(min, max).filter(x -> x % 2 > 0);
+
+
+ @Test
+ public void testMerge() {
+ Flux fluxOfIntegers = Flux.merge(
+ evenNumbers,
+ oddNumbers);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(4)
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testMergeWithDelayedElements() {
+ Flux fluxOfIntegers = Flux.merge(
+ evenNumbers.delayElements(Duration.ofMillis(500L)),
+ oddNumbers.delayElements(Duration.ofMillis(300L)));
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(1)
+ .expectNext(2)
+ .expectNext(3)
+ .expectNext(5)
+ .expectNext(4)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testConcat() {
+ Flux fluxOfIntegers = Flux.concat(
+ evenNumbers.delayElements(Duration.ofMillis(500L)),
+ oddNumbers.delayElements(Duration.ofMillis(300L)));
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(4)
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testConcatWith() {
+ Flux fluxOfIntegers = evenNumbers
+ .concatWith(oddNumbers);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(4)
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testCombineLatest() {
+ Flux fluxOfIntegers = Flux.combineLatest(
+ evenNumbers,
+ oddNumbers,
+ (a, b) -> a + b);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(5)
+ .expectNext(7)
+ .expectNext(9)
+ .expectComplete()
+ .verify();
+
+ }
+
+ @Test
+ public void testCombineLatest1() {
+ StepVerifier.create(Flux.combineLatest(obj -> (int) obj[1], evenNumbers, oddNumbers))
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .verifyComplete();
+ }
+
+ @Test
+ public void testMergeSequential() {
+ Flux fluxOfIntegers = Flux.mergeSequential(
+ evenNumbers,
+ oddNumbers);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(4)
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .expectComplete()
+ .verify();
+ }
+
+
+ @Test
+ public void testMergeDelayError() {
+ Flux fluxOfIntegers = Flux.mergeDelayError(1,
+ evenNumbers.delayElements(Duration.ofMillis(500L)),
+ oddNumbers.delayElements(Duration.ofMillis(300L)));
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(1)
+ .expectNext(2)
+ .expectNext(3)
+ .expectNext(5)
+ .expectNext(4)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testMergeWith() {
+ Flux fluxOfIntegers = evenNumbers.mergeWith(oddNumbers);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(4)
+ .expectNext(1)
+ .expectNext(3)
+ .expectNext(5)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testZip() {
+ Flux fluxOfIntegers = Flux.zip(
+ evenNumbers,
+ oddNumbers,
+ (a, b) -> a + b);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(3)
+ .expectNext(7)
+ .expectComplete()
+ .verify();
+ }
+
+ @Test
+ public void testZipWith() {
+ Flux fluxOfIntegers = evenNumbers
+ .zipWith(oddNumbers,
+ (a, b) -> a * b);
+
+ StepVerifier.create(fluxOfIntegers)
+ .expectNext(2)
+ .expectNext(12)
+ .expectComplete()
+ .verify();
+ }
+
+
+}
diff --git a/spring-cloud/spring-cloud-security/oauth2client/pom.xml b/spring-cloud/spring-cloud-security/auth-client/pom.xml
similarity index 97%
rename from spring-cloud/spring-cloud-security/oauth2client/pom.xml
rename to spring-cloud/spring-cloud-security/auth-client/pom.xml
index fd1c6964e1..5213b93f9a 100644
--- a/spring-cloud/spring-cloud-security/oauth2client/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-client/pom.xml
@@ -3,11 +3,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung
- oauth2client
+ auth-client
0.0.1-SNAPSHOT
jar
- oauth2client
+ auth-client
Demo project for Spring Boot
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/CloudSite.java b/spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/CloudSite.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/CloudSite.java
rename to spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/CloudSite.java
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java b/spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/config/SiteSecurityConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/controller/CloudSiteController.java b/spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/controller/CloudSiteController.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/controller/CloudSiteController.java
rename to spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/controller/CloudSiteController.java
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/filters/SimpleFilter.java b/spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/filters/SimpleFilter.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/java/com/baeldung/filters/SimpleFilter.java
rename to spring-cloud/spring-cloud-security/auth-client/src/main/java/com/baeldung/filters/SimpleFilter.java
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.properties b/spring-cloud/spring-cloud-security/auth-client/src/main/resources/application.properties
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.properties
rename to spring-cloud/spring-cloud-security/auth-client/src/main/resources/application.properties
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/auth-client/src/main/resources/application.yml
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/resources/application.yml
rename to spring-cloud/spring-cloud-security/auth-client/src/main/resources/application.yml
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/main/resources/templates/personinfo.html b/spring-cloud/spring-cloud-security/auth-client/src/main/resources/templates/personinfo.html
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/main/resources/templates/personinfo.html
rename to spring-cloud/spring-cloud-security/auth-client/src/main/resources/templates/personinfo.html
diff --git a/spring-cloud/spring-cloud-security/oauth2client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java b/spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/oauth2client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java
rename to spring-cloud/spring-cloud-security/auth-client/src/test/java/com/example/springoath2/Springoath2ApplicationTests.java
diff --git a/spring-cloud/spring-cloud-security/personresource/pom.xml b/spring-cloud/spring-cloud-security/auth-resource/pom.xml
similarity index 96%
rename from spring-cloud/spring-cloud-security/personresource/pom.xml
rename to spring-cloud/spring-cloud-security/auth-resource/pom.xml
index ca1ff82515..2c54d24e7d 100644
--- a/spring-cloud/spring-cloud-security/personresource/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-resource/pom.xml
@@ -4,11 +4,11 @@
4.0.0
com.baeldung
- personresource
+ auth-resource
0.0.1-SNAPSHOT
jar
- personresource
+ auth-resource
Demo project for Spring Boot
diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/Application.java b/spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/Application.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/Application.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/Application.java
diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/config/ResourceConfigurer.java b/spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/config/ResourceConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/config/ResourceConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/config/ResourceConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/controller/PersonInfoController.java b/spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/controller/PersonInfoController.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/controller/PersonInfoController.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/controller/PersonInfoController.java
diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/model/Person.java b/spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/model/Person.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/main/java/com/baeldung/model/Person.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/main/java/com/baeldung/model/Person.java
diff --git a/spring-cloud/spring-cloud-security/personresource/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/auth-resource/src/main/resources/application.yml
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/main/resources/application.yml
rename to spring-cloud/spring-cloud-security/auth-resource/src/main/resources/application.yml
diff --git a/spring-cloud/spring-cloud-security/personresource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java b/spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/personresource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java
rename to spring-cloud/spring-cloud-security/auth-resource/src/test/java/com/baeldung/service/personservice/PersonserviceApplicationTests.java
diff --git a/spring-cloud/spring-cloud-security/authserver/pom.xml b/spring-cloud/spring-cloud-security/auth-server/pom.xml
similarity index 96%
rename from spring-cloud/spring-cloud-security/authserver/pom.xml
rename to spring-cloud/spring-cloud-security/auth-server/pom.xml
index ed88ac046b..ab30f3f2ec 100644
--- a/spring-cloud/spring-cloud-security/authserver/pom.xml
+++ b/spring-cloud/spring-cloud-security/auth-server/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.baeldung
- authserver
+ auth-server
0.0.1-SNAPSHOT
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/AuthServer.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/AuthServer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/AuthServer.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/AuthServer.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/AuthServerConfigurer.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/AuthServerConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/AuthServerConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/AuthServerConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/ResourceServerConfigurer.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/ResourceServerConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/ResourceServerConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/ResourceServerConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebMvcConfigurer.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/WebMvcConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebMvcConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/WebMvcConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebSecurityConfigurer.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/WebSecurityConfigurer.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/config/WebSecurityConfigurer.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/config/WebSecurityConfigurer.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/controller/ResourceController.java b/spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/controller/ResourceController.java
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/java/com/baeldung/controller/ResourceController.java
rename to spring-cloud/spring-cloud-security/auth-server/src/main/java/com/baeldung/controller/ResourceController.java
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/application.yml b/spring-cloud/spring-cloud-security/auth-server/src/main/resources/application.yml
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/resources/application.yml
rename to spring-cloud/spring-cloud-security/auth-server/src/main/resources/application.yml
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/certificate/mykeystore.jks b/spring-cloud/spring-cloud-security/auth-server/src/main/resources/certificate/mykeystore.jks
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/resources/certificate/mykeystore.jks
rename to spring-cloud/spring-cloud-security/auth-server/src/main/resources/certificate/mykeystore.jks
diff --git a/spring-cloud/spring-cloud-security/authserver/src/main/resources/templates/login.html b/spring-cloud/spring-cloud-security/auth-server/src/main/resources/templates/login.html
similarity index 100%
rename from spring-cloud/spring-cloud-security/authserver/src/main/resources/templates/login.html
rename to spring-cloud/spring-cloud-security/auth-server/src/main/resources/templates/login.html
diff --git a/spring-integration/src/test/java/com/baeldung/si/TestSpringIntegrationSecurity.java b/spring-integration/src/test/java/com/baeldung/si/TestSpringIntegrationSecurity.java
index 45dcb1e836..9ae82af2dc 100644
--- a/spring-integration/src/test/java/com/baeldung/si/TestSpringIntegrationSecurity.java
+++ b/spring-integration/src/test/java/com/baeldung/si/TestSpringIntegrationSecurity.java
@@ -1,8 +1,11 @@
package com.baeldung.si;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import org.hamcrest.core.IsInstanceOf;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.SubscribableChannel;
@@ -21,6 +24,9 @@ import com.baeldung.si.security.SecurityConfig;
@ContextConfiguration(classes = { SecurityConfig.class, SecuredDirectChannel.class, MessageConsumer.class })
public class TestSpringIntegrationSecurity {
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Autowired
SubscribableChannel startDirectChannel;
@@ -34,34 +40,28 @@ public class TestSpringIntegrationSecurity {
startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
}
- @Test(expected = AccessDeniedException.class)
+ @Test
@WithMockUser(username = "jane", roles = { "LOGGER" })
- public void givenRoleLogger_whenSendMessageToDirectChannel_thenAccessDenied() throws Throwable {
- try {
- startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
- } catch (Exception e) {
- throw e.getCause();
- }
+ public void givenRoleLogger_whenSendMessageToDirectChannel_thenAccessDenied() {
+ expectedException.expectCause(IsInstanceOf. instanceOf(AccessDeniedException.class));
+
+ startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
}
- @Test(expected = AccessDeniedException.class)
+ @Test
@WithMockUser(username = "jane")
- public void givenJane_whenSendMessageToDirectChannel_thenAccessDenied() throws Throwable {
- try {
- startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
- } catch (Exception e) {
- throw e.getCause();
- }
+ public void givenJane_whenSendMessageToDirectChannel_thenAccessDenied() {
+ expectedException.expectCause(IsInstanceOf. instanceOf(AccessDeniedException.class));
+
+ startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
}
- @Test(expected = AccessDeniedException.class)
+ @Test
@WithMockUser(roles = { "VIEWER" })
- public void givenRoleViewer_whenSendToDirectChannel_thenAccessDenied() throws Throwable {
- try {
- startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
- } catch (Exception e) {
- throw e.getCause();
- }
+ public void givenRoleViewer_whenSendToDirectChannel_thenAccessDenied() {
+ expectedException.expectCause(IsInstanceOf. instanceOf(AccessDeniedException.class));
+
+ startDirectChannel.send(new GenericMessage(DIRECT_CHANNEL_MESSAGE));
}
@Test
@@ -78,4 +78,4 @@ public class TestSpringIntegrationSecurity {
assertEquals(DIRECT_CHANNEL_MESSAGE, messageConsumer.getMessageContent());
}
-}
+}
\ No newline at end of file