Skip to content

Commit

Permalink
Refactor mvc vs webflux packages
Browse files Browse the repository at this point in the history
  • Loading branch information
patkub committed Nov 6, 2024
1 parent b460a6c commit e202ed0
Show file tree
Hide file tree
Showing 17 changed files with 160 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.junit.jupiter.api.Test;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.mvc;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.webflux;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.webflux;

import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.webflux;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand All @@ -21,7 +21,7 @@
public class ProfileController {

private final Logger log = LoggerFactory.getLogger(this.getClass());
private final static ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
public final static ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());

@GetMapping("/profile")
public String profile(Model model, @AuthenticationPrincipal OidcUser oidcUser) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.example;
package org.example.webflux;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.example.webflux;

import org.junit.jupiter.api.Test;

public class DemoApplicationTest {

@Test
public void main() {
// Act
DemoApplication.main(new String[] {});
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package org.example.webflux;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.ui.Model;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;

@SpringBootTest
class HomeControllerTest {

private HomeController homeController;

@Mock
private Model model;

@Mock
private OidcUser principal;

@BeforeEach
public void beforeEach(){
homeController = new HomeController();
}

@Test
public void testHomeModel(){
// Act
String returnValue = homeController.home(model, principal);

// Assert
verify(model, times(1)).addAttribute(eq("profile"), Mockito.any());
assertEquals("index", returnValue);
}

@Test
public void testHomeModelNullPrincipal(){
// Act
String returnValue = homeController.home(model, null);

// Assert
verify(model, never()).addAttribute(eq("profile"), Mockito.any());
assertEquals("index", returnValue);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package org.example.webflux;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.ui.Model;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;

@SpringBootTest
public class ProfileControllerTest {

private ProfileController profileController;

@Mock
private Model model;

@Mock
private OidcUser oidcUser;

@BeforeEach
public void beforeEach(){
profileController = new ProfileController();
}

@Test
public void testProfileModel() {
// Act
String returnValue = profileController.profile(model, oidcUser);

// Assert
verify(model, times(1)).addAttribute(eq("profile"), Mockito.any());
verify(model, times(1)).addAttribute(eq("profileJson"), Mockito.any());
assertEquals("profile", returnValue);
}

@Test
public void testProfileModel_Exception() throws JsonProcessingException {
// Prepare
// Mock Logger
Logger mockedLogger = Mockito.mock(Logger.class);
ReflectionTestUtils.setField(profileController, "log", mockedLogger);

// Mocked ObjectWriter calls writeValueAsString() and throws JsonProcessingException
ObjectWriter mockedWriter = Mockito.mock(ObjectWriter.class);
when(mockedWriter.writeValueAsString(Mockito.any())).thenThrow(new JsonProcessingException("Error"){});

// Mocked ObjectMapper returns mocked ObjectWriter
ObjectMapper mockedMapper = Mockito.mock(ObjectMapper.class);
when(mockedMapper.writerWithDefaultPrettyPrinter()).thenReturn(mockedWriter);

// Set mocked ObjectMapper on class through reflection
ReflectionTestUtils.setField(profileController, "mapper", mockedMapper);

// Act
String returnValue = profileController.profile(model, oidcUser);

// Assert
verify(model, times(1)).addAttribute(eq("profile"), Mockito.any());
verify(model, times(1)).addAttribute(eq("profileJson"), Mockito.any());
assertEquals("profile", returnValue);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.example.webflux;

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Profile("test")
@Configuration
class SecurityConfig {}

0 comments on commit e202ed0

Please sign in to comment.