From aedf37fd3b9b68a9577d389f84114e334bc57ba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Sun, 19 Mar 2023 12:41:32 +0100 Subject: [PATCH 01/11] mail-module impl --- application/model/pom.xml | 7 +++++ application/module-mail/pom.xml | 15 ++++++++++ .../fuseri/modulemail/service/EmailDto.java | 15 ++++++++++ .../modulemail/service/MailControler.java | 28 +++++++++++++++++++ .../modulemail/service/MailService.java | 23 +++++++++++++++ .../src/main/resources/application.properties | 9 +++++- 6 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java create mode 100644 application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java diff --git a/application/model/pom.xml b/application/model/pom.xml index aa4f9b93..705682e3 100644 --- a/application/model/pom.xml +++ b/application/model/pom.xml @@ -17,5 +17,12 @@ <properties> <spring-boot.repackage.skip>true</spring-boot.repackage.skip> </properties> + <dependencies> + <dependency> + <groupId>org.ifinalframework.annotation</groupId> + <artifactId>final-annotation-web</artifactId> + <version>1.4.0</version> + </dependency> + </dependencies> </project> \ No newline at end of file diff --git a/application/module-mail/pom.xml b/application/module-mail/pom.xml index 4e729ff3..42f8c4f9 100644 --- a/application/module-mail/pom.xml +++ b/application/module-mail/pom.xml @@ -27,6 +27,21 @@ <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-mail</artifactId> + <version>3.0.4</version> + </dependency> + +<!-- <dependency>--> +<!-- <groupId>javax.mail</groupId>--> +<!-- <artifactId>mail</artifactId>--> +<!-- <version>1.4.7</version>--> +<!-- </dependency>--> </dependencies> <build> diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java new file mode 100644 index 00000000..7db3d98a --- /dev/null +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java @@ -0,0 +1,15 @@ +package org.fuseri.modulemail.service; + +public class EmailDto { + + String sender; + String receiver; + String content; + + public EmailDto(String sender, String receiver, String content) { + this.sender = sender; + this.receiver = receiver; + this.content = content; + } + +} diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java new file mode 100644 index 00000000..87d7d61b --- /dev/null +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java @@ -0,0 +1,28 @@ +package org.fuseri.modulemail.service; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/mail") +public class MailControler { + + private final MailService service; + + @Autowired + public MailControler(MailService service) { + this.service = service; + } + + @PostMapping() + public ResponseEntity sendMail(@RequestBody EmailDto emailDto) { + return ResponseEntity.ok(service.send(emailDto)); + } + + +} diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java new file mode 100644 index 00000000..32e13bc6 --- /dev/null +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java @@ -0,0 +1,23 @@ +package org.fuseri.modulemail.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +@Service +public class MailService { + + @Autowired + private JavaMailSender emailSender; + + public String send(EmailDto dto) { + var message = new SimpleMailMessage(); + message.setFrom(dto.sender); + message.setTo(dto.receiver); + message.setSubject("Sprachschul"); + message.setText(dto.content); + + emailSender.send(message); + return "Success, you have sent: " + dto.content; + } +} diff --git a/application/module-mail/src/main/resources/application.properties b/application/module-mail/src/main/resources/application.properties index 8b137891..fe4165e1 100644 --- a/application/module-mail/src/main/resources/application.properties +++ b/application/module-mail/src/main/resources/application.properties @@ -1 +1,8 @@ - +spring.mail.host=smtp.gmail.com +spring.mail.port=587 +# change the email to app dedicated mail +spring.mail.username=email@gmail.com +# set the mail app password for the dedicated email +spring.mail.password=password +spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true -- GitLab From 2812459132019d6ff6bf5139833f50ec0af9b08c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Sun, 19 Mar 2023 14:23:00 +0100 Subject: [PATCH 02/11] created a dedicated mail --- .../module-mail/src/main/resources/application.properties | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/application/module-mail/src/main/resources/application.properties b/application/module-mail/src/main/resources/application.properties index fe4165e1..59c05327 100644 --- a/application/module-mail/src/main/resources/application.properties +++ b/application/module-mail/src/main/resources/application.properties @@ -1,8 +1,6 @@ spring.mail.host=smtp.gmail.com spring.mail.port=587 -# change the email to app dedicated mail -spring.mail.username=email@gmail.com -# set the mail app password for the dedicated email -spring.mail.password=password +spring.mail.username=sprachschul@gmail.com +spring.mail.password=xnyxsknctypmubbb spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true -- GitLab From a0277648d2613b60aac5201a706de7ca4c8a847c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Thu, 23 Mar 2023 16:20:06 +0100 Subject: [PATCH 03/11] added toString() --- .../main/java/org/fuseri/modulemail/service/EmailDto.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java index 7db3d98a..3b4a552d 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java @@ -12,4 +12,12 @@ public class EmailDto { this.content = content; } + @Override + public String toString() { + return "EmailDto{" + + "sender='" + sender + '\'' + + ", receiver='" + receiver + '\'' + + ", content='" + content + '\'' + + '}'; + } } -- GitLab From 320c2916267b772449d206941a66abc8e9a31f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Thu, 23 Mar 2023 16:20:27 +0100 Subject: [PATCH 04/11] added get and delete mail --- .../fuseri/modulemail/service/MailControler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java index 87d7d61b..7a295183 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java @@ -1,8 +1,12 @@ package org.fuseri.modulemail.service; +import jakarta.websocket.server.PathParam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -19,6 +23,17 @@ public class MailControler { this.service = service; } + + @GetMapping("/{id}") + public ResponseEntity getEmail(@PathVariable("id") Long id) { + return ResponseEntity.ok(service.getMail(id).toString()); + } + + @DeleteMapping("/delete/{id}") + public ResponseEntity deleteMail(@PathVariable("id") Long id) { + return ResponseEntity.ok(service.DeleteMail(id)); +} + @PostMapping() public ResponseEntity sendMail(@RequestBody EmailDto emailDto) { return ResponseEntity.ok(service.send(emailDto)); -- GitLab From e1b9d63fc3954d32ebcd1354c664faca3aa3bb7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Thu, 23 Mar 2023 16:21:20 +0100 Subject: [PATCH 05/11] added dummy implementation for get and delete mail --- .../org/fuseri/modulemail/service/MailService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java index 32e13bc6..f19e7fc3 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java @@ -18,6 +18,17 @@ public class MailService { message.setText(dto.content); emailSender.send(message); + // store to database once there is one + return "Success, you have sent: " + dto.content; } + + public EmailDto getMail(long id) { + return new EmailDto("","",""); // return from database once there is one + } + + public String DeleteMail (long id) { + return "No mail with that Id"; + } + } -- GitLab From 17c730b26e522b3280885be2ed7fa0a880f8e22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Sun, 26 Mar 2023 12:25:03 +0200 Subject: [PATCH 06/11] added validation to mail --- application/module-mail/pom.xml | 5 +++++ .../fuseri/modulemail/service/EmailDto.java | 17 +++++------------ .../modulemail/service/MailControler.java | 18 ++++++++---------- .../fuseri/modulemail/service/MailService.java | 4 ++-- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/application/module-mail/pom.xml b/application/module-mail/pom.xml index 42f8c4f9..9d99c12f 100644 --- a/application/module-mail/pom.xml +++ b/application/module-mail/pom.xml @@ -22,6 +22,11 @@ <artifactId>spring-boot-starter</artifactId> </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-validation</artifactId> + </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java index 3b4a552d..9b863edd 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java @@ -1,23 +1,16 @@ package org.fuseri.modulemail.service; +import jakarta.validation.constraints.NotBlank; + public class EmailDto { - String sender; + @NotBlank String receiver; + @NotBlank String content; - public EmailDto(String sender, String receiver, String content) { - this.sender = sender; + public EmailDto(String receiver, String content) { this.receiver = receiver; this.content = content; } - - @Override - public String toString() { - return "EmailDto{" + - "sender='" + sender + '\'' + - ", receiver='" + receiver + '\'' + - ", content='" + content + '\'' + - '}'; - } } diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java index 7a295183..935aeb92 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java @@ -1,9 +1,9 @@ package org.fuseri.modulemail.service; -import jakarta.websocket.server.PathParam; +import jakarta.validation.Valid; +import jakarta.validation.constraints.PositiveOrZero; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -25,19 +25,17 @@ public class MailControler { @GetMapping("/{id}") - public ResponseEntity getEmail(@PathVariable("id") Long id) { - return ResponseEntity.ok(service.getMail(id).toString()); + public String getEmail(@PositiveOrZero @PathVariable("id") Long id) { + return "No mail with that id yet"; } @DeleteMapping("/delete/{id}") - public ResponseEntity deleteMail(@PathVariable("id") Long id) { - return ResponseEntity.ok(service.DeleteMail(id)); + public String deleteMail(@PositiveOrZero @PathVariable("id") Long id) { + return "Nothing to delete Yet"; } @PostMapping() - public ResponseEntity sendMail(@RequestBody EmailDto emailDto) { - return ResponseEntity.ok(service.send(emailDto)); + public String sendMail(@Valid @RequestBody EmailDto emailDto) { + return service.send(emailDto); } - - } diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java index f19e7fc3..8eba0dac 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java @@ -12,7 +12,7 @@ public class MailService { public String send(EmailDto dto) { var message = new SimpleMailMessage(); - message.setFrom(dto.sender); + message.setFrom("sprachul@gmail.com"); message.setTo(dto.receiver); message.setSubject("Sprachschul"); message.setText(dto.content); @@ -24,7 +24,7 @@ public class MailService { } public EmailDto getMail(long id) { - return new EmailDto("","",""); // return from database once there is one + return new EmailDto("empty","empty"); // return from database once there is one } public String DeleteMail (long id) { -- GitLab From 8cbcbe98a7aa027450654271c274c60bd7e1a955 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gargalovi=C4=8D?= <xgargal@fi.muni.cz> Date: Sun, 26 Mar 2023 13:33:59 +0200 Subject: [PATCH 07/11] fixing typos and refactoring MailDto to correct dir --- application/model/pom.xml | 4 ++++ .../java/org/fuseri/model/dto/mail/MailDto.java} | 12 +++++++++--- application/module-mail/pom.xml | 8 +++++++- .../{MailControler.java => MailController.java} | 7 ++++--- .../org/fuseri/modulemail/service/MailService.java | 9 +++++---- 5 files changed, 29 insertions(+), 11 deletions(-) rename application/{module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java => model/src/main/java/org/fuseri/model/dto/mail/MailDto.java} (50%) rename application/module-mail/src/main/java/org/fuseri/modulemail/service/{MailControler.java => MailController.java} (85%) diff --git a/application/model/pom.xml b/application/model/pom.xml index 705682e3..1add6d56 100644 --- a/application/model/pom.xml +++ b/application/model/pom.xml @@ -23,6 +23,10 @@ <artifactId>final-annotation-web</artifactId> <version>1.4.0</version> </dependency> + <dependency> + <groupId>jakarta.validation</groupId> + <artifactId>jakarta.validation-api</artifactId> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java b/application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java similarity index 50% rename from application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java rename to application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java index 9b863edd..413e15b2 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/EmailDto.java +++ b/application/model/src/main/java/org/fuseri/model/dto/mail/MailDto.java @@ -1,15 +1,21 @@ -package org.fuseri.modulemail.service; +package org.fuseri.model.dto.mail; import jakarta.validation.constraints.NotBlank; +import lombok.Getter; +import lombok.Setter; -public class EmailDto { +@Getter +@Setter +public class MailDto { @NotBlank + public String receiver; @NotBlank + public String content; - public EmailDto(String receiver, String content) { + public MailDto(String receiver, String content) { this.receiver = receiver; this.content = content; } diff --git a/application/module-mail/pom.xml b/application/module-mail/pom.xml index 9d99c12f..451076a8 100644 --- a/application/module-mail/pom.xml +++ b/application/module-mail/pom.xml @@ -41,8 +41,14 @@ <artifactId>spring-boot-starter-mail</artifactId> <version>3.0.4</version> </dependency> + <dependency> + <groupId>org.fuseri</groupId> + <artifactId>models</artifactId> + <version>0.0.1-SNAPSHOT</version> + <scope>compile</scope> + </dependency> -<!-- <dependency>--> + <!-- <dependency>--> <!-- <groupId>javax.mail</groupId>--> <!-- <artifactId>mail</artifactId>--> <!-- <version>1.4.7</version>--> diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailController.java similarity index 85% rename from application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java rename to application/module-mail/src/main/java/org/fuseri/modulemail/service/MailController.java index 935aeb92..58f76ef0 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailControler.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailController.java @@ -3,6 +3,7 @@ package org.fuseri.modulemail.service; import jakarta.validation.Valid; import jakarta.validation.constraints.PositiveOrZero; +import org.fuseri.model.dto.mail.MailDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; @@ -14,12 +15,12 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/mail") -public class MailControler { +public class MailController { private final MailService service; @Autowired - public MailControler(MailService service) { + public MailController(MailService service) { this.service = service; } @@ -35,7 +36,7 @@ public class MailControler { } @PostMapping() - public String sendMail(@Valid @RequestBody EmailDto emailDto) { + public String sendMail(@Valid @RequestBody MailDto emailDto) { return service.send(emailDto); } } diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java index 8eba0dac..a2ee5539 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java @@ -1,5 +1,6 @@ package org.fuseri.modulemail.service; +import org.fuseri.model.dto.mail.MailDto; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.mail.SimpleMailMessage; @@ -10,7 +11,7 @@ public class MailService { @Autowired private JavaMailSender emailSender; - public String send(EmailDto dto) { + public String send(MailDto dto) { var message = new SimpleMailMessage(); message.setFrom("sprachul@gmail.com"); message.setTo(dto.receiver); @@ -23,11 +24,11 @@ public class MailService { return "Success, you have sent: " + dto.content; } - public EmailDto getMail(long id) { - return new EmailDto("empty","empty"); // return from database once there is one + public MailDto getMail(long id) { + return new MailDto("empty","empty"); // return from database once there is one } - public String DeleteMail (long id) { + public String deleteMail(long id) { return "No mail with that Id"; } -- GitLab From deba5edfec8c66590fce1f2fd21b95d524a27972 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sun, 26 Mar 2023 18:23:57 +0200 Subject: [PATCH 08/11] Add mail controller tests --- .../service/MailControllerTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java diff --git a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java new file mode 100644 index 00000000..af394ca5 --- /dev/null +++ b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java @@ -0,0 +1,32 @@ +package org.fuseri.modulemail.service; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +class MailControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void getEmail() throws Exception { + mockMvc.perform(get("/mail/{id}", 1)) + .andExpect(status().isOk()); + } + + @Test + void deleteMail() throws Exception { + mockMvc.perform(delete("/mail/delete/{id}", 1)) + .andExpect(status().isOk()); + } + +} \ No newline at end of file -- GitLab From 2b698701a5a2968ff8ebb79309046faa244dbd33 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sun, 26 Mar 2023 18:25:57 +0200 Subject: [PATCH 09/11] Change to Autowire in constructor --- .../java/org/fuseri/modulemail/service/MailService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java index a2ee5539..06f5fb82 100644 --- a/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java +++ b/application/module-mail/src/main/java/org/fuseri/modulemail/service/MailService.java @@ -8,8 +8,12 @@ import org.springframework.mail.javamail.JavaMailSender; @Service public class MailService { + private final JavaMailSender emailSender; + @Autowired - private JavaMailSender emailSender; + public MailService(JavaMailSender emailSender) { + this.emailSender = emailSender; + } public String send(MailDto dto) { var message = new SimpleMailMessage(); -- GitLab From d24ac9faca0daee52cd1ffc27a80588b5d892641 Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sun, 26 Mar 2023 19:05:21 +0200 Subject: [PATCH 10/11] Add sendMail --- .../service/MailControllerTest.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java index af394ca5..4105485f 100644 --- a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java +++ b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java @@ -1,13 +1,17 @@ package org.fuseri.modulemail.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.fuseri.model.dto.mail.MailDto; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @SpringBootTest @@ -29,4 +33,18 @@ class MailControllerTest { .andExpect(status().isOk()); } + @Test + void sendMail() throws Exception { + // TODO use mocks + + mockMvc.perform(post("/mail") + .content(asJsonString(new MailDto("12marting02@gmail.com", "Hello"))) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(status().isOk()); + } + + private static String asJsonString(final Object obj) throws JsonProcessingException { + return new ObjectMapper().writeValueAsString(obj); + } + } \ No newline at end of file -- GitLab From 80dc8a9c05d5eaee1c85e86ac30bd86e80d5429a Mon Sep 17 00:00:00 2001 From: Dominika Zemanovicova <xzemanov@fi.muni.cz> Date: Sun, 26 Mar 2023 21:10:31 +0200 Subject: [PATCH 11/11] Send mail mock --- .../fuseri/modulemail/service/MailControllerTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java index 4105485f..8ec50ec9 100644 --- a/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java +++ b/application/module-mail/src/test/java/org/fuseri/modulemail/service/MailControllerTest.java @@ -7,10 +7,11 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @@ -35,10 +36,12 @@ class MailControllerTest { @Test void sendMail() throws Exception { - // TODO use mocks + var mailDto = new MailDto("user@example.com", "Hello"); + MailController mailController = mock(MailController.class); + when(mailController.sendMail(mailDto)).thenReturn("Success, you have sent: " + mailDto.getContent()); mockMvc.perform(post("/mail") - .content(asJsonString(new MailDto("12marting02@gmail.com", "Hello"))) + .content(asJsonString(mailDto)) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); } -- GitLab