Skip to content

Commit

Permalink
Working with test cases
Browse files Browse the repository at this point in the history
  • Loading branch information
yersan committed Nov 15, 2023
1 parent b7e16f2 commit 721ee01
Show file tree
Hide file tree
Showing 9 changed files with 242 additions and 68 deletions.
15 changes: 9 additions & 6 deletions .github/workflows/quickstart_mail_ci.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
name: WildFly Mail Quickstart CI

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'mail/**'
- '.github/workflows/quickstart_ci.yml'
#on:
# pull_request:
# types: [opened, synchronize, reopened, ready_for_review]
# paths:
# - 'mail/**'
# - '.github/workflows/quickstart_ci.yml'

on: workflow_dispatch
jobs:
call-quickstart_ci:
uses: ./.github/workflows/quickstart_ci.yml
with:
QUICKSTART_PATH: mail
TEST_PROVISIONED_SERVER: true
TEST_OPENSHIFT: false
MATRIX_OS: '"ubuntu-20.04"'
14 changes: 14 additions & 0 deletions .github/workflows/quickstart_mail_ci_before.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/sh

# Start apache James with the required configuration
docker run -d --rm --name "apache-james" \
-p 1465:465 \
-p 1993:993 \
-p 1025:25 \
-p 1110:110 \
-p 1587:587 \
-p 1143:143 \
-v ${GITHUB_WORKSPACE}/quickstarts/mail/mail-server-conf/imapserver.xml:/root/conf/imapserver.xml \
-v ${GITHUB_WORKSPACE}/quickstarts/mail/mail-server-conf/pop3server.xml:/root/conf/pop3server.xml \
-v ${GITHUB_WORKSPACE}/quickstarts/mail/mail-server-conf/smtpserver.xml:/root/conf/smtpserver.xml \
apache/james:demo-3.8.0
14 changes: 0 additions & 14 deletions mail/Dockerfile

This file was deleted.

12 changes: 9 additions & 3 deletions mail/docker-compose.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,12 @@ services:
- "1587:587"
- "1143:143"
volumes:
- "./mail-server-conf/imapserver.xml:/root/conf/imapserver.xml"
- "./mail-server-conf/pop3server.xml:/root/conf/pop3server.xml"
- "./mail-server-conf/smtpserver.xml:/root/conf/smtpserver.xml"
- ./mail-server-conf/imapserver.xml:/root/conf/imapserver.xml
- ./mail-server-conf/pop3server.xml:/root/conf/pop3server.xml
- ./mail-server-conf/smtpserver.xml:/root/conf/smtpserver.xml
healthcheck:
test: [ "CMD-SHELL", "/bin/james-cli -h 127.0.0.1 -p 9999 ListUsers | grep -q '[email protected]'" ]
interval: 5s
timeout: 1m
retries: 5
start_period: 20s
16 changes: 16 additions & 0 deletions mail/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@
<!-- The versions for BOMs, Packs and Plugins -->
<version.bom.ee>${version.server}</version.bom.ee>
<version.plugin.wildfly>4.2.0.Final</version.plugin.wildfly>

<version.org.seleniumhq.selenium>4.15.0</version.org.seleniumhq.selenium>
<version.webdrivermanager>5.6.2</version.webdrivermanager>
</properties>

<repositories>
Expand Down Expand Up @@ -148,6 +151,18 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${version.org.seleniumhq.selenium}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>${version.webdrivermanager}</version>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -191,6 +206,7 @@
</feature-packs>
<layers>
<!-- layers may be used to customize the server to provision-->
<layer>core-tools</layer>
<layer>core-server</layer>
<layer>mail</layer>
<layer>jsf</layer>
Expand Down
30 changes: 20 additions & 10 deletions mail/src/main/java/org/jboss/as/quickstarts/mail/Email.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
package org.jboss.as.quickstarts.mail;

import jakarta.annotation.Resource;
import jakarta.enterprise.context.SessionScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.faces.view.ViewScoped;
import jakarta.inject.Named;
import jakarta.mail.Address;
import jakarta.mail.Folder;
Expand All @@ -31,6 +31,7 @@
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;

import java.io.IOException;
import java.io.Serializable;

/**
Expand All @@ -51,7 +52,7 @@
*/

@Named
@ViewScoped
@SessionScoped
public class Email implements Serializable {

private static final long serialVersionUID = 1544680932114626710L;
Expand All @@ -72,7 +73,9 @@ public class Email implements Serializable {
private String body;

private String pop3User = "[email protected]";

private String pop3Password = "1234";

private String pop3Emails;

private String imapEmails;
Expand Down Expand Up @@ -111,9 +114,14 @@ public void resetSmtp() {
public void retrievePop3() throws Exception {
try {
pop3Emails = retrieveEmails("pop3", pop3User, pop3Password);
if (pop3Emails == null) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("No message found.");
context.addMessage(null, facesMessage);
}
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("Error retrieving emails using Pop3. " + e.getMessage());
FacesMessage facesMessage = new FacesMessage("Error retrieving emails using POP3. " + e.getMessage());
context.addMessage(null, facesMessage);
}
}
Expand All @@ -127,9 +135,14 @@ public void resetPop3() {
public void retrieveImap() throws Exception {
try {
imapEmails = retrieveEmails("imap");
if (imapEmails == null) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("No message found.");
context.addMessage(null, facesMessage);
}
} catch (Exception e) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("Error retrieving emails using Pop3. " + e.getMessage());
FacesMessage facesMessage = new FacesMessage("Error retrieving emails using IMAP. " + e.getMessage());
context.addMessage(null, facesMessage);
}
}
Expand All @@ -138,11 +151,11 @@ public void resetImap() {
imapEmails = null;
}

private String retrieveEmails(String protocol) throws MessagingException {
private String retrieveEmails(String protocol) throws MessagingException, IOException {
return retrieveEmails(protocol, null, null);
}

private String retrieveEmails(String protocol, String user, String password) throws MessagingException {
private String retrieveEmails(String protocol, String user, String password) throws MessagingException, IOException {
Store store = mySession.getStore(protocol);
if (user != null && !user.trim().isEmpty()) {
store.connect(user, password);
Expand All @@ -158,10 +171,6 @@ private String retrieveEmails(String protocol, String user, String password) thr
Message[] messages = inbox.getMessages();

if (messages.length == 0) {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("No message found for " + user);
context.addMessage(null, facesMessage);

return null;
}

Expand All @@ -176,6 +185,7 @@ private String retrieveEmails(String protocol, String user, String password) thr
sb.append("Message ").append((i + 1)).append("\n");
sb.append("From : ").append(messages[i].getFrom()[0]).append("\n");
sb.append("Subject : ").append(messages[i].getSubject()).append("\n");
sb.append("Body : ").append(messages[i].getContent().toString()).append("\n");
sb.append("Sent Date : ").append(messages[i].getSentDate()).append("\n");
sb.append("----------------------------------").append("\n");
}
Expand Down
62 changes: 31 additions & 31 deletions mail/src/main/webapp/home.xhtml
Original file line number Diff line number Diff line change
Expand Up @@ -36,39 +36,39 @@
<!-- Input box for the email parameters, plus a button to submit, and reset -->
<!-- These are bound using EL to our CDI beans -->
<div class="form-group">
<h:outputLabel for="from" value="From:"/>
<h:inputText id="from" value="#{email.from}" required="true"/>
<h:message id="m_from" for="from" styleClass="error"/>
<h:outputLabel for="smtp_from" value="From:"/>
<h:inputText id="smtp_from" value="#{email.from}" required="true"/>
<h:message id="m_smtp_from" for="smtp_from" styleClass="error"/>
</div>

<div class="form-group">
<h:outputLabel for="to" value="To:"/>
<h:inputText id="to" value="#{email.to}" required="true"/>
<h:message id="m_to" for="to" styleClass="error"/>
<h:outputLabel for="smtp_to" value="To:"/>
<h:inputText id="smtp_to" value="#{email.to}" required="true"/>
<h:message id="m_smtp_to" for="smtp_to" styleClass="error"/>
</div>

<div class="form-group">
<h:outputLabel for="subject" value="Subject:"/>
<h:inputText id="subject" value="#{email.subject}" required="true"/>
<h:message id="m_subject" for="subject" styleClass="error"/>
<h:outputLabel for="smtp_subject" value="Subject:"/>
<h:inputText id="smtp_subject" value="#{email.subject}" required="true"/>
<h:message id="m_smtp_subject" for="smtp_subject" styleClass="error"/>
</div>

<div class="form-group">
<h:outputLabel for="body" value="Body:"/>
<h:inputTextarea id="body" value="#{email.body}" required="true"/>
<h:message id="m_body" for="body" styleClass="error"/>
<h:outputLabel for="smtp_body" value="Body:"/>
<h:inputTextarea id="smtp_body" value="#{email.body}" required="true"/>
<h:message id="m_smtp_body" for="smtp_body" styleClass="error"/>
</div>

<div class="form-group">
<h:commandButton id="sendButton" value="Send" action="#{email.send}">
<h:commandButton id="smtp_send_btn" value="Send" action="#{email.send}">
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
<h:commandButton id="restartButton" value="Reset" immediate="true" action="#{email.resetSmtp}">
<h:commandButton id="smtp_restart_btn" value="Reset" immediate="true" action="#{email.resetSmtp}">
<f:ajax execute="@this" render="@form"/>
</h:commandButton>
</div>

<h:messages globalOnly="true" styleClass="error"/>
<h:messages id="smtp_messages" globalOnly="true" styleClass="error"/>
</h:form>


Expand All @@ -79,32 +79,32 @@
<!-- Retrieve emails via POP3 form -->
<h:form id="pop3" styleClass="form" prependId="false">
<div class="form-group">
<h:outputLabel for="pop3User" value="User:"/>
<h:inputText id="pop3User" required="true" value="#{email.pop3User}"/>
<h:message id="m_pop3User" for="pop3User" styleClass="error"/>
<h:outputLabel for="pop3_user" value="User:"/>
<h:inputText id="pop3_user" required="true" value="#{email.pop3User}"/>
<h:message id="m_pop3_user" for="pop3_user" styleClass="error"/>
</div>

<div class="form-group">
<h:outputLabel for="pop3Password" value="Password:"/>
<h:inputText id="pop3Password" required="true" value="#{email.pop3Password}"/>
<h:message id="m_pop3Password" for="pop3Password" styleClass="error"/>
<h:outputLabel for="pop3_password" value="Password:"/>
<h:inputText id="pop3_password" required="true" value="#{email.pop3Password}"/>
<h:message id="m_pop3_password" for="pop3_password" styleClass="error"/>
</div>

<div class="form-group">
<h:outputLabel for="pop3Emails" value="Emails:"/>
<h:inputTextarea id="pop3Emails" value="#{email.pop3Emails}" readonly="true" disabled="true"/>
<h:outputLabel for="pop3_emails" value="Emails:"/>
<h:inputTextarea id="pop3_emails" value="#{email.pop3Emails}" readonly="true" disabled="true"/>
</div>

<div class="form-group">
<h:commandButton id="pop3GetEmails" value="Get Emails" action="#{email.retrievePop3}">
<h:commandButton id="pop3_get_emails_btn" value="Get Emails" action="#{email.retrievePop3}">
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
<h:commandButton id="pop3Reset" value="Reset" immediate="true" action="#{email.resetPop3}">
<h:commandButton id="pop3_reset_btn" value="Reset" immediate="true" action="#{email.resetPop3}">
<f:ajax execute="@this" render="@form"/>
</h:commandButton>
</div>

<h:messages globalOnly="true" styleClass="error"/>
<h:messages id="pop3_messages" globalOnly="true" styleClass="error" />
</h:form>


Expand All @@ -115,20 +115,20 @@
<!-- Retrieve emails via IMAP form -->
<h:form id="imap" styleClass="form" prependId="false">
<div class="form-group">
<h:outputLabel for="imapEmails" value="Emails:"/>
<h:inputTextarea id="imapEmails" value="#{email.imapEmails}" readonly="true" disabled="true"/>
<h:outputLabel for="imap_emails" value="Emails:"/>
<h:inputTextarea id="imap_emails" value="#{email.imapEmails}" readonly="true" disabled="true"/>
</div>

<div class="form-group">
<h:commandButton id="imapGetEmails" value="Get Emails" action="#{email.retrieveImap}">
<h:commandButton id="imap_get_emails_btn" value="Get Emails" action="#{email.retrieveImap}">
<f:ajax execute="@form" render="@form"/>
</h:commandButton>
<h:commandButton id="imapReset" value="Reset" immediate="true" action="#{email.resetImap}">
<h:commandButton id="imap_reset_btn" value="Reset" immediate="true" action="#{email.resetImap}">
<f:ajax execute="@this" render="@form"/>
</h:commandButton>
</div>

<h:messages globalOnly="true" styleClass="error"/>
<h:messages id="imap_messages" globalOnly="true" styleClass="error"/>
</h:form>
</h:body>
</html>

This file was deleted.

Loading

0 comments on commit 721ee01

Please sign in to comment.