Loading deploy/docker-compose.tmpl.yml +2 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ services: - MICROSERVICE_NAME - MICROSERVICE_PORT - SPRING_PROFILES_ACTIVE - SPRING_MAIL_USERNAME - SPRING_MAIL_PASSWORD - JAVA_OPTS=-XX:MaxRAMFraction=2 networks: - traefik-net Loading pom.xml +21 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ <!-- REDMIC --> <redmic.broker-lib.version>0.6.0</redmic.broker-lib.version> <redmic.test-utils.version>0.6.0</redmic.test-utils.version> <!-- OTHERS --> <!-- Plugins --> Loading Loading @@ -78,6 +78,26 @@ <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <!-- test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>test-utils</artifactId> <version>${redmic.test-utils.version}</version> <scope>test</scope> </dependency> </dependencies> <distributionManagement> <repository> Loading src/main/resources/application.properties +5 −1 Original line number Diff line number Diff line Loading @@ -35,11 +35,15 @@ broker.topic.alert=alert spring.mail.host=mail.redmic.es spring.mail.username=username spring.mail.password=password spring.mail.test-connection=true spring.mail.properties.mail.transport.protocol=smtp spring.mail.properties.mail.smtp.port=25 spring.mail.properties.mail.smtp.port=587 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.ssl.trust=* spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.from=${spring.mail.username} #Exclude from autoconfigure spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration, org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration, org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration, org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration, org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration, org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration, org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration, org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration, org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration, org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration, org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration, org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration, org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration, org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration, org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration, org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration, org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration, org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration, org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration, org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration, org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration, org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration, org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration, org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration, org.springframework.boot.autoconfigure.session.SessionAutoConfiguration, org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration, org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration, org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration, org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration, org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration, org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration, org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration src/test/java/es/redmic/test/notificationmanager/integration/SendEmailTest.java 0 → 100644 +74 −0 Original line number Diff line number Diff line package es.redmic.test.notificationmanager.integration; import static org.mockito.Mockito.verify; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; import javax.annotation.PostConstruct; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; import org.springframework.kafka.test.rule.KafkaEmbedded; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.alert.AlertType; import es.redmic.brokerlib.alert.Message; import es.redmic.brokerlib.listener.SendListener; import es.redmic.notificationmanager.NotificationManagerApplication; import es.redmic.notificationmanager.mail.service.EmailService; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = { NotificationManagerApplication.class }) @ActiveProfiles("test") @DirtiesContext @TestPropertySource(properties = { "schema.registry.port=18084" }) public class SendEmailTest extends KafkaBaseIntegrationTest { static String alertTopic = "alert"; @ClassRule public static KafkaEmbedded embeddedKafka = new KafkaEmbedded(1, true, alertTopic); @Autowired private KafkaTemplate<String, Message> kafkaTemplate; @MockBean EmailService service; @PostConstruct public void SendEmailTestPostConstruct() throws Exception { createSchemaRegistryRestApp(embeddedKafka.getZookeeperConnectionString(), embeddedKafka.getBrokersAsString()); } @Test public void sentAlertMessage_SendEmail_IfTypeIsEmail() throws InterruptedException { String subjectDefault = "[ERROR][TEST] ", subject = subjectDefault + "SendMailTest", to = "info@redmic.es", content = "Esto es una prueba"; Message message = new Message(to, subject, content, AlertType.ERROR.name()); ListenableFuture<SendResult<String, Message>> future = kafkaTemplate.send(alertTopic, message); future.addCallback(new SendListener()); Thread.sleep(4000); verify(service).sendSimpleMessage(to, subject, content); } } No newline at end of file Loading
deploy/docker-compose.tmpl.yml +2 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ services: - MICROSERVICE_NAME - MICROSERVICE_PORT - SPRING_PROFILES_ACTIVE - SPRING_MAIL_USERNAME - SPRING_MAIL_PASSWORD - JAVA_OPTS=-XX:MaxRAMFraction=2 networks: - traefik-net Loading
pom.xml +21 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ <!-- REDMIC --> <redmic.broker-lib.version>0.6.0</redmic.broker-lib.version> <redmic.test-utils.version>0.6.0</redmic.test-utils.version> <!-- OTHERS --> <!-- Plugins --> Loading Loading @@ -78,6 +78,26 @@ <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </dependency> <!-- test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>es.redmic.lib</groupId> <artifactId>test-utils</artifactId> <version>${redmic.test-utils.version}</version> <scope>test</scope> </dependency> </dependencies> <distributionManagement> <repository> Loading
src/main/resources/application.properties +5 −1 Original line number Diff line number Diff line Loading @@ -35,11 +35,15 @@ broker.topic.alert=alert spring.mail.host=mail.redmic.es spring.mail.username=username spring.mail.password=password spring.mail.test-connection=true spring.mail.properties.mail.transport.protocol=smtp spring.mail.properties.mail.smtp.port=25 spring.mail.properties.mail.smtp.port=587 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.ssl.trust=* spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.starttls.required=true spring.mail.properties.mail.smtp.from=${spring.mail.username} #Exclude from autoconfigure spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration, org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration, org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration, org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration, org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration, org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration, org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration, org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration, org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration, org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration, org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration, org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration, org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration, org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration, org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration, org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration, org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration, org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration, org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration, org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration, org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration, org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration, org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration, org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration, org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration, org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration, org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration, org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration, org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration, org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration, org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration, org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration, org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration, org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration, org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration, org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration, org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration, org.springframework.boot.autoconfigure.session.SessionAutoConfiguration, org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration, org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration, org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration, org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration, org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration, org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration, org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration
src/test/java/es/redmic/test/notificationmanager/integration/SendEmailTest.java 0 → 100644 +74 −0 Original line number Diff line number Diff line package es.redmic.test.notificationmanager.integration; import static org.mockito.Mockito.verify; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingDeque; import javax.annotation.PostConstruct; import org.junit.BeforeClass; import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; import org.springframework.kafka.test.rule.KafkaEmbedded; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.util.concurrent.ListenableFuture; import es.redmic.brokerlib.alert.AlertType; import es.redmic.brokerlib.alert.Message; import es.redmic.brokerlib.listener.SendListener; import es.redmic.notificationmanager.NotificationManagerApplication; import es.redmic.notificationmanager.mail.service.EmailService; import es.redmic.testutils.kafka.KafkaBaseIntegrationTest; @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = { NotificationManagerApplication.class }) @ActiveProfiles("test") @DirtiesContext @TestPropertySource(properties = { "schema.registry.port=18084" }) public class SendEmailTest extends KafkaBaseIntegrationTest { static String alertTopic = "alert"; @ClassRule public static KafkaEmbedded embeddedKafka = new KafkaEmbedded(1, true, alertTopic); @Autowired private KafkaTemplate<String, Message> kafkaTemplate; @MockBean EmailService service; @PostConstruct public void SendEmailTestPostConstruct() throws Exception { createSchemaRegistryRestApp(embeddedKafka.getZookeeperConnectionString(), embeddedKafka.getBrokersAsString()); } @Test public void sentAlertMessage_SendEmail_IfTypeIsEmail() throws InterruptedException { String subjectDefault = "[ERROR][TEST] ", subject = subjectDefault + "SendMailTest", to = "info@redmic.es", content = "Esto es una prueba"; Message message = new Message(to, subject, content, AlertType.ERROR.name()); ListenableFuture<SendResult<String, Message>> future = kafkaTemplate.send(alertTopic, message); future.addCallback(new SendListener()); Thread.sleep(4000); verify(service).sendSimpleMessage(to, subject, content); } } No newline at end of file