4 Commits

Author SHA1 Message Date
e0fde434df Merge branch 'develop' into feature/jakrtaee10
# Conflicts:
#	configuration/pom.xml
#	db/pom.xml
#	jeeutil/pom.xml
#	network/pom.xml
#	poi-util/pom.xml
#	pom.xml
#	util/pom.xml
2024-02-16 00:05:01 +01:00
db1d81bcd9 change to jakarta.mail 2024-02-15 23:45:13 +01:00
55655a5de2 started to migrate to Jakarta EE 10 2023-10-25 13:10:38 +02:00
66be348fd3 prepare version 2.0.0
remove shiro support
2023-10-25 12:07:05 +02:00
12 changed files with 242 additions and 250 deletions

View File

@ -1,4 +1,3 @@
<!-- <!--
Copyright 2019 Joern Muehlencord (joern@muehlencord.de). Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
@ -14,36 +13,37 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<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"> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
<modelVersion>4.0.0</modelVersion> 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>de.muehlencord.shared</groupId> <groupId>de.muehlencord.shared</groupId>
<artifactId>shared-configuration</artifactId> <artifactId>shared-configuration</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<parent>
<artifactId>shared</artifactId>
<groupId>de.muehlencord</groupId>
<version>2.0.1-SNAPSHOT</version>
</parent>
<name>shared-configuration</name> <parent>
<url>http://maven.apache.org</url> <artifactId>shared</artifactId>
<properties> <groupId>de.muehlencord</groupId>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <version>2.0.1-SNAPSHOT</version>
</properties> </parent>
<dependencies> <name>shared-configuration</name>
<dependency> <url>http://maven.apache.org</url>
<groupId>org.junit.jupiter</groupId> <properties>
<artifactId>junit-jupiter-engine</artifactId> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<scope>test</scope> </properties>
</dependency>
<dependencies>
<dependency> <dependency>
<groupId>org.slf4j</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>slf4j-api</artifactId> <artifactId>junit-jupiter-api</artifactId>
<scope>provided</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
</project> </project>

View File

@ -15,7 +15,8 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<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"> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
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> <modelVersion>4.0.0</modelVersion>
<groupId>de.muehlencord.shared</groupId> <groupId>de.muehlencord.shared</groupId>
@ -60,7 +61,7 @@ limitations under the License.
<!-- Testing --> <!-- Testing -->
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId> <artifactId>junit-jupiter-api</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

View File

@ -27,14 +27,13 @@ limitations under the License.
<groupId>de.muehlencord</groupId> <groupId>de.muehlencord</groupId>
<version>2.0.1-SNAPSHOT</version> <version>2.0.1-SNAPSHOT</version>
</parent> </parent>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> </properties>
<url>http://maven.apache.org</url> <url>http://maven.apache.org</url>
<version>2.0.1-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
@ -49,8 +48,8 @@ limitations under the License.
</dependency> </dependency>
<dependency> <dependency>
<artifactId>javax.mail</artifactId> <groupId>jakarta.mail</groupId>
<groupId>com.sun.mail</groupId> <artifactId>jakarta.mail-api</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>ews-java-api</artifactId> <artifactId>ews-java-api</artifactId>
@ -63,16 +62,10 @@ limitations under the License.
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<artifactId>jaxws-api</artifactId>
<groupId>javax.xml.ws</groupId>
<scope>test</scope>
</dependency>
<!-- Test --> <!-- Test -->
<dependency> <dependency>
<artifactId>junit-jupiter-engine</artifactId>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
@ -82,7 +75,4 @@ limitations under the License.
</dependency> </dependency>
</dependencies> </dependencies>
<build>
<finalName>${project.artifactId}</finalName>
</build>
</project> </project>

View File

@ -16,20 +16,20 @@
package de.muehlencord.shared.network.mail; package de.muehlencord.shared.network.mail;
import de.muehlencord.shared.util.StringUtil; import de.muehlencord.shared.util.StringUtil;
import jakarta.mail.Flags;
import jakarta.mail.Folder;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Session;
import jakarta.mail.Store;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.search.MessageIDTerm;
import jakarta.mail.search.SearchTerm;
import jakarta.mail.util.SharedByteArrayInputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.MimeMessage;
import javax.mail.search.MessageIDTerm;
import javax.mail.search.SearchTerm;
import javax.mail.util.SharedByteArrayInputStream;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -15,12 +15,12 @@
*/ */
package de.muehlencord.shared.network.mail; package de.muehlencord.shared.network.mail;
import jakarta.mail.Address;
import jakarta.mail.internet.InternetAddress;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import javax.mail.Address;
import javax.mail.internet.InternetAddress;
/** /**
* A mail message * A mail message

View File

@ -16,18 +16,19 @@
package de.muehlencord.shared.network.mail; package de.muehlencord.shared.network.mail;
import static de.muehlencord.shared.util.StringUtil.getStackTraceString; import static de.muehlencord.shared.util.StringUtil.getStackTraceString;
import jakarta.mail.BodyPart;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Multipart;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMultipart;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Locale; import java.util.Locale;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -19,7 +19,7 @@ import de.muehlencord.shared.network.mail.DefaultMailReader;
import de.muehlencord.shared.network.mail.MailProtocol; import de.muehlencord.shared.network.mail.MailProtocol;
import de.muehlencord.shared.network.mail.MailReaderConfiguration; import de.muehlencord.shared.network.mail.MailReaderConfiguration;
import de.muehlencord.shared.network.mail.MailReaderConnectionException; import de.muehlencord.shared.network.mail.MailReaderConnectionException;
import javax.mail.Session; import jakarta.mail.Session;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@ -1,4 +1,4 @@
/* /*
* Copyright 2019 Joern Muehlencord (joern@muehlencord.de). * Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
@ -22,77 +22,76 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;k
/** /**
*
* @author Joern Muehlencord (joern@muehlencord.de) * @author Joern Muehlencord (joern@muehlencord.de)
*/ */
public class HttpLayerTest extends BaseTest { class HttpLayerTest extends BaseTest {
@Test @Test
@Disabled @Disabled
public void testPostByMap() throws Exception { void testPostByMap() throws Exception {
System.out.println("testPostByMap"); System.out.println("testPostByMap");
Map<String, String[]> map = new HashMap<>(); Map<String, String[]> map = new HashMap<>();
String[] value = {"Hello World!", "Hello World again"}; String[] value = { "Hello World!", "Hello World again" };
map.put("message", value); map.put("message", value);
HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener"); HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener");
httpLayer.post(map); httpLayer.post(map);
} }
@Test @Test
@Disabled @Disabled
public void testPostByMapList() throws Exception { void testPostByMapList() throws Exception {
System.out.println("testPostByMapList"); System.out.println("testPostByMapList");
List<Map<String, String[]>> list = new LinkedList<>(); List<Map<String, String[]>> list = new LinkedList<>();
Map<String, String[]> map = new HashMap<>(); Map<String, String[]> map = new HashMap<>();
String[] value = {"Hello World!", "Hello World again"}; String[] value = { "Hello World!", "Hello World again" };
map.put("message", value); map.put("message", value);
list.add(map); list.add(map);
map = new HashMap<>(); map = new HashMap<>();
String[] urlValue = {"http://localhost:8080/testurl"}; String[] urlValue = { "http://localhost:8080/testurl" };
map.put("url", urlValue); map.put("url", urlValue);
list.add(map); list.add(map);
HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener"); HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener");
httpLayer.post(list); httpLayer.post(list);
} }
@Test @Test
@Disabled @Disabled
public void testByValue() throws Exception { void testByValue() throws Exception {
System.out.println("testByValue"); System.out.println("testByValue");
HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener"); HttpLayer httpLayer = new HttpLayer("http://localhost:8080/HttpPostListener/HttpPostListener");
httpLayer.post("message", "Hello World by single parameter"); httpLayer.post("message", "Hello World by single parameter");
} }
@Test @Test
public void testWithUnknownURL() throws MessageNotSendException { void testWithUnknownURL() throws MessageNotSendException {
System.out.println("testWithUnknownURL"); System.out.println("testWithUnknownURL");
HttpLayer httpLayer = new HttpLayer("http://localhost/thisURLDoesNotExist"); HttpLayer httpLayer = new HttpLayer("http://localhost/thisURLDoesNotExist");
Assertions.assertThrows(MessageNotSendException.class, () -> { Assertions.assertThrows(MessageNotSendException.class, () -> {
httpLayer.post("message", "Hello World by single parameter"); httpLayer.post("message", "Hello World by single parameter");
}); });
} }
@Test @Test
public void testInvalidURL() throws MessageNotSendException { void testInvalidURL() throws MessageNotSendException {
System.out.println("testInvalidURL"); System.out.println("testInvalidURL");
HttpLayer httpLayer = new HttpLayer("joern@muehlencord.de"); HttpLayer httpLayer = new HttpLayer("joern@muehlencord.de");
Assertions.assertThrows(MessageNotSendException.class, () -> { Assertions.assertThrows(MessageNotSendException.class, () -> {
httpLayer.post("message", "Hello World by single parameter"); httpLayer.post("message", "Hello World by single parameter");
}); });
} }
@Test @Test
public void testUnsupportedURL() throws MessageNotSendException { void testUnsupportedURL() throws MessageNotSendException {
System.out.println("testUnsupportedURL"); System.out.println("testUnsupportedURL");
HttpLayer httpLayer = new HttpLayer("ftp://localhost"); HttpLayer httpLayer = new HttpLayer("ftp://localhost");
Assertions.assertThrows(MessageNotSendException.class, () -> { Assertions.assertThrows(MessageNotSendException.class, () -> {
httpLayer.post("message", "Hello World by single parameter"); httpLayer.post("message", "Hello World by single parameter");
}); });
} }
} }

View File

@ -15,6 +15,19 @@
*/ */
package de.muehlencord.shared.network.mail; package de.muehlencord.shared.network.mail;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import jakarta.mail.Message;
import jakarta.mail.MessagingException;
import jakarta.mail.Multipart;
import jakarta.mail.PasswordAuthentication;
import jakarta.mail.Session;
import jakarta.mail.Transport;
import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeBodyPart;
import jakarta.mail.internet.MimeMessage;
import jakarta.mail.internet.MimeMultipart;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
@ -22,18 +35,6 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import static org.junit.jupiter.api.Assumptions.assumeFalse;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -63,7 +64,7 @@ public class TestSendMail {
props.put("mail.smtp.port", "587"); props.put("mail.smtp.port", "587");
props.put("mail.debug", "true"); props.put("mail.debug", "true");
Session mailSession = Session.getInstance(props, new javax.mail.Authenticator() { Session mailSession = Session.getInstance(props, new jakarta.mail.Authenticator() {
@Override @Override
protected PasswordAuthentication getPasswordAuthentication() { protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(RECEIVER, PASSWORD); return new PasswordAuthentication(RECEIVER, PASSWORD);

85
pom.xml
View File

@ -87,10 +87,10 @@ limitations under the License.
<maven.compiler.release>17</maven.compiler.release> <maven.compiler.release>17</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<slf4j.version>2.0.9</slf4j.version> <slf4j.version>2.0.12</slf4j.version>
<jackson.version>2.16.0</jackson.version> <jackson.version>2.16.1</jackson.version>
<lombok.version>1.18.30</lombok.version> <lombok.version>1.18.30</lombok.version>
<junit.version>5.10.1</junit.version> <junit.version>5.10.2</junit.version>
<poi.version>5.2.5</poi.version> <poi.version>5.2.5</poi.version>
<commons-net.version>3.10.0</commons-net.version> <commons-net.version>3.10.0</commons-net.version>
@ -98,14 +98,25 @@ limitations under the License.
<gson.version>2.10.1</gson.version> <gson.version>2.10.1</gson.version>
<fusionauth.version>5.3.1</fusionauth.version> <fusionauth.version>5.3.1</fusionauth.version>
<bouncycastle.version>1.70</bouncycastle.version> <bouncycastle.version>1.70</bouncycastle.version>
<hibernate.version>6.2.15.Final</hibernate.version> <hibernate.version>6.1.7.Final</hibernate.version>
<com-sun-mail.version>1.6.2</com-sun-mail.version> <jakarta.mail-api.version>2.1.2</jakarta.mail-api.version>
<ews-java-api.version>2.0</ews-java-api.version>
<scrypt.version>1.4.0</scrypt.version>
<jakarta-faces.version>4.0.5</jakarta-faces.version> <jakarta-faces.version>4.0.5</jakarta-faces.version>
<joinfaces.version>5.1.6</joinfaces.version> <joinfaces.version>5.1.8</joinfaces.version>
<jakarta.interceptor-api.version>2.1.0</jakarta.interceptor-api.version> <jakarta.interceptor-api.version>2.1.0</jakarta.interceptor-api.version>
<jakarta-inject-api.version>2.0.1</jakarta-inject-api.version> <jakarta-inject-api.version>2.0.1</jakarta-inject-api.version>
<jaxws-api.version>2.3.1</jaxws-api.version>
<maven-javadoc-plugin.version>3.1.1</maven-javadoc-plugin.version>
<maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
<maven-release-plugin.version>2.5.3</maven-release-plugin.version>
<maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
<maven-dependency-plugin.version>3.6.1</maven-dependency-plugin.version>
<nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
<license-maven-plugin.version>1.14</license-maven-plugin.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
@ -165,14 +176,15 @@ limitations under the License.
<!-- mail --> <!-- mail -->
<dependency> <dependency>
<artifactId>javax.mail</artifactId> <groupId>jakarta.mail</groupId>
<groupId>com.sun.mail</groupId> <artifactId>jakarta.mail-api</artifactId>
<version>${com-sun-mail.version}</version> <version>${jakarta.mail-api.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>ews-java-api</artifactId> <artifactId>ews-java-api</artifactId>
<groupId>com.microsoft.ews-java-api</groupId> <groupId>com.microsoft.ews-java-api</groupId>
<version>2.0</version> <version>${ews-java-api.version}</version>
</dependency> </dependency>
<!-- Faces --> <!-- Faces -->
@ -215,16 +227,11 @@ limitations under the License.
<groupId>com.fasterxml.jackson.datatype</groupId> <groupId>com.fasterxml.jackson.datatype</groupId>
<version>${jackson.version}</version> <version>${jackson.version}</version>
</dependency> </dependency>
<dependency>
<artifactId>jaxws-api</artifactId>
<groupId>javax.xml.ws</groupId>
<version>${jaxws-api.version}</version>
</dependency>
<dependency> <dependency>
<artifactId>scrypt</artifactId> <artifactId>scrypt</artifactId>
<groupId>com.lambdaworks</groupId> <groupId>com.lambdaworks</groupId>
<version>1.4.0</version> <version>${scrypt.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<artifactId>bcprov-jdk15on</artifactId> <artifactId>bcprov-jdk15on</artifactId>
@ -272,17 +279,17 @@ limitations under the License.
<build> <build>
<plugins> <plugins>
<!-- deploy artifacts to maven repository --> <!-- deploy artifacts to maven repository -->
<!-- <plugin>--> <plugin>
<!-- <artifactId>nexus-staging-maven-plugin</artifactId>--> <artifactId>nexus-staging-maven-plugin</artifactId>
<!-- <configuration>--> <configuration>
<!-- <autoReleaseAfterClose>true</autoReleaseAfterClose>--> <autoReleaseAfterClose>true</autoReleaseAfterClose>
<!-- <nexusUrl>https://oss.sonatype.org/</nexusUrl>--> <nexusUrl>https://oss.sonatype.org/</nexusUrl>
<!-- <serverId>ossrh</serverId>--> <serverId>ossrh</serverId>
<!-- </configuration>--> </configuration>
<!-- <extensions>true</extensions>--> <extensions>true</extensions>
<!-- <groupId>org.sonatype.plugins</groupId>--> <groupId>org.sonatype.plugins</groupId>
<!-- <version>1.6.8</version>--> <version>${nexus-staging-maven-plugin.version}</version>
<!-- </plugin>--> </plugin>
<!-- ensure sources are build so they are also uploaded --> <!-- ensure sources are build so they are also uploaded -->
<plugin> <plugin>
@ -311,7 +318,7 @@ limitations under the License.
</execution> </execution>
</executions> </executions>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>3.1.1</version> <version>${maven-javadoc-plugin.version}</version>
</plugin> </plugin>
<!-- create license file --> <!-- create license file -->
@ -335,7 +342,7 @@ limitations under the License.
</execution> </execution>
</executions> </executions>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<version>1.14</version> <version>${license-maven-plugin.version}</version>
</plugin> </plugin>
<!-- sign jar archives --> <!-- sign jar archives -->
@ -354,7 +361,7 @@ limitations under the License.
</execution> </execution>
</executions> </executions>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>1.6</version> <version>${maven-gpg-plugin.version}</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
@ -374,27 +381,20 @@ limitations under the License.
<target>${maven.compiler.target}</target> <target>${maven.compiler.target}</target>
</configuration> </configuration>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>3.8.1</version> <version>${maven-compiler-plugin.version}</version>
</plugin>
<!-- build maven ejb artifacts -->
<plugin>
<artifactId>maven-ejb-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>3.0.1</version>
</plugin> </plugin>
<!-- create new releases --> <!-- create new releases -->
<plugin> <plugin>
<artifactId>maven-release-plugin</artifactId> <artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version> <version>${maven-release-plugin.version}</version>
</plugin> </plugin>
<!-- control junit tests from maven build --> <!-- control junit tests from maven build -->
<plugin> <plugin>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<version>2.22.2</version> <version>${maven-surefire-plugin.version}</version>
</plugin> </plugin>
</plugins> </plugins>
</pluginManagement> </pluginManagement>
@ -411,7 +411,6 @@ limitations under the License.
<configuration> <configuration>
<tagNameFormat>v@{project.version}</tagNameFormat> <tagNameFormat>v@{project.version}</tagNameFormat>
</configuration> </configuration>
<version>2.5.3</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@ -421,7 +420,7 @@ limitations under the License.
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId> <artifactId>maven-dependency-plugin</artifactId>
<version>3.6.1</version> <version>${maven-dependency-plugin.version}</version>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>

View File

@ -1,4 +1,3 @@
<!-- <!--
Copyright 2019 Joern Muehlencord (joern@muehlencord.de). Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
@ -14,41 +13,42 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
--> -->
<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"> <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
<modelVersion>4.0.0</modelVersion> 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>de.muehlencord.shared</groupId> <groupId>de.muehlencord.shared</groupId>
<artifactId>shared-util</artifactId> <artifactId>shared-util</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>shared-util</name>
<parent>
<artifactId>shared</artifactId>
<groupId>de.muehlencord</groupId>
<version>2.0.1-SNAPSHOT</version>
</parent>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies> <name>shared-util</name>
<dependency>
<groupId>org.junit.jupiter</groupId> <parent>
<artifactId>junit-jupiter-engine</artifactId> <artifactId>shared</artifactId>
<scope>test</scope> <groupId>de.muehlencord</groupId>
</dependency> <version>2.0.1-SNAPSHOT</version>
<dependency> </parent>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope> <url>http://maven.apache.org</url>
</dependency> <properties>
<dependency> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<groupId>org.bouncycastle</groupId> </properties>
<artifactId>bcprov-jdk15on</artifactId>
</dependency> <dependencies>
</dependencies> <dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
</dependencies>
</project> </project>

View File

@ -1,4 +1,4 @@
/* /*
* Copyright 2019 Joern Muehlencord (joern@muehlencord.de). * Copyright 2019 Joern Muehlencord (joern@muehlencord.de).
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
@ -15,45 +15,46 @@
*/ */
package de.muehlencord.shared.util; package de.muehlencord.shared.util;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.security.SecureRandom; import java.security.SecureRandom;
import org.bouncycastle.util.encoders.Base64; import org.bouncycastle.util.encoders.Base64;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
/** /**
*
* @author Joern Muehlencord (joern@muehlencord.de) * @author Joern Muehlencord (joern@muehlencord.de)
*/ */
public class PasswordUtilTest { class PasswordUtilTest {
private static SecureRandom secureRandom;
private static String systemSalt64Coded;
private static byte[] systemSaltBytes;
@BeforeAll
public static void init() {
secureRandom = new SecureRandom();
systemSaltBytes = new byte[32];
secureRandom.nextBytes (systemSaltBytes);
systemSalt64Coded = new String(Base64.encode (systemSaltBytes));
}
@Test private static SecureRandom secureRandom;
public void testGetHash() { private static String systemSalt64Coded;
PasswordUtil pwUtil = new PasswordUtil(systemSalt64Coded); private static byte[] systemSaltBytes;
String password1 = pwUtil.getHash("password"); @BeforeAll
String password2 = pwUtil.getHash("password"); public static void init() {
secureRandom = new SecureRandom();
assertFalse (password1.equals(password2));
assertTrue (pwUtil.matches ("password", password1)); systemSaltBytes = new byte[32];
assertFalse (pwUtil.matches ("wrongpassword", password1)); secureRandom.nextBytes(systemSaltBytes);
systemSalt64Coded = new String(Base64.encode(systemSaltBytes));
}
@Test
void testGetHash() {
PasswordUtil pwUtil = new PasswordUtil(systemSalt64Coded);
String password1 = pwUtil.getHash("password");
String password2 = pwUtil.getHash("password");
assertNotEquals(password1, password2);
assertTrue(pwUtil.matches("password", password1));
assertFalse(pwUtil.matches("wrongpassword", password1));
}
}
} }