JakartaMailClient.java

1
package org.europa.together.application;
2
3
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
4
import jakarta.activation.DataHandler;
5
import jakarta.activation.DataSource;
6
import jakarta.mail.MessagingException;
7
import jakarta.mail.Multipart;
8
import jakarta.mail.NoSuchProviderException;
9
import jakarta.mail.PasswordAuthentication;
10
import jakarta.mail.Session;
11
import jakarta.mail.internet.InternetAddress;
12
import jakarta.mail.internet.MimeBodyPart;
13
import jakarta.mail.internet.MimeMessage;
14
import jakarta.mail.internet.MimeMultipart;
15
import java.io.IOException;
16
import java.util.Date;
17
import java.util.HashMap;
18
import java.util.List;
19
import java.util.Map;
20
import java.util.Properties;
21
import jakarta.activation.FileDataSource;
22
import org.europa.together.business.ConfigurationDAO;
23
import org.europa.together.business.CryptoTools;
24
import org.europa.together.business.Logger;
25
import org.europa.together.business.MailClient;
26
import org.europa.together.business.PropertyReader;
27
import org.europa.together.domain.ConfigurationDO;
28
import org.europa.together.domain.HashAlgorithm;
29
import org.europa.together.domain.LogLevel;
30
import org.europa.together.domain.Mail;
31
import org.europa.together.utils.Constraints;
32
import org.europa.together.utils.StringUtils;
33
import org.springframework.beans.factory.annotation.Autowired;
34
import org.springframework.stereotype.Repository;
35
36
/**
37
 * Implementation of a simple SMTP Mailer.
38
 */
39
@Repository
40
public class JakartaMailClient implements MailClient {
41
42
    private static final long serialVersionUID = 6L;
43
    private static final Logger LOGGER = new LogbackLogger(JakartaMailClient.class);
44
45
    @Autowired
46
    private ConfigurationDAO configurationDAO;
47
    @Autowired
48
    private CryptoTools cryptoTools;
49
    @Autowired
50
    private PropertyReader propertyReader;
51
52
    private Map<String, String> configuration;
53
    private MimeMessage message;
54
    private Mail email;
55
    private int configMaximumMailBulk;
56
    private long configCountWaitTime;
57
58
    /**
59
     * Constructor.
60
     */
61
    public JakartaMailClient() {
62 1 1. <init> : removed call to org/europa/together/application/JakartaMailClient::initConfig → KILLED
        initConfig();
63
        configMaximumMailBulk = -1;
64
        configCountWaitTime = -1;
65
        LOGGER.log("instance class", LogLevel.INFO);
66
    }
67
68
    @Override
69
    public Map<String, String> getDebugActiveConfiguration() {
70 1 1. getDebugActiveConfiguration : replaced return value with Collections.emptyMap for org/europa/together/application/JakartaMailClient::getDebugActiveConfiguration → KILLED
        return Map.copyOf(configuration);
71
    }
72
73
    @Override
74
    public void clearConfiguration() {
75 1 1. clearConfiguration : removed call to java/util/Map::clear → KILLED
        configuration.clear();
76
    }
77
78
    @Override
79
    public boolean loadConfigurationFromProperties(final String resource)
80
            throws IOException {
81
        boolean success = true;
82 1 1. loadConfigurationFromProperties : removed call to org/europa/together/application/JakartaMailClient::initConfig → SURVIVED
        initConfig();
83
        Map<String, String> properties = new HashMap<>();
84
        try {
85
            propertyReader.appendPropertiesFromClasspath(resource);
86
            properties = propertyReader.getPropertyList();
87
        } catch (Exception ex) {
88
            success = false;
89
            LOGGER.catchException(ex);
90
        }
91
92
        try {
93
            propertyReader.appendPropertiesFromFile(resource);
94
            properties = propertyReader.getPropertyList();
95
        } catch (Exception ex) {
96
            success = false;
97
            LOGGER.catchException(ex);
98
        }
99
100 1 1. loadConfigurationFromProperties : negated conditional → KILLED
        if (!properties.isEmpty()) {
101 1 1. loadConfigurationFromProperties : removed call to java/util/Map::putAll → KILLED
            configuration.putAll(properties);
102
        } else {
103
            success = false;
104
            throw new IOException("Could not load " + resource + " from file system or classpath.");
105
        }
106 2 1. loadConfigurationFromProperties : replaced boolean return with false for org/europa/together/application/JakartaMailClient::loadConfigurationFromProperties → SURVIVED
2. loadConfigurationFromProperties : replaced boolean return with true for org/europa/together/application/JakartaMailClient::loadConfigurationFromProperties → SURVIVED
        return success;
107
    }
108
109
    @Override
110
    public boolean loadConfigurationFromDatabase() {
111
        boolean success = false;
112 1 1. loadConfigurationFromDatabase : removed call to org/europa/together/application/JakartaMailClient::initConfig → KILLED
        initConfig();
113
        LOGGER.log("Load all configuration sets of: " + CONFIG_SET
114
                + " - Version: " + CONFIG_VERSION
115
                + " - Module: " + Constraints.MODULE_NAME, LogLevel.DEBUG);
116
        List<ConfigurationDO> configurationEntries
117
                = configurationDAO.getAllConfigurationSetEntries(Constraints.MODULE_NAME,
118
                        CONFIG_VERSION, CONFIG_SET);
119
        LOGGER.log("Size of config SET: " + configurationEntries.size(), LogLevel.DEBUG);
120 2 1. loadConfigurationFromDatabase : negated conditional → KILLED
2. loadConfigurationFromDatabase : changed conditional boundary → KILLED
        if (configurationEntries.size() > 0) {
121 1 1. loadConfigurationFromDatabase : removed call to org/europa/together/application/JakartaMailClient::processConfiguration → KILLED
            processConfiguration(configurationEntries);
122
            success = true;
123
        }
124
        LOGGER.log("DB CONFIG: " + configuration, LogLevel.DEBUG);
125 2 1. loadConfigurationFromDatabase : replaced boolean return with true for org/europa/together/application/JakartaMailClient::loadConfigurationFromDatabase → KILLED
2. loadConfigurationFromDatabase : replaced boolean return with false for org/europa/together/application/JakartaMailClient::loadConfigurationFromDatabase → KILLED
        return success;
126
    }
127
128
    @Override
129
    public int getBulkMailLimiter() {
130 1 1. getBulkMailLimiter : replaced int return with 0 for org/europa/together/application/JakartaMailClient::getBulkMailLimiter → KILLED
        return this.configMaximumMailBulk;
131
    }
132
133
    @Override
134
    public long getWaitTime() {
135 1 1. getWaitTime : replaced long return with 0 for org/europa/together/application/JakartaMailClient::getWaitTime → KILLED
        return this.configCountWaitTime;
136
    }
137
138
    @Override
139
    public void composeMail(final Mail email)
140
            throws MessagingException {
141
        MimeMessage mimeMessage = null;
142
        LOGGER.log("Compose E-Mail", LogLevel.DEBUG);
143
        mimeMessage = new MimeMessage(getSession());
144
        //HEADER - EVENLOPE
145 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setHeader → SURVIVED
        mimeMessage.setHeader("From: ", configuration.get("mailer.sender"));
146 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setHeader → SURVIVED
        mimeMessage.setHeader("Return-Path: ", configuration.get("mailer.sender"));
147 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setSentDate → SURVIVED
        mimeMessage.setSentDate(new Date());
148 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setSubject → KILLED
        mimeMessage.setSubject(email.getSubject());
149 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setFrom → SURVIVED
        mimeMessage.setFrom(new InternetAddress(configuration.get("mailer.sender")));
150 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setSender → KILLED
        mimeMessage.setSender(new InternetAddress(configuration.get("mailer.sender")));
151
        LOGGER.log("E-Mail {evenlope} done", LogLevel.DEBUG);
152
        // CONTENT
153
        MimeBodyPart bodypart = new MimeBodyPart();
154 1 1. composeMail : negated conditional → SURVIVED
        if (email.getMimeType().equals("html")) {
155 1 1. composeMail : removed call to jakarta/mail/internet/MimeBodyPart::setContent → SURVIVED
            bodypart.setContent(email.getMessage(), "text/html; charset=utf-8");
156
        } else {
157 1 1. composeMail : removed call to jakarta/mail/internet/MimeBodyPart::setText → SURVIVED
            bodypart.setText(email.getMessage(), "utf-8");
158
        }
159
        LOGGER.log("E-Mail {content} done", LogLevel.DEBUG);
160
        // ATTACHMENTS : http://www.jguru.com/faq/view.jsp?EID=30251
161
        Multipart multipart = new MimeMultipart();
162 1 1. composeMail : removed call to jakarta/mail/Multipart::addBodyPart → SURVIVED
        multipart.addBodyPart(bodypart);
163 1 1. composeMail : negated conditional → SURVIVED
        if (!email.getAttachmentList().isEmpty()) {
164
            for (FileDataSource file : email.getAttachmentList()) {
165
                DataSource source = file;
166 1 1. composeMail : removed call to jakarta/mail/internet/MimeBodyPart::setDataHandler → SURVIVED
                bodypart.setDataHandler(new DataHandler(source));
167 1 1. composeMail : removed call to jakarta/mail/internet/MimeBodyPart::setFileName → SURVIVED
                bodypart.setFileName(file.getName());
168 1 1. composeMail : removed call to jakarta/mail/Multipart::addBodyPart → SURVIVED
                multipart.addBodyPart(bodypart);
169
            }
170
        }
171
        LOGGER.log("E-Mail {atachments} done", LogLevel.DEBUG);
172 1 1. composeMail : removed call to jakarta/mail/internet/MimeMessage::setContent → SURVIVED
        mimeMessage.setContent(multipart);
173
        this.message = mimeMessage;
174
        this.email = new Mail(email);
175
    }
176
177
    @Override
178
    public Session getSession()
179
            throws NoSuchProviderException {
180
        Session connection = Session.getInstance(wireConfigurationEntries(),
181
                new jakarta.mail.Authenticator() {
182
            @Override
183
            protected PasswordAuthentication getPasswordAuthentication() {
184 1 1. getPasswordAuthentication : replaced return value with null for org/europa/together/application/JakartaMailClient$1::getPasswordAuthentication → KILLED
                return new PasswordAuthentication(
185
                        configuration.get("mailer.user"),
186
                        configuration.get("mailer.password")
187
                );
188
            }
189
        });
190 1 1. getSession : removed call to jakarta/mail/Session::setDebug → SURVIVED
        connection.setDebug(Boolean.valueOf(configuration.get("mailer.debug")));
191 1 1. getSession : replaced return value with null for org/europa/together/application/JakartaMailClient::getSession → KILLED
        return connection;
192
    }
193
194
    @Override
195
    public Mail getMailObject() {
196 1 1. getMailObject : replaced return value with null for org/europa/together/application/JakartaMailClient::getMailObject → KILLED
        return new Mail(email);
197
    }
198
199
    @Override
200
    public MimeMessage getMimeMessage() {
201
        final MimeMessage msg = this.message;
202 1 1. getMimeMessage : replaced return value with null for org/europa/together/application/JakartaMailClient::getMimeMessage → KILLED
        return msg;
203
    }
204
205
    @SuppressFBWarnings
206
    //SpotBugs: hard coded Password
207
    private void initConfig() {
208
        this.configuration = new HashMap<>();
209
        configuration.put("mailer.host", "mailer.host");
210
        configuration.put("mailer.port", "mailer.port");
211
        configuration.put("mailer.sender", "mailer.sender");
212
        configuration.put("mailer.user", "mailer.user");
213
        configuration.put("mailer.password", "mailer.password");
214
        configuration.put("mailer.ssl", "mailer.ssl");
215
        configuration.put("mailer.tls", "mailer.tls");
216
        configuration.put("mailer.debug", "false");
217
        configuration.put("mailer.count", "-1");
218
        configuration.put("mailer.wait", "-1");
219
    }
220
221
    private Properties wireConfigurationEntries() {
222
        configCountWaitTime = Long.parseLong(configuration.get("mailer.wait"));
223
        configMaximumMailBulk = Integer.parseInt(configuration.get("mailer.count"));
224
        Properties props = new Properties();
225
        props.put("mail.smtp.host", configuration.get("mailer.host"));
226
        props.put("mail.smtp.port", configuration.get("mailer.port"));
227
        props.put("mail.smtp.auth", "true");
228
        props.put("mail.smtp.starttls.enable", configuration.get("mailer.tls"));
229
        props.put("mail.smtp.ssl.enable", configuration.get("mailer.ssl"));
230
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
231
        props.put("mail.smtp.socketFactory.port", configuration.get("mailer.port"));
232
        props.put("mail.smtp.socketFactory.fallback", "false");
233
234
        props.put("mail.smtp.connectiontimeout", "8000"); // 8 seconds
235
        props.put("mail.smtp.timeout", "10000"); // 10 seconds
236 1 1. wireConfigurationEntries : replaced return value with null for org/europa/together/application/JakartaMailClient::wireConfigurationEntries → KILLED
        return props;
237
    }
238
239
    private void processConfiguration(final List<ConfigurationDO> configurationEntries) {
240
        LOGGER.log("Process E-Mail Configuration  (" + configurationEntries.size() + ")",
241
                LogLevel.DEBUG);
242
        for (ConfigurationDO entry : configurationEntries) {
243
            String value;
244 1 1. processConfiguration : negated conditional → KILLED
            if (StringUtils.isEmpty(entry.getValue())) {
245
                value = entry.getDefaultValue();
246
            } else {
247
                value = entry.getValue();
248
            }
249
            if (entry.getKey()
250 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.host",
251
                            HashAlgorithm.SHA256))) {
252
                configuration.replace("mailer.host", value);
253
            } else if (entry.getKey()
254 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.port",
255
                            HashAlgorithm.SHA256))) {
256
                configuration.replace("mailer.port", value);
257
            } else if (entry.getKey()
258 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.sender",
259
                            HashAlgorithm.SHA256))) {
260
                configuration.replace("mailer.sender", value);
261
            } else if (entry.getKey()
262 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.user",
263
                            HashAlgorithm.SHA256))) {
264
                configuration.replace("mailer.user", value);
265
            } else if (entry.getKey()
266 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.password",
267
                            HashAlgorithm.SHA256))) {
268
                configuration.replace("mailer.password", value);
269
            } else if (entry.getKey()
270 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.ssl",
271
                            HashAlgorithm.SHA256))) {
272
                configuration.replace("mailer.ssl", value);
273
            } else if (entry.getKey()
274 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.tls",
275
                            HashAlgorithm.SHA256))) {
276
                configuration.replace("mailer.tls", value);
277
            } else if (entry.getKey()
278 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.debug",
279
                            HashAlgorithm.SHA256))) {
280
                configuration.replace("mailer.debug", value);
281
            } else if (entry.getKey()
282 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.count",
283
                            HashAlgorithm.SHA256))) {
284
                configuration.replace("mailer.count", value);
285
            } else if (entry.getKey()
286 1 1. processConfiguration : negated conditional → KILLED
                    .equals(cryptoTools.calculateHash("mailer.wait",
287
                            HashAlgorithm.SHA256))) {
288
                configuration.replace("mailer.wait", value);
289
            }
290
        }
291
    }
292
}

Mutations

62

1.1
Location : <init>
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:initialConfiguration()]
removed call to org/europa/together/application/JakartaMailClient::initConfig → KILLED

70

1.1
Location : getDebugActiveConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:initialConfiguration()]
replaced return value with Collections.emptyMap for org/europa/together/application/JakartaMailClient::getDebugActiveConfiguration → KILLED

75

1.1
Location : clearConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:failConnetSMTPServer()]
removed call to java/util/Map::clear → KILLED

82

1.1
Location : loadConfigurationFromProperties
Killed by : none
removed call to org/europa/together/application/JakartaMailClient::initConfig → SURVIVED
Covering tests

100

1.1
Location : loadConfigurationFromProperties
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:failLoadConfigurationFromPropertyFile()]
negated conditional → KILLED

101

1.1
Location : loadConfigurationFromProperties
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromClasspath()]
removed call to java/util/Map::putAll → KILLED

106

1.1
Location : loadConfigurationFromProperties
Killed by : none
replaced boolean return with false for org/europa/together/application/JakartaMailClient::loadConfigurationFromProperties → SURVIVED
Covering tests

2.2
Location : loadConfigurationFromProperties
Killed by : none
replaced boolean return with true for org/europa/together/application/JakartaMailClient::loadConfigurationFromProperties → SURVIVED Covering tests

112

1.1
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.service.MailClientServiceTest.[engine:junit-jupiter]/[class:org.europa.together.service.MailClientServiceTest]/[method:updateConfiguration()]
removed call to org/europa/together/application/JakartaMailClient::initConfig → KILLED

120

1.1
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:tryLoadConfigEntryNotExist()]
negated conditional → KILLED

2.2
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:failLoadConfigurationFromDatabase()]
changed conditional boundary → KILLED

121

1.1
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
removed call to org/europa/together/application/JakartaMailClient::processConfiguration → KILLED

125

1.1
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:failLoadConfigurationFromDatabase()]
replaced boolean return with true for org/europa/together/application/JakartaMailClient::loadConfigurationFromDatabase → KILLED

2.2
Location : loadConfigurationFromDatabase
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:tryLoadConfigEntryNotExist()]
replaced boolean return with false for org/europa/together/application/JakartaMailClient::loadConfigurationFromDatabase → KILLED

130

1.1
Location : getBulkMailLimiter
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:initialConfiguration()]
replaced int return with 0 for org/europa/together/application/JakartaMailClient::getBulkMailLimiter → KILLED

135

1.1
Location : getWaitTime
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:initialConfiguration()]
replaced long return with 0 for org/europa/together/application/JakartaMailClient::getWaitTime → KILLED

145

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeMessage::setHeader → SURVIVED
Covering tests

146

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeMessage::setHeader → SURVIVED
Covering tests

147

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeMessage::setSentDate → SURVIVED
Covering tests

148

1.1
Location : composeMail
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:composeHtmlMail()]
removed call to jakarta/mail/internet/MimeMessage::setSubject → KILLED

149

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeMessage::setFrom → SURVIVED
Covering tests

150

1.1
Location : composeMail
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:composeHtmlMail()]
removed call to jakarta/mail/internet/MimeMessage::setSender → KILLED

154

1.1
Location : composeMail
Killed by : none
negated conditional → SURVIVED
Covering tests

155

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeBodyPart::setContent → SURVIVED
Covering tests

157

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeBodyPart::setText → SURVIVED
Covering tests

162

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/Multipart::addBodyPart → SURVIVED
Covering tests

163

1.1
Location : composeMail
Killed by : none
negated conditional → SURVIVED
Covering tests

166

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeBodyPart::setDataHandler → SURVIVED
Covering tests

167

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeBodyPart::setFileName → SURVIVED
Covering tests

168

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/Multipart::addBodyPart → SURVIVED
Covering tests

172

1.1
Location : composeMail
Killed by : none
removed call to jakarta/mail/internet/MimeMessage::setContent → SURVIVED
Covering tests

184

1.1
Location : getPasswordAuthentication
Killed by : org.europa.together.service.MailClientServiceTest.[engine:junit-jupiter]/[class:org.europa.together.service.MailClientServiceTest]/[method:failConnectionSendBulkMail()]
replaced return value with null for org/europa/together/application/JakartaMailClient$1::getPasswordAuthentication → KILLED

190

1.1
Location : getSession
Killed by : none
removed call to jakarta/mail/Session::setDebug → SURVIVED
Covering tests

191

1.1
Location : getSession
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:connectSMTPServer()]
replaced return value with null for org/europa/together/application/JakartaMailClient::getSession → KILLED

196

1.1
Location : getMailObject
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:getMailObject()]
replaced return value with null for org/europa/together/application/JakartaMailClient::getMailObject → KILLED

202

1.1
Location : getMimeMessage
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:composeHtmlMail()]
replaced return value with null for org/europa/together/application/JakartaMailClient::getMimeMessage → KILLED

236

1.1
Location : wireConfigurationEntries
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:connectSMTPServer()]
replaced return value with null for org/europa/together/application/JakartaMailClient::wireConfigurationEntries → KILLED

244

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

250

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

254

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

258

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

262

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

266

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

270

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

274

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

278

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

282

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

286

1.1
Location : processConfiguration
Killed by : org.europa.together.application.JakartaMailClientTest.[engine:junit-jupiter]/[class:org.europa.together.application.JakartaMailClientTest]/[method:loadConfigurationFromDatabase()]
negated conditional → KILLED

Active mutators

Tests examined


Report generated by PIT 1.22.0