Skip to content

Commit 71f43e6

Browse files
anuragSharma1112anuragsharmaaxymthr
authored
fixed Test Classes (#85)
* fixed 4 Test Classes * add application-test.yml and fixed all test classes --------- Co-authored-by: anuragsharma <anurag.s@gmail.com> Co-authored-by: Akshay Mathur <akshay.mathur@statusneo.com>
1 parent 8652ac9 commit 71f43e6

19 files changed

Lines changed: 277 additions & 245 deletions

web-backend/src/main/java/com/statusneo/vms/service/GraphEmailService.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.slf4j.Logger;
2323
import org.slf4j.LoggerFactory;
2424
import org.springframework.beans.factory.annotation.Autowired;
25+
import org.springframework.beans.factory.annotation.Value;
2526
import org.springframework.context.annotation.Profile;
2627
import org.springframework.http.HttpStatus;
2728
import org.springframework.http.MediaType;
@@ -41,14 +42,17 @@
4142
* Service responsible for handling all email communications in the Visitor Management System.
4243
*/
4344
@Service
44-
@Profile({"prod", "default", "sqlite"})
45+
@Profile({"prod", "default", "sqlite", "test"})
4546
public class GraphEmailService implements EmailService {
4647

4748
private static final Logger logger = LoggerFactory.getLogger(GraphEmailService.class);
4849

4950
private final RestClient restClient;
5051
private final OAuth2AuthorizedClientManager authorizedClientManager;
5152

53+
@Value("${graph.api.base-url}")
54+
private String graphApiBaseUrl;
55+
5256
@Autowired
5357
public GraphEmailService(OAuth2AuthorizedClientManager authorizedClientManager,
5458
RestClient restClient) {
@@ -72,7 +76,7 @@ public String getAccessToken() {
7276
@Override
7377
public boolean sendEmail(Email email) {
7478
String accessToken = getAccessToken();
75-
String endpointUsers = String.format("https://graph.microsoft.com/v1.0/users/%s/sendMail", email.from());
79+
String endpointUsers = String.format("%s/users/%s/sendMail", graphApiBaseUrl, email.from());
7680

7781
Map<String, Object> emailData = new HashMap<>();
7882
Map<String, Object> message = new HashMap<>();

web-backend/src/main/java/com/statusneo/vms/service/NotificationService.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,17 @@ public class NotificationService {
4646

4747
private final EmailService emailService;
4848
private final TemplateEngine templateEngine;
49+
private final String systemFrom;
4950

5051
// Use the env-backed VMS_SYSTEM_EMAIL (fallback to vms.system-email or default noreply)
51-
@Value("${VMS_SYSTEM_EMAIL:${vms.system-email:noreply@company.com}}")
52-
private String systemFrom;
53-
54-
public NotificationService(EmailService emailService, TemplateEngine templateEngine) {
52+
public NotificationService(
53+
EmailService emailService,
54+
TemplateEngine templateEngine,
55+
@Value("${VMS_SYSTEM_EMAIL:${vms.system-email:noreply@company.com}}") String systemFrom
56+
) {
5557
this.emailService = emailService;
5658
this.templateEngine = templateEngine;
59+
this.systemFrom = systemFrom;
5760
}
5861

5962
public void sendVisitorConfirmationEmail(Visitor visitor) {

web-backend/src/main/java/com/statusneo/vms/service/OtpService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public OtpService(OtpRepository otpRepository, EmailService emailService,
7171
this.systemFrom = systemFrom;
7272
}
7373

74-
private static final int OTP_EXPIRATION_MINUTES = 10;
74+
private static final int OTP_EXPIRATION_MINUTES = 3;
7575
private static final int MAX_OTP_ATTEMPTS = 2;
7676
private static final int MAX_RESEND_COUNT = 2;
7777
private static final int RESEND_COOLDOWN_MINUTES = 2;

web-backend/src/main/java/com/statusneo/vms/service/ScheduledTasks.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,23 @@
2626
import org.springframework.stereotype.Component;
2727

2828
@Component
29-
@Profile("prod")
29+
@Profile({"prod","test"})
3030
public class ScheduledTasks {
3131

3232
private final ExcelService excelService;
3333
private final GraphDirectoryService graphDirectoryService;
3434

3535
private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
3636

37-
3837
public ScheduledTasks(ExcelService excelService, GraphDirectoryService graphDirectoryService) {
3938
this.excelService = excelService;
4039
this.graphDirectoryService = graphDirectoryService;
4140
}
4241

42+
@Scheduled(
43+
fixedRateString = "${vms.scheduled.report.rate:43200000}",
44+
initialDelayString = "${vms.scheduled.report.initialDelay:PT2H}"
45+
)
4346
@Scheduled(fixedRateString = "${vms.scheduled.report.rate:43200000}", initialDelayString = "PT2H") // Runs every 12 hours by default
4447
public void sendVisitorReport() {
4548
excelService.sendVisitorReport();

web-backend/src/main/java/com/statusneo/vms/service/VisitService.java

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -56,23 +56,6 @@ public VisitService(OtpService otpService, VisitorRepository visitorRepository,
5656
this.visitRepository = visitRepository;
5757
}
5858

59-
60-
// Send OTP
61-
// notificationService.sendOtp(visitor.getEmail(), visitor.getOtp());
62-
// }
63-
//
64-
// @Transactional
65-
// public Visitor saveVisitor(Visitor visitor) {
66-
// Visitor savedVisitor = visitorRepository.save(visitor);
67-
// emailService.sendVisitorEmail(savedVisitor);
68-
// otpService.sendOtp(savedVisitor.getEmail());
69-
// return savedVisitor;
70-
// }
71-
72-
73-
// return otpService.sendOtp(visit.getVisitor().getEmail(), visit);
74-
// }
75-
7659
/**
7760
* Registers a new visit and generates an OTP for visitor verification.
7861
* The OTP is associated with the visit and sent to the visitor's email.

web-backend/src/main/java/com/statusneo/vms/service/WiremockMailServiceImpl.java

Lines changed: 0 additions & 71 deletions
This file was deleted.

web-backend/src/main/resources/application.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ vms:
4747
sync:
4848
onstartup:
4949
enabled: false
50-
wiremock:
51-
server:
52-
port: 8081
53-
mail:
54-
url: http://localhost:${wiremock.server.port}/v1.0/users/%s/sendMail
50+
51+
graph:
52+
api:
53+
base-url: https://graph.microsoft.com/v1.0

web-backend/src/test/java/com/statusneo/vms/VmsApplicationTests.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
import org.junit.jupiter.api.Test;
44
import org.springframework.boot.test.context.SpringBootTest;
5-
import org.springframework.context.annotation.Import;
5+
import org.springframework.test.context.ActiveProfiles;
66

7-
@Import(TestcontainersConfiguration.class)
87
@SpringBootTest
8+
@ActiveProfiles("test")
99
class VmsApplicationTests {
1010

1111
@Test
1212
void contextLoads() {
1313
}
14-
1514
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.statusneo.vms.config;
2+
import com.statusneo.vms.service.EmailService;
3+
import com.statusneo.vms.service.GraphDirectoryService;
4+
import org.springframework.boot.test.context.TestConfiguration;
5+
import org.springframework.context.annotation.Bean;
6+
import static org.mockito.Mockito.mock;
7+
8+
@TestConfiguration
9+
public class TestConfig {
10+
@Bean
11+
public GraphDirectoryService graphDirectoryService() {
12+
return mock(GraphDirectoryService.class);
13+
}
14+
@Bean
15+
public EmailService emailService() {
16+
return mock(EmailService.class);
17+
}
18+
}

web-backend/src/test/java/com/statusneo/vms/service/ExcelServiceITest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package com.statusneo.vms.service;
22

3-
import com.statusneo.vms.TestcontainersConfiguration;
43
import com.statusneo.vms.model.Visitor;
54
import com.statusneo.vms.repository.VisitorRepository;
65
import org.junit.jupiter.api.BeforeEach;
76
import org.junit.jupiter.api.Disabled;
87
import org.junit.jupiter.api.Test;
98
import org.springframework.beans.factory.annotation.Autowired;
109
import org.springframework.boot.test.context.SpringBootTest;
11-
import org.springframework.context.annotation.Import;
1210
import org.springframework.test.context.ActiveProfiles;
11+
import org.springframework.test.context.bean.override.mockito.MockitoBean;
1312
import org.springframework.transaction.annotation.Transactional;
1413

1514
import java.util.List;
@@ -19,9 +18,11 @@
1918
@SpringBootTest
2019
@Disabled("Enable this test with real credentials and configuration for full integration testing.")
2120
@ActiveProfiles("test")
22-
@Import(TestcontainersConfiguration.class)
2321
class ExcelServiceITest {
2422

23+
@MockitoBean
24+
private EmailService emailService;
25+
2526
@Autowired
2627
private ExcelService excelService;
2728

0 commit comments

Comments
 (0)