Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Checkstyle fixes #20

Merged
merged 3 commits into from
Nov 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package com.pineapple.veritas.controller;

import com.pineapple.veritas.entity.Organization;
import com.pineapple.veritas.mapper.OrganizationMapper;
import com.pineapple.veritas.request.LoginRequest;
import com.pineapple.veritas.service.VeritasService;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -13,10 +11,6 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
* Route controller for the Veritas service.
*/
Expand Down Expand Up @@ -67,11 +61,11 @@ public ResponseEntity<?> checkTextUser(@RequestBody String text,
@RequestParam String orgId) {
try {
if (!veritasService.checkRegistered(orgId)) {
return new ResponseEntity<> ("Please register first", HttpStatus.OK);
return new ResponseEntity<>("Please register first", HttpStatus.OK);
}

if (!veritasService.isTimeStampValid(orgId)) {
return new ResponseEntity<> ("Session expired, please login again", HttpStatus.OK);
return new ResponseEntity<>("Session expired, please login again", HttpStatus.OK);
}
veritasService.updateTimestamp(orgId);
return veritasService.checkTextUser(text, userId, orgId);
Expand All @@ -92,11 +86,11 @@ public ResponseEntity<?> numFlags(@RequestParam String userId,
@RequestParam String orgId) {
try {
if (!veritasService.checkRegistered(orgId)) {
return new ResponseEntity<> ("Please register first", HttpStatus.OK);
return new ResponseEntity<>("Please register first", HttpStatus.OK);
}

if (!veritasService.isTimeStampValid(orgId)) {
return new ResponseEntity<> ("Session expired, please login again", HttpStatus.OK);
return new ResponseEntity<>("Session expired, please login again", HttpStatus.OK);
}
veritasService.updateTimestamp(orgId);
return veritasService.numFlags(userId, orgId);
Expand All @@ -105,6 +99,9 @@ public ResponseEntity<?> numFlags(@RequestParam String userId,
}
}

/**
* Register a new organisation.
*/
@PostMapping("/register")
public ResponseEntity<?> register(@RequestBody LoginRequest loginRequest) {
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
import lombok.Getter;
import lombok.Setter;

/**
* Contains the organisation ID and password for a login request.
*/
@Getter
@Setter
public class LoginRequest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,12 @@ public ResponseEntity<?> numFlags(String userId, String orgId) {
}
}

/**
* Register a new organisation (insert org ID and password into the table).
*
* @param loginRequest Contains the org ID and password
* @return Http response indicating successful registration
*/
public ResponseEntity<?> register(LoginRequest loginRequest) {
Organization org = new Organization();
org.setOrgId(loginRequest.getOrgId());
Expand All @@ -144,6 +150,12 @@ public ResponseEntity<?> register(LoginRequest loginRequest) {
return new ResponseEntity<>("Successfully registered", HttpStatus.OK);
}

/**
* Log into a session for a particular organisation.
*
* @param loginRequest Contains the loginRequest org ID and password
* @return Http response indicating whether the login attempt was successful or not
*/
public ResponseEntity<?> login(LoginRequest loginRequest) {
Map<String, Object> loginMap = new HashMap<>();
loginMap.put("orgId", loginRequest.getOrgId());
Expand All @@ -160,13 +172,26 @@ public void updateTimestamp(String orgId) {
timestampMap.put(orgId, Instant.now());
}

/**
* Check if the organisation has been registered or not.
*
* @param orgId The organisation to check
* @return Boolean (true if registered, false if not)
*/
public boolean checkRegistered(String orgId) {
Map<String, Object> loginMap = new HashMap<>();
loginMap.put("orgId", orgId);
List<Organization> orgs = orgMapper.selectByMap(loginMap);
return !orgs.isEmpty();
}

/**
* Check if the session for an organisation is still active
* (i.e. if the last login attempt was less than 24 hours ago)
*
* @param orgId The organisation to check
* @return Boolean (true if session is active, false if not)
*/
public boolean isTimeStampValid(String orgId) {
Instant lastLogin = timestampMap.get(orgId);
if (lastLogin == null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package com.pineapple.veritas;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.pineapple.veritas.mapper.OrganizationMapper;
import com.pineapple.veritas.request.LoginRequest;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.pineapple.veritas.controller.VeritasController;
import com.pineapple.veritas.mapper.OrganizationMapper;
import com.pineapple.veritas.mapper.RecordMapper;
import com.pineapple.veritas.request.LoginRequest;
import com.pineapple.veritas.service.VeritasService;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
Expand Down Expand Up @@ -76,8 +76,6 @@ public void testCheckText() throws Exception {

@Test
public void testCheckTextUserNotRegistered() throws Exception {
ResponseEntity<Integer> response = new ResponseEntity<>(1, HttpStatus.OK);

mockMvc.perform(post("/checkTextUser")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Sample text\"")
Expand All @@ -89,9 +87,7 @@ public void testCheckTextUserNotRegistered() throws Exception {

@Test
public void testCheckTextUserNotValid() throws Exception {
ResponseEntity<Integer> response = new ResponseEntity<>(1, HttpStatus.OK);
Mockito.when(veritasService.checkRegistered(anyString())).thenReturn(true);

mockMvc.perform(post("/checkTextUser")
.contentType(MediaType.APPLICATION_JSON)
.content("\"Sample text\"")
Expand Down Expand Up @@ -165,8 +161,10 @@ public void testHandleException() throws Exception {

@Test
public void testRegister() throws Exception {
ResponseEntity<String> response = new ResponseEntity<>("Successfully registered", HttpStatus.OK);
Mockito.<ResponseEntity<?>>when(veritasService.register(Mockito.any(LoginRequest.class))).thenReturn(response);
ResponseEntity<String> response = new ResponseEntity<>(
"Successfully registered", HttpStatus.OK);
Mockito.<ResponseEntity<?>>when(
veritasService.register(Mockito.any(LoginRequest.class))).thenReturn(response);

LoginRequest loginRequest = new LoginRequest();
String loginRequestJson = objectMapper.writeValueAsString(loginRequest);
Expand All @@ -181,7 +179,8 @@ public void testRegister() throws Exception {
@Test
public void testLogin() throws Exception {
ResponseEntity<String> response = new ResponseEntity<>("OK", HttpStatus.OK);
Mockito.<ResponseEntity<?>>when(veritasService.login(Mockito.any(LoginRequest.class))).thenReturn(response);
Mockito.<ResponseEntity<?>>when(
veritasService.login(Mockito.any(LoginRequest.class))).thenReturn(response);

LoginRequest loginRequest = new LoginRequest();
String loginRequestJson = objectMapper.writeValueAsString(loginRequest);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.TestPropertySource;

/**
* This class contains unit tests for the Organization class.
*/
@SpringBootTest
@ContextConfiguration
@TestPropertySource(properties = "external.api.url=http://mocked-url")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,29 @@
package com.pineapple.veritas;

import com.pineapple.veritas.entity.Organization;
import com.pineapple.veritas.mapper.OrganizationMapper;
import com.pineapple.veritas.request.LoginRequest;
import java.lang.reflect.Field;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import com.pineapple.veritas.entity.Organization;
import com.pineapple.veritas.entity.Record;
import com.pineapple.veritas.mapper.OrganizationMapper;
import com.pineapple.veritas.mapper.RecordMapper;
import com.pineapple.veritas.request.LoginRequest;
import com.pineapple.veritas.response.CheckTextResponse;
import com.pineapple.veritas.service.VeritasService;
import java.lang.reflect.Field;
import java.net.URI;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
Expand Down Expand Up @@ -274,15 +271,16 @@ public void testIsTimeStampValidNull() {

@Test
public void testIsTimeStampValidExpired() throws NoSuchFieldException, IllegalAccessException {
Map<String, Instant> originalTimestampMap;

Instant instant1980 = ZonedDateTime.of(1980, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")).toInstant();
Map<String, Instant> mockTimestampMap = mock(Map.class);
when(mockTimestampMap.get(anyString())).thenReturn(instant1980);

Field field = VeritasService.class.getDeclaredField("timestampMap");
field.setAccessible(true);

Map<String, Instant> originalTimestampMap = (Map<String, Instant>) field.get(veritasService);

originalTimestampMap = (Map<String, Instant>) field.get(veritasService);
field.set(veritasService, mockTimestampMap);

veritasService.updateTimestamp("Expired");
Expand Down