diff --git a/libraries-security/pom.xml b/libraries-security/pom.xml
index 17d57fe203..eb16575be8 100644
--- a/libraries-security/pom.xml
+++ b/libraries-security/pom.xml
@@ -25,6 +25,11 @@
spring-security-oauth2
${spring-security-oauth2.version}
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
com.github.scribejava
@@ -37,7 +42,16 @@
tink
${tink.version}
-
+
+ org.bouncycastle
+ bcprov-jdk15on
+ ${bouncycastle.version}
+
+
+ org.bouncycastle
+ bcpkix-jdk15on
+ ${bouncycastle.version}
+
junit
junit
@@ -54,6 +68,11 @@
cryptacular
${cryptacular.version}
+
+ org.jasypt
+ jasypt
+ ${jasypt.version}
+
@@ -63,5 +82,8 @@
1.3.1
1.2.2
1.2.2
+ 1.9.2
+ 1.58
+ 4.3.8.RELEASE
diff --git a/libraries/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java b/libraries-security/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java
similarity index 98%
rename from libraries/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java
rename to libraries-security/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java
index d7040407db..e351552c78 100644
--- a/libraries/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java
+++ b/libraries-security/src/main/java/com/baeldung/bouncycastle/BouncyCastleCrypto.java
@@ -1,105 +1,105 @@
-package com.baeldung.bouncycastle;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.security.PrivateKey;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.bouncycastle.asn1.ASN1InputStream;
-import org.bouncycastle.asn1.cms.ContentInfo;
-import org.bouncycastle.cert.X509CertificateHolder;
-import org.bouncycastle.cert.jcajce.JcaCertStore;
-import org.bouncycastle.cms.CMSAlgorithm;
-import org.bouncycastle.cms.CMSEnvelopedData;
-import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
-import org.bouncycastle.cms.CMSException;
-import org.bouncycastle.cms.CMSProcessableByteArray;
-import org.bouncycastle.cms.CMSSignedData;
-import org.bouncycastle.cms.CMSSignedDataGenerator;
-import org.bouncycastle.cms.CMSTypedData;
-import org.bouncycastle.cms.KeyTransRecipientInformation;
-import org.bouncycastle.cms.RecipientInformation;
-import org.bouncycastle.cms.SignerInformation;
-import org.bouncycastle.cms.SignerInformationStore;
-import org.bouncycastle.cms.jcajce.JcaSignerInfoGeneratorBuilder;
-import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
-import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
-import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient;
-import org.bouncycastle.cms.jcajce.JceKeyTransRecipient;
-import org.bouncycastle.cms.jcajce.JceKeyTransRecipientInfoGenerator;
-import org.bouncycastle.operator.ContentSigner;
-import org.bouncycastle.operator.OperatorCreationException;
-import org.bouncycastle.operator.OutputEncryptor;
-import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
-import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
-import org.bouncycastle.util.Store;
-
-public class BouncyCastleCrypto {
-
- public static byte[] signData(byte[] data, final X509Certificate signingCertificate, final PrivateKey signingKey) throws CertificateEncodingException, OperatorCreationException, CMSException, IOException {
- byte[] signedMessage = null;
- List certList = new ArrayList();
- CMSTypedData cmsData = new CMSProcessableByteArray(data);
- certList.add(signingCertificate);
- Store certs = new JcaCertStore(certList);
- CMSSignedDataGenerator cmsGenerator = new CMSSignedDataGenerator();
- ContentSigner contentSigner = new JcaContentSignerBuilder("SHA256withRSA").build(signingKey);
- cmsGenerator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build()).build(contentSigner, signingCertificate));
- cmsGenerator.addCertificates(certs);
- CMSSignedData cms = cmsGenerator.generate(cmsData, true);
- signedMessage = cms.getEncoded();
- return signedMessage;
- }
-
- public static boolean verifSignData(final byte[] signedData) throws CMSException, IOException, OperatorCreationException, CertificateException {
- ByteArrayInputStream bIn = new ByteArrayInputStream(signedData);
- ASN1InputStream aIn = new ASN1InputStream(bIn);
- CMSSignedData s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
- aIn.close();
- bIn.close();
- Store certs = s.getCertificates();
- SignerInformationStore signers = s.getSignerInfos();
- Collection c = signers.getSigners();
- SignerInformation signer = c.iterator().next();
- Collection certCollection = certs.getMatches(signer.getSID());
- Iterator certIt = certCollection.iterator();
- X509CertificateHolder certHolder = certIt.next();
- boolean verifResult = signer.verify(new JcaSimpleSignerInfoVerifierBuilder().build(certHolder));
- if (!verifResult) {
- return false;
- }
- return true;
- }
-
- public static byte[] encryptData(final byte[] data, X509Certificate encryptionCertificate) throws CertificateEncodingException, CMSException, IOException {
- byte[] encryptedData = null;
- if (null != data && null != encryptionCertificate) {
- CMSEnvelopedDataGenerator cmsEnvelopedDataGenerator = new CMSEnvelopedDataGenerator();
- JceKeyTransRecipientInfoGenerator jceKey = new JceKeyTransRecipientInfoGenerator(encryptionCertificate);
- cmsEnvelopedDataGenerator.addRecipientInfoGenerator(jceKey);
- CMSTypedData msg = new CMSProcessableByteArray(data);
- OutputEncryptor encryptor = new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build();
- CMSEnvelopedData cmsEnvelopedData = cmsEnvelopedDataGenerator.generate(msg, encryptor);
- encryptedData = cmsEnvelopedData.getEncoded();
- }
- return encryptedData;
- }
-
- public static byte[] decryptData(final byte[] encryptedData, final PrivateKey decryptionKey) throws CMSException {
- byte[] decryptedData = null;
- if (null != encryptedData && null != decryptionKey) {
- CMSEnvelopedData envelopedData = new CMSEnvelopedData(encryptedData);
- Collection recip = envelopedData.getRecipientInfos().getRecipients();
- KeyTransRecipientInformation recipientInfo = (KeyTransRecipientInformation) recip.iterator().next();
- JceKeyTransRecipient recipient = new JceKeyTransEnvelopedRecipient(decryptionKey);
- decryptedData = recipientInfo.getContent(recipient);
- }
- return decryptedData;
- }
-}
+package com.baeldung.bouncycastle;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.PrivateKey;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+
+import org.bouncycastle.asn1.ASN1InputStream;
+import org.bouncycastle.asn1.cms.ContentInfo;
+import org.bouncycastle.cert.X509CertificateHolder;
+import org.bouncycastle.cert.jcajce.JcaCertStore;
+import org.bouncycastle.cms.CMSAlgorithm;
+import org.bouncycastle.cms.CMSEnvelopedData;
+import org.bouncycastle.cms.CMSEnvelopedDataGenerator;
+import org.bouncycastle.cms.CMSException;
+import org.bouncycastle.cms.CMSProcessableByteArray;
+import org.bouncycastle.cms.CMSSignedData;
+import org.bouncycastle.cms.CMSSignedDataGenerator;
+import org.bouncycastle.cms.CMSTypedData;
+import org.bouncycastle.cms.KeyTransRecipientInformation;
+import org.bouncycastle.cms.RecipientInformation;
+import org.bouncycastle.cms.SignerInformation;
+import org.bouncycastle.cms.SignerInformationStore;
+import org.bouncycastle.cms.jcajce.JcaSignerInfoGeneratorBuilder;
+import org.bouncycastle.cms.jcajce.JcaSimpleSignerInfoVerifierBuilder;
+import org.bouncycastle.cms.jcajce.JceCMSContentEncryptorBuilder;
+import org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient;
+import org.bouncycastle.cms.jcajce.JceKeyTransRecipient;
+import org.bouncycastle.cms.jcajce.JceKeyTransRecipientInfoGenerator;
+import org.bouncycastle.operator.ContentSigner;
+import org.bouncycastle.operator.OperatorCreationException;
+import org.bouncycastle.operator.OutputEncryptor;
+import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder;
+import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder;
+import org.bouncycastle.util.Store;
+
+public class BouncyCastleCrypto {
+
+ public static byte[] signData(byte[] data, final X509Certificate signingCertificate, final PrivateKey signingKey) throws CertificateEncodingException, OperatorCreationException, CMSException, IOException {
+ byte[] signedMessage = null;
+ List certList = new ArrayList();
+ CMSTypedData cmsData = new CMSProcessableByteArray(data);
+ certList.add(signingCertificate);
+ Store certs = new JcaCertStore(certList);
+ CMSSignedDataGenerator cmsGenerator = new CMSSignedDataGenerator();
+ ContentSigner contentSigner = new JcaContentSignerBuilder("SHA256withRSA").build(signingKey);
+ cmsGenerator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build()).build(contentSigner, signingCertificate));
+ cmsGenerator.addCertificates(certs);
+ CMSSignedData cms = cmsGenerator.generate(cmsData, true);
+ signedMessage = cms.getEncoded();
+ return signedMessage;
+ }
+
+ public static boolean verifSignData(final byte[] signedData) throws CMSException, IOException, OperatorCreationException, CertificateException {
+ ByteArrayInputStream bIn = new ByteArrayInputStream(signedData);
+ ASN1InputStream aIn = new ASN1InputStream(bIn);
+ CMSSignedData s = new CMSSignedData(ContentInfo.getInstance(aIn.readObject()));
+ aIn.close();
+ bIn.close();
+ Store certs = s.getCertificates();
+ SignerInformationStore signers = s.getSignerInfos();
+ Collection c = signers.getSigners();
+ SignerInformation signer = c.iterator().next();
+ Collection certCollection = certs.getMatches(signer.getSID());
+ Iterator certIt = certCollection.iterator();
+ X509CertificateHolder certHolder = certIt.next();
+ boolean verifResult = signer.verify(new JcaSimpleSignerInfoVerifierBuilder().build(certHolder));
+ if (!verifResult) {
+ return false;
+ }
+ return true;
+ }
+
+ public static byte[] encryptData(final byte[] data, X509Certificate encryptionCertificate) throws CertificateEncodingException, CMSException, IOException {
+ byte[] encryptedData = null;
+ if (null != data && null != encryptionCertificate) {
+ CMSEnvelopedDataGenerator cmsEnvelopedDataGenerator = new CMSEnvelopedDataGenerator();
+ JceKeyTransRecipientInfoGenerator jceKey = new JceKeyTransRecipientInfoGenerator(encryptionCertificate);
+ cmsEnvelopedDataGenerator.addRecipientInfoGenerator(jceKey);
+ CMSTypedData msg = new CMSProcessableByteArray(data);
+ OutputEncryptor encryptor = new JceCMSContentEncryptorBuilder(CMSAlgorithm.AES128_CBC).setProvider("BC").build();
+ CMSEnvelopedData cmsEnvelopedData = cmsEnvelopedDataGenerator.generate(msg, encryptor);
+ encryptedData = cmsEnvelopedData.getEncoded();
+ }
+ return encryptedData;
+ }
+
+ public static byte[] decryptData(final byte[] encryptedData, final PrivateKey decryptionKey) throws CMSException {
+ byte[] decryptedData = null;
+ if (null != encryptedData && null != decryptionKey) {
+ CMSEnvelopedData envelopedData = new CMSEnvelopedData(encryptedData);
+ Collection recip = envelopedData.getRecipientInfos().getRecipients();
+ KeyTransRecipientInformation recipientInfo = (KeyTransRecipientInformation) recip.iterator().next();
+ JceKeyTransRecipient recipient = new JceKeyTransEnvelopedRecipient(decryptionKey);
+ decryptedData = recipientInfo.getContent(recipient);
+ }
+ return decryptedData;
+ }
+}
diff --git a/libraries-security/src/main/resources/Baeldung.cer b/libraries-security/src/main/resources/Baeldung.cer
new file mode 100644
index 0000000000..72d0918424
--- /dev/null
+++ b/libraries-security/src/main/resources/Baeldung.cer
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDPjCCAiagAwIBAgIJAPvd1gx14C3CMA0GCSqGSIb3DQEBBQUAMEcxCzAJBgNV
+BAYTAk1BMRAwDgYDVQQIEwdNb3JvY2NvMRMwEQYDVQQHEwpDYXNhYmxhbmNhMREw
+DwYDVQQDEwhCYWVsZHVuZzAeFw0xNzEwMTIxMDQzMTRaFw0yNzEwMTMxMDQzMTRa
+MEcxCzAJBgNVBAYTAk1BMRAwDgYDVQQIEwdNb3JvY2NvMRMwEQYDVQQHEwpDYXNh
+YmxhbmNhMREwDwYDVQQDEwhCYWVsZHVuZzCCASIwDQYJKoZIhvcNAQEBBQADggEP
+ADCCAQoCggEBAMyi5GmOeN4QaH/CP5gSOyHX8znb5TDHWV8wc+ZT7kNU8zt5tGMh
+jozK6hax155/6tOsBDR0rSYBhL+Dm/+uCVS7qOlRHhf6cNGtzGF1gnNJB2WjI8oM
+AYm24xpLj1WphKUwKrn3nTMPnQup5OoNAMYl99flANrRYVjjxrLQvDZDUio6Iujr
+CZ2TtXGM0g/gP++28KT7g1KlUui3xtB0u33wx7UN8Fix3JmjOaPHGwxGpwP3VGSj
+fs8cuhqVwRQaZpCOoHU/P8wpXKw80sSdhz+SRueMPtVYqK0CiLL5/O0h0Y3le4IV
+whgg3KG1iTGOWn60UMFn1EYmQ18k5Nsma6UCAwEAAaMtMCswCQYDVR0TBAIwADAR
+BglghkgBhvhCAQEEBAMCBPAwCwYDVR0PBAQDAgUgMA0GCSqGSIb3DQEBBQUAA4IB
+AQC8DDBmJ3p4xytxBiE0s4p1715WT6Dm/QJHp0XC0hkSoyZKDh+XVmrzm+J3SiW1
+vpswb5hLgPo040YX9jnDmgOD+TpleTuKHxZRYj92UYWmdjkWLVtFMcvOh+gxBiAP
+pHIqZsqo8lfcyAuh8Jx834IXbknfCUtERDLG/rU9P/3XJhrM2GC5qPQznrW4EYhU
+CGPyIJXmvATMVvXMWCtfogAL+n42vjYXQXZoAWomHhLHoNbSJUErnNdWDOh4WoJt
+XJCxA6U5LSBplqb3wB2hUTqw+0admKltvmy+KA1PD7OxoGiY7V544zeGqJam1qxU
+ia7y5BL6uOa/4ShSV8pcJDYz
+-----END CERTIFICATE-----
diff --git a/libraries/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java b/libraries-security/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java
similarity index 97%
rename from libraries/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java
rename to libraries-security/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java
index 009119d97a..37e8e5f6ba 100644
--- a/libraries/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java
+++ b/libraries-security/src/test/java/com/baeldung/bouncycastle/BouncyCastleLiveTest.java
@@ -1,50 +1,50 @@
-package com.baeldung.bouncycastle;
-
-import static org.junit.Assert.assertTrue;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.PrivateKey;
-import java.security.Security;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-
-import org.bouncycastle.cms.CMSException;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import org.bouncycastle.operator.OperatorCreationException;
-import org.junit.Test;
-
-public class BouncyCastleLiveTest {
-
- String certificatePath = "src/main/resources/Baeldung.cer";
- String privateKeyPath = "src/main/resources/Baeldung.p12";
- char[] p12Password = "password".toCharArray();
- char[] keyPassword = "password".toCharArray();
-
- @Test
- public void givenCryptographicResource_whenOperationSuccess_returnTrue() throws CertificateException, NoSuchProviderException, NoSuchAlgorithmException, IOException, KeyStoreException, UnrecoverableKeyException, CMSException, OperatorCreationException {
- Security.addProvider(new BouncyCastleProvider());
-
- CertificateFactory certFactory = CertificateFactory.getInstance("X.509", "BC");
- X509Certificate certificate = (X509Certificate) certFactory.generateCertificate(new FileInputStream(certificatePath));
- KeyStore keystore = KeyStore.getInstance("PKCS12");
- keystore.load(new FileInputStream(privateKeyPath), p12Password);
- PrivateKey privateKey = (PrivateKey) keystore.getKey("baeldung", keyPassword);
- String secretMessage = "My password is 123456Seven";
- System.out.println("Original Message : " + secretMessage);
- byte[] stringToEncrypt = secretMessage.getBytes();
- byte[] encryptedData = BouncyCastleCrypto.encryptData(stringToEncrypt, certificate);
- byte[] rawData = BouncyCastleCrypto.decryptData(encryptedData, privateKey);
- String decryptedMessage = new String(rawData);
- assertTrue(decryptedMessage.equals(secretMessage));
- byte[] signedData = BouncyCastleCrypto.signData(rawData, certificate, privateKey);
- Boolean check = BouncyCastleCrypto.verifSignData(signedData);
- assertTrue(check);
- }
-}
+package com.baeldung.bouncycastle;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+import java.security.PrivateKey;
+import java.security.Security;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import org.bouncycastle.cms.CMSException;
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.bouncycastle.operator.OperatorCreationException;
+import org.junit.Test;
+
+public class BouncyCastleLiveTest {
+
+ String certificatePath = "src/main/resources/Baeldung.cer";
+ String privateKeyPath = "src/main/resources/Baeldung.p12";
+ char[] p12Password = "password".toCharArray();
+ char[] keyPassword = "password".toCharArray();
+
+ @Test
+ public void givenCryptographicResource_whenOperationSuccess_returnTrue() throws CertificateException, NoSuchProviderException, NoSuchAlgorithmException, IOException, KeyStoreException, UnrecoverableKeyException, CMSException, OperatorCreationException {
+ Security.addProvider(new BouncyCastleProvider());
+
+ CertificateFactory certFactory = CertificateFactory.getInstance("X.509", "BC");
+ X509Certificate certificate = (X509Certificate) certFactory.generateCertificate(new FileInputStream(certificatePath));
+ KeyStore keystore = KeyStore.getInstance("PKCS12");
+ keystore.load(new FileInputStream(privateKeyPath), p12Password);
+ PrivateKey privateKey = (PrivateKey) keystore.getKey("baeldung", keyPassword);
+ String secretMessage = "My password is 123456Seven";
+ System.out.println("Original Message : " + secretMessage);
+ byte[] stringToEncrypt = secretMessage.getBytes();
+ byte[] encryptedData = BouncyCastleCrypto.encryptData(stringToEncrypt, certificate);
+ byte[] rawData = BouncyCastleCrypto.decryptData(encryptedData, privateKey);
+ String decryptedMessage = new String(rawData);
+ assertTrue(decryptedMessage.equals(secretMessage));
+ byte[] signedData = BouncyCastleCrypto.signData(rawData, certificate, privateKey);
+ Boolean check = BouncyCastleCrypto.verifSignData(signedData);
+ assertTrue(check);
+ }
+}
diff --git a/libraries/src/test/java/com/baeldung/jasypt/JasyptUnitTest.java b/libraries-security/src/test/java/com/baeldung/jasypt/JasyptUnitTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/jasypt/JasyptUnitTest.java
rename to libraries-security/src/test/java/com/baeldung/jasypt/JasyptUnitTest.java
diff --git a/libraries-security/src/test/java/com/baeldung/tink/TinkUnitTest.java b/libraries-security/src/test/java/com/baeldung/tink/TinkLiveTest.java
similarity index 96%
rename from libraries-security/src/test/java/com/baeldung/tink/TinkUnitTest.java
rename to libraries-security/src/test/java/com/baeldung/tink/TinkLiveTest.java
index b98c698016..c4bd487457 100644
--- a/libraries-security/src/test/java/com/baeldung/tink/TinkUnitTest.java
+++ b/libraries-security/src/test/java/com/baeldung/tink/TinkLiveTest.java
@@ -18,7 +18,9 @@ import org.junit.Test;
import java.security.GeneralSecurityException;
-public class TinkUnitTest {
+public class TinkLiveTest {
+
+ //need to download policy files and put them into ${java.home}/jre/lib/security/
private static final String PLAINTEXT = "BAELDUNG";
private static final String DATA = "TINK";
diff --git a/libraries-testing/README.md b/libraries-testing/README.md
new file mode 100644
index 0000000000..6b25a3b875
--- /dev/null
+++ b/libraries-testing/README.md
@@ -0,0 +1,8 @@
+### Relevant articles
+
+- [Introduction to Serenity BDD](http://www.baeldung.com/serenity-bdd)
+- [Introduction to JSONassert](http://www.baeldung.com/jsonassert)
+- [Serenity BDD and Screenplay](http://www.baeldung.com/serenity-screenplay)
+- [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave)
+- [Introduction to Awaitlity](http://www.baeldung.com/awaitlity-testing)
+- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly)
\ No newline at end of file
diff --git a/libraries-testing/log4j.properties b/libraries-testing/log4j.properties
new file mode 100644
index 0000000000..ed367509d1
--- /dev/null
+++ b/libraries-testing/log4j.properties
@@ -0,0 +1,5 @@
+log4j.rootLogger=INFO, stdout
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml
new file mode 100644
index 0000000000..8f7a27bbfa
--- /dev/null
+++ b/libraries-testing/pom.xml
@@ -0,0 +1,170 @@
+
+
+
+ 4.0.0
+ libraries-testing
+ libraries-testing
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
+
+ net.serenity-bdd
+ serenity-core
+ ${serenity.version}
+ test
+
+
+ org.asciidoctor
+ asciidoctorj
+
+
+
+
+ net.serenity-bdd
+ serenity-junit
+ ${serenity.version}
+ test
+
+
+ net.serenity-bdd
+ serenity-jbehave
+ ${serenity.jbehave.version}
+ test
+
+
+ net.serenity-bdd
+ serenity-rest-assured
+ ${serenity.version}
+ test
+
+
+ net.serenity-bdd
+ serenity-jira-requirements-provider
+ ${serenity.jira.version}
+ test
+
+
+ net.serenity-bdd
+ serenity-spring
+ ${serenity.version}
+ test
+
+
+ org.springframework
+ spring-test
+
+
+
+
+ net.serenity-bdd
+ serenity-screenplay
+ ${serenity.version}
+ test
+
+
+ net.serenity-bdd
+ serenity-screenplay-webdriver
+ ${serenity.version}
+ test
+
+
+ org.skyscreamer
+ jsonassert
+ ${jsonassert.version}
+
+
+ org.awaitility
+ awaitility
+ ${awaitility.version}
+ test
+
+
+ org.awaitility
+ awaitility-proxy
+ ${awaitility.version}
+ test
+
+
+ io.specto
+ hoverfly-java
+ ${hoverfly-java.version}
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
+
+ io.rest-assured
+ spring-mock-mvc
+ ${spring-mock-mvc.version}
+ test
+
+
+ org.assertj
+ assertj-core
+ ${assertj.version}
+
+
+
+ net.serenity-bdd
+ serenity-core
+ ${serenity.version}
+ test
+
+
+ org.asciidoctor
+ asciidoctorj
+
+
+
+
+ org.asciidoctor
+ asciidoctor-maven-plugin
+ 1.5.7.1
+
+
+
+
+
+
+
+
+ net.serenity-bdd.maven.plugins
+ serenity-maven-plugin
+ ${serenity.plugin.version}
+
+
+ serenity-reports
+ post-integration-test
+
+ aggregate
+
+
+
+
+
+
+
+
+
+ 1.9.26
+ 1.41.0
+ 1.9.0
+ 1.9.27
+ 1.5.0
+ 3.0.0
+ 0.8.1
+ 4.3.8.RELEASE
+ 3.0.3
+ 3.6.2
+
+
+
diff --git a/libraries-testing/serenity.properties b/libraries-testing/serenity.properties
new file mode 100644
index 0000000000..c77df9c0f7
--- /dev/null
+++ b/libraries-testing/serenity.properties
@@ -0,0 +1,4 @@
+jira.url=
+jira.project=
+jira.username=
+jira.password=
\ No newline at end of file
diff --git a/libraries/src/main/java/com/baeldung/awaitility/AsyncService.java b/libraries-testing/src/main/java/com/baeldung/awaitility/AsyncService.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/awaitility/AsyncService.java
rename to libraries-testing/src/main/java/com/baeldung/awaitility/AsyncService.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/github/GitHubUser.java b/libraries-testing/src/main/java/com/baeldung/serenity/github/GitHubUser.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/github/GitHubUser.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/github/GitHubUser.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/membership/Commodity.java b/libraries-testing/src/main/java/com/baeldung/serenity/membership/Commodity.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/membership/Commodity.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/membership/Commodity.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/membership/Member.java b/libraries-testing/src/main/java/com/baeldung/serenity/membership/Member.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/membership/Member.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/membership/Member.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/membership/MemberGrade.java b/libraries-testing/src/main/java/com/baeldung/serenity/membership/MemberGrade.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/membership/MemberGrade.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/membership/MemberGrade.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/spring/AdderController.java b/libraries-testing/src/main/java/com/baeldung/serenity/spring/AdderController.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/spring/AdderController.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/spring/AdderController.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/spring/AdderService.java b/libraries-testing/src/main/java/com/baeldung/serenity/spring/AdderService.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/spring/AdderService.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/spring/AdderService.java
diff --git a/libraries/src/main/java/com/baeldung/serenity/spring/PlainAdderController.java b/libraries-testing/src/main/java/com/baeldung/serenity/spring/PlainAdderController.java
similarity index 100%
rename from libraries/src/main/java/com/baeldung/serenity/spring/PlainAdderController.java
rename to libraries-testing/src/main/java/com/baeldung/serenity/spring/PlainAdderController.java
diff --git a/libraries/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningManualTest.java b/libraries-testing/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningManualTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningManualTest.java
rename to libraries-testing/src/test/java/com/baeldung/awaitility/AsyncServiceLongRunningManualTest.java
diff --git a/libraries/src/test/java/com/baeldung/hoverfly/HoverflyApiLiveTest.java b/libraries-testing/src/test/java/com/baeldung/hoverfly/HoverflyApiLiveTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/hoverfly/HoverflyApiLiveTest.java
rename to libraries-testing/src/test/java/com/baeldung/hoverfly/HoverflyApiLiveTest.java
diff --git a/libraries/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java b/libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
rename to libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/GithubUserProfilePayloadIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/GithubUserProfilePayloadIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/GithubUserProfilePayloadIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/GithubUserProfilePayloadIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/GoogleSearchLiveTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchLiveTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/GoogleSearchLiveTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchLiveTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/GoogleSearchPageObjectLiveTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchPageObjectLiveTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/GoogleSearchPageObjectLiveTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchPageObjectLiveTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/GoogleSearchScreenplayLiveTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchScreenplayLiveTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/GoogleSearchScreenplayLiveTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/GoogleSearchScreenplayLiveTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/MemberStatusIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/MemberStatusIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/MemberStatusIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/MemberStatusIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/github/GithubRestAssuredUserAPISteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/github/GithubRestAssuredUserAPISteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/github/GithubRestAssuredUserAPISteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/github/GithubRestAssuredUserAPISteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/github/GithubRestUserAPISteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/github/GithubRestUserAPISteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/github/GithubRestUserAPISteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/github/GithubRestUserAPISteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/github/GithubUserProfilePayloadStepDefinitions.java b/libraries-testing/src/test/java/com/baeldung/serenity/github/GithubUserProfilePayloadStepDefinitions.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/github/GithubUserProfilePayloadStepDefinitions.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/github/GithubUserProfilePayloadStepDefinitions.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/membership/MemberStatusSteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/membership/MemberStatusSteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/membership/MemberStatusSteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/membership/MemberStatusSteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/pageobjects/GoogleSearchPageObject.java b/libraries-testing/src/test/java/com/baeldung/serenity/pageobjects/GoogleSearchPageObject.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/pageobjects/GoogleSearchPageObject.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/pageobjects/GoogleSearchPageObject.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchPage.java b/libraries-testing/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchPage.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchPage.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchPage.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchResults.java b/libraries-testing/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchResults.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchResults.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/screenplay/GoogleSearchResults.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/screenplay/SearchForKeyword.java b/libraries-testing/src/test/java/com/baeldung/serenity/screenplay/SearchForKeyword.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/screenplay/SearchForKeyword.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/screenplay/SearchForKeyword.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/screenplay/StartWith.java b/libraries-testing/src/test/java/com/baeldung/serenity/screenplay/StartWith.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/screenplay/StartWith.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/screenplay/StartWith.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextDependencyWorkaroundIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextDependencyWorkaroundIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextDependencyWorkaroundIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextDependencyWorkaroundIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextInitWorkaroundIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextInitWorkaroundIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextInitWorkaroundIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextInitWorkaroundIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodDirtiesContextIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodRuleIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodRuleIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderMethodRuleIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMethodRuleIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderMockMvcIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMockMvcIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderMockMvcIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderMockMvcIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderServiceIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderServiceIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderServiceIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderServiceIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderSpringSerenityRunnerIntegrationTest.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderSpringSerenityRunnerIntegrationTest.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/AdderSpringSerenityRunnerIntegrationTest.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/AdderSpringSerenityRunnerIntegrationTest.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/RandomNumberUtil.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/RandomNumberUtil.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/RandomNumberUtil.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/RandomNumberUtil.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderConstructorDependencySteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderConstructorDependencySteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderConstructorDependencySteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderConstructorDependencySteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderRestSteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderRestSteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderRestSteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderRestSteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderServiceSteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderServiceSteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderServiceSteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderServiceSteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderSteps.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderSteps.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/steps/AdderSteps.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/steps/AdderSteps.java
diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/stories/AdderStory.java b/libraries-testing/src/test/java/com/baeldung/serenity/spring/stories/AdderStory.java
similarity index 100%
rename from libraries/src/test/java/com/baeldung/serenity/spring/stories/AdderStory.java
rename to libraries-testing/src/test/java/com/baeldung/serenity/spring/stories/AdderStory.java
diff --git a/libraries/src/test/resources/adder-beans.xml b/libraries-testing/src/test/resources/adder-beans.xml
similarity index 100%
rename from libraries/src/test/resources/adder-beans.xml
rename to libraries-testing/src/test/resources/adder-beans.xml
diff --git a/libraries/README.md b/libraries/README.md
index f673b230ec..4ac63e044f 100644
--- a/libraries/README.md
+++ b/libraries/README.md
@@ -1,24 +1,19 @@
### Relevant articles
-- [Intro to Jasypt](http://www.baeldung.com/jasypt)
- [Introduction to Javatuples](http://www.baeldung.com/java-tuples)
- [Introduction to Javassist](http://www.baeldung.com/javassist)
- [Introduction to Apache Flink with Java](http://www.baeldung.com/apache-flink)
- [Introduction to JSONassert](http://www.baeldung.com/jsonassert)
- [Intro to JaVers](http://www.baeldung.com/javers)
-- [Introduction to Serenity BDD](http://www.baeldung.com/serenity-bdd)
- [Merging Streams in Java](http://www.baeldung.com/java-merge-streams)
-- [Serenity BDD and Screenplay](http://www.baeldung.com/serenity-screenplay)
- [Introduction to Quartz](http://www.baeldung.com/quartz)
- [How to Warm Up the JVM](http://www.baeldung.com/java-jvm-warmup)
- [Software Transactional Memory in Java Using Multiverse](http://www.baeldung.com/java-multiverse-stm)
- [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave)
- [Locality-Sensitive Hashing in Java Using Java-LSH](http://www.baeldung.com/locality-sensitive-hashing)
-- [Introduction to Awaitlity](http://www.baeldung.com/awaitlity-testing)
- [Introduction to Neuroph](http://www.baeldung.com/neuroph)
- [Quick Guide to RSS with Rome](http://www.baeldung.com/rome-rss)
- [Introduction to PCollections](http://www.baeldung.com/java-pcollections)
-- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly)
- [Introduction to Eclipse Collections](http://www.baeldung.com/eclipse-collections)
- [DistinctBy in the Java Stream API](http://www.baeldung.com/java-streams-distinct-by)
- [Introduction to NoException](http://www.baeldung.com/no-exception)
@@ -29,10 +24,8 @@
- [Using Pairs in Java](http://www.baeldung.com/java-pairs)
- [Introduction to Caffeine](http://www.baeldung.com/java-caching-caffeine)
- [Introduction to StreamEx](http://www.baeldung.com/streamex)
-- [Introduction to BouncyCastle with Java](http://www.baeldung.com/java-bouncy-castle)
- [A Docker Guide for Java](http://www.baeldung.com/docker-java-api)
- [Introduction to Akka Actors in Java](http://www.baeldung.com/akka-actors-java)
-- [Introduction to Akka Actors in Java](http://www.baeldung.com/akka-actors-java)
- [A Guide to Byte Buddy](http://www.baeldung.com/byte-buddy)
- [Introduction to jOOL](http://www.baeldung.com/jool)
- [Consumer Driven Contracts with Pact](http://www.baeldung.com/pact-junit-consumer-driven-contracts)
diff --git a/libraries/pom.xml b/libraries/pom.xml
index 17630fd290..a8ded19a1e 100644
--- a/libraries/pom.xml
+++ b/libraries/pom.xml
@@ -46,11 +46,7 @@
commons-net
${commons-net.version}
-
- org.jasypt
- jasypt
- ${jasypt.version}
-
+
org.javatuples
javatuples
@@ -106,17 +102,17 @@
- net.serenity-bdd
- serenity-core
- ${serenity.version}
- test
-
-
- org.asciidoctor
- asciidoctorj
-
-
-
+ net.serenity-bdd
+ serenity-core
+ ${serenity.version}
+ test
+
+
+ org.asciidoctor
+ asciidoctorj
+
+
+
net.serenity-bdd
serenity-junit
@@ -438,16 +434,6 @@
caffeine
${caffeine.version}
-
- org.bouncycastle
- bcprov-jdk15on
- ${bouncycastle.version}
-
-
- org.bouncycastle
- bcpkix-jdk15on
- ${bouncycastle.version}
-
com.google.http-client
google-http-client
@@ -727,7 +713,6 @@
1.23.0
0.7.0
3.2.7
- 1.9.2
1.2
3.21.0-GA
3.6.2
@@ -797,9 +782,7 @@
1.2.6
4.8.1
1.0.1
- 1.58
1.19.4
-
4.5.1
3.3.0
3.0.2