diff --git a/src/main/java/com/commafeed/backend/feed/FeedRefreshWorker.java b/src/main/java/com/commafeed/backend/feed/FeedRefreshWorker.java index 6f57b1e0..6c9ae34f 100644 --- a/src/main/java/com/commafeed/backend/feed/FeedRefreshWorker.java +++ b/src/main/java/com/commafeed/backend/feed/FeedRefreshWorker.java @@ -4,6 +4,7 @@ import io.dropwizard.lifecycle.Managed; import java.util.Date; import java.util.List; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; @@ -20,7 +21,6 @@ import com.commafeed.backend.HttpGetter.NotModifiedException; import com.commafeed.backend.feed.FeedRefreshExecutor.Task; import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.FeedEntry; -import com.google.common.base.Optional; /** * Calls {@link FeedFetcher} and handles its outcome @@ -84,7 +84,7 @@ public class FeedRefreshWorker implements Managed { int refreshInterval = config.getApplicationSettings().getRefreshIntervalMinutes(); Date disabledUntil = DateUtils.addMinutes(new Date(), refreshInterval); try { - String url = Optional.fromNullable(feed.getUrlAfterRedirect()).or(feed.getUrl()); + String url = Optional.ofNullable(feed.getUrlAfterRedirect()).orElse(feed.getUrl()); FetchedFeed fetchedFeed = fetcher.fetch(url, false, feed.getLastModifiedHeader(), feed.getEtagHeader(), feed.getLastPublishedDate(), feed.getLastContentHash()); // stops here if NotModifiedException or any other exception is thrown diff --git a/src/main/java/com/commafeed/backend/service/MailService.java b/src/main/java/com/commafeed/backend/service/MailService.java index 2e9d2186..6eaa59bd 100644 --- a/src/main/java/com/commafeed/backend/service/MailService.java +++ b/src/main/java/com/commafeed/backend/service/MailService.java @@ -1,5 +1,6 @@ package com.commafeed.backend.service; +import java.util.Optional; import java.util.Properties; import javax.inject.Inject; @@ -17,7 +18,6 @@ import lombok.RequiredArgsConstructor; import com.commafeed.CommaFeedConfiguration; import com.commafeed.CommaFeedConfiguration.ApplicationSettings; import com.commafeed.backend.model.User; -import com.google.common.base.Optional; /** * Mailing service @@ -35,7 +35,7 @@ public class MailService { final String username = settings.getSmtpUserName(); final String password = settings.getSmtpPassword(); - final String fromAddress = Optional.fromNullable(settings.getSmtpFromAddress()).or(settings.getSmtpUserName()); + final String fromAddress = Optional.ofNullable(settings.getSmtpFromAddress()).orElse(settings.getSmtpUserName()); String dest = user.getEmail(); diff --git a/src/main/java/com/commafeed/backend/service/UserService.java b/src/main/java/com/commafeed/backend/service/UserService.java index f5c0446b..b7172cfa 100644 --- a/src/main/java/com/commafeed/backend/service/UserService.java +++ b/src/main/java/com/commafeed/backend/service/UserService.java @@ -2,6 +2,7 @@ package com.commafeed.backend.service; import java.util.Collection; import java.util.Date; +import java.util.Optional; import java.util.UUID; import javax.inject.Inject; @@ -20,7 +21,6 @@ import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserRole; import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.service.internal.PostLoginActivities; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; @RequiredArgsConstructor(onConstructor = @__({ @Inject })) @@ -41,7 +41,7 @@ public class UserService { */ public Optional login(String nameOrEmail, String password) { if (nameOrEmail == null || password == null) { - return Optional.absent(); + return Optional.empty(); } User user = userDAO.findByName(nameOrEmail); @@ -55,7 +55,7 @@ public class UserService { return Optional.of(user); } } - return Optional.absent(); + return Optional.empty(); } /** @@ -63,7 +63,7 @@ public class UserService { */ public Optional login(String apiKey) { if (apiKey == null) { - return Optional.absent(); + return Optional.empty(); } User user = userDAO.findByApiKey(apiKey); @@ -71,7 +71,7 @@ public class UserService { performPostLoginActivities(user); return Optional.of(user); } - return Optional.absent(); + return Optional.empty(); } /** diff --git a/src/main/java/com/commafeed/frontend/auth/SecurityCheckFactory.java b/src/main/java/com/commafeed/frontend/auth/SecurityCheckFactory.java index 6f4dd3c9..673790f8 100644 --- a/src/main/java/com/commafeed/frontend/auth/SecurityCheckFactory.java +++ b/src/main/java/com/commafeed/frontend/auth/SecurityCheckFactory.java @@ -1,5 +1,7 @@ package com.commafeed.frontend.auth; +import java.util.Optional; + import javax.inject.Inject; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.WebApplicationException; @@ -18,7 +20,6 @@ import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.service.UserService; import com.commafeed.frontend.session.SessionHelper; -import com.google.common.base.Optional; @RequiredArgsConstructor public class SecurityCheckFactory extends AbstractContainerRequestValueFactory { @@ -82,7 +83,7 @@ public class SecurityCheckFactory extends AbstractContainerRequestValueFactory apiKeyLogin() { @@ -90,7 +91,7 @@ public class SecurityCheckFactory extends AbstractContainerRequestValueFactory getLoggedInUser() { Optional session = getSession(false); - + if (session.isPresent()) { User user = (User) session.get().getAttribute(SESSION_KEY_USER); - return Optional.fromNullable(user); + return Optional.ofNullable(user); } - - return Optional.absent(); + + return Optional.empty(); } - + public void setLoggedInUser(User user) { Optional session = getSession(true); session.get().setAttribute(SESSION_KEY_USER, user); } - + private Optional getSession(boolean force) { HttpSession session = request.getSession(force); - return Optional.fromNullable(session); + return Optional.ofNullable(session); } } diff --git a/src/test/java/com/commafeed/backend/service/UserServiceTest.java b/src/test/java/com/commafeed/backend/service/UserServiceTest.java index 58a19e2d..e520dc46 100644 --- a/src/test/java/com/commafeed/backend/service/UserServiceTest.java +++ b/src/test/java/com/commafeed/backend/service/UserServiceTest.java @@ -9,6 +9,8 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.Optional; + import org.junit.Before; import org.junit.Test; import org.mockito.Mock; @@ -20,161 +22,167 @@ import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserSettingsDAO; import com.commafeed.backend.model.User; import com.commafeed.backend.service.internal.PostLoginActivities; -import com.google.common.base.Optional; public class UserServiceTest { - - private static final byte[] SALT = new byte[]{1,2,3}; - private static final byte[] ENCRYPTED_PASSWORD = new byte[]{5,6,7}; - - @Mock private CommaFeedConfiguration commaFeedConfiguration; - @Mock private FeedCategoryDAO feedCategoryDAO; - @Mock private UserDAO userDAO; - @Mock private UserSettingsDAO userSettingsDAO; - @Mock private PasswordEncryptionService passwordEncryptionService; - @Mock private PostLoginActivities postLoginActivities; - + + private static final byte[] SALT = new byte[] { 1, 2, 3 }; + private static final byte[] ENCRYPTED_PASSWORD = new byte[] { 5, 6, 7 }; + + @Mock + private CommaFeedConfiguration commaFeedConfiguration; + @Mock + private FeedCategoryDAO feedCategoryDAO; + @Mock + private UserDAO userDAO; + @Mock + private UserSettingsDAO userSettingsDAO; + @Mock + private PasswordEncryptionService passwordEncryptionService; + @Mock + private PostLoginActivities postLoginActivities; + private User disabledUser; private User normalUser; - + private UserService userService; - @Before public void - before_each_test() { + @Before + public void before_each_test() { MockitoAnnotations.initMocks(this); - - userService = new UserService(feedCategoryDAO, userDAO, userSettingsDAO, passwordEncryptionService, commaFeedConfiguration, postLoginActivities); - + + userService = new UserService(feedCategoryDAO, userDAO, userSettingsDAO, passwordEncryptionService, commaFeedConfiguration, + postLoginActivities); + disabledUser = new User(); disabledUser.setDisabled(true); - + normalUser = new User(); normalUser.setDisabled(false); normalUser.setSalt(SALT); normalUser.setPassword(ENCRYPTED_PASSWORD); } - - @Test public void - calling_login_should_not_return_user_object_when_given_null_nameOrEmail() { + + @Test + public void calling_login_should_not_return_user_object_when_given_null_nameOrEmail() { Optional user = userService.login(null, "password"); assertFalse(user.isPresent()); } - - @Test public void - calling_login_should_not_return_user_object_when_given_null_password() { + + @Test + public void calling_login_should_not_return_user_object_when_given_null_password() { Optional user = userService.login("testusername", null); assertFalse(user.isPresent()); } - - @Test public void - calling_login_should_lookup_user_by_name() { + + @Test + public void calling_login_should_lookup_user_by_name() { userService.login("test", "password"); verify(userDAO).findByName("test"); } - - @Test public void - calling_login_should_lookup_user_by_email_if_lookup_by_name_failed() { + + @Test + public void calling_login_should_lookup_user_by_email_if_lookup_by_name_failed() { when(userDAO.findByName("test@test.com")).thenReturn(null); userService.login("test@test.com", "password"); verify(userDAO).findByEmail("test@test.com"); } - - @Test public void - calling_login_should_not_return_user_object_if_could_not_find_user_by_name_or_email() { + + @Test + public void calling_login_should_not_return_user_object_if_could_not_find_user_by_name_or_email() { when(userDAO.findByName("test@test.com")).thenReturn(null); when(userDAO.findByEmail("test@test.com")).thenReturn(null); - + Optional user = userService.login("test@test.com", "password"); - + assertFalse(user.isPresent()); } - - @Test public void - calling_login_should_not_return_user_object_if_user_is_disabled() { + + @Test + public void calling_login_should_not_return_user_object_if_user_is_disabled() { when(userDAO.findByName("test")).thenReturn(disabledUser); Optional user = userService.login("test", "password"); assertFalse(user.isPresent()); } - - @Test public void - calling_login_should_try_to_authenticate_user_who_is_not_disabled() { + + @Test + public void calling_login_should_try_to_authenticate_user_who_is_not_disabled() { when(userDAO.findByName("test")).thenReturn(normalUser); when(passwordEncryptionService.authenticate(anyString(), any(byte[].class), any(byte[].class))).thenReturn(false); - + userService.login("test", "password"); - + verify(passwordEncryptionService).authenticate("password", ENCRYPTED_PASSWORD, SALT); } - - @Test public void - calling_login_should_not_return_user_object_on_unsuccessful_authentication() { + + @Test + public void calling_login_should_not_return_user_object_on_unsuccessful_authentication() { when(userDAO.findByName("test")).thenReturn(normalUser); when(passwordEncryptionService.authenticate(anyString(), any(byte[].class), any(byte[].class))).thenReturn(false); - + Optional authenticatedUser = userService.login("test", "password"); - + assertFalse(authenticatedUser.isPresent()); } - - @Test public void - calling_login_should_execute_post_login_activities_for_user_on_successful_authentication() { + + @Test + public void calling_login_should_execute_post_login_activities_for_user_on_successful_authentication() { when(userDAO.findByName("test")).thenReturn(normalUser); when(passwordEncryptionService.authenticate(anyString(), any(byte[].class), any(byte[].class))).thenReturn(true); doNothing().when(postLoginActivities).executeFor(any(User.class)); - + userService.login("test", "password"); - + verify(postLoginActivities).executeFor(normalUser); } - - @Test public void - calling_login_should_return_user_object_on_successful_authentication() { + + @Test + public void calling_login_should_return_user_object_on_successful_authentication() { when(userDAO.findByName("test")).thenReturn(normalUser); when(passwordEncryptionService.authenticate(anyString(), any(byte[].class), any(byte[].class))).thenReturn(true); doNothing().when(postLoginActivities).executeFor(any(User.class)); - + Optional authenticatedUser = userService.login("test", "password"); - + assertTrue(authenticatedUser.isPresent()); assertEquals(normalUser, authenticatedUser.get()); } - - @Test public void - api_login_should_not_return_user_if_apikey_null() { + + @Test + public void api_login_should_not_return_user_if_apikey_null() { Optional user = userService.login(null); assertFalse(user.isPresent()); } - - @Test public void - api_login_should_lookup_user_by_apikey() { + + @Test + public void api_login_should_lookup_user_by_apikey() { when(userDAO.findByApiKey("apikey")).thenReturn(null); userService.login("apikey"); verify(userDAO).findByApiKey("apikey"); } - - @Test public void - api_login_should_not_return_user_if_user_not_found_from_lookup_by_apikey() { + + @Test + public void api_login_should_not_return_user_if_user_not_found_from_lookup_by_apikey() { when(userDAO.findByApiKey("apikey")).thenReturn(null); Optional user = userService.login("apikey"); assertFalse(user.isPresent()); } - - @Test public void - api_login_should_not_return_user_if_user_found_from_apikey_lookup_is_disabled() { + + @Test + public void api_login_should_not_return_user_if_user_found_from_apikey_lookup_is_disabled() { when(userDAO.findByApiKey("apikey")).thenReturn(disabledUser); Optional user = userService.login("apikey"); assertFalse(user.isPresent()); } - - @Test public void - api_login_should_perform_post_login_activities_if_user_found_from_apikey_lookup_not_disabled() { + + @Test + public void api_login_should_perform_post_login_activities_if_user_found_from_apikey_lookup_not_disabled() { when(userDAO.findByApiKey("apikey")).thenReturn(normalUser); userService.login("apikey"); verify(postLoginActivities).executeFor(normalUser); } - - @Test public void - api_login_should_return_user_if_user_found_from_apikey_lookup_not_disabled() { + + @Test + public void api_login_should_return_user_if_user_found_from_apikey_lookup_not_disabled() { when(userDAO.findByApiKey("apikey")).thenReturn(normalUser); Optional returnedUser = userService.login("apikey"); assertEquals(normalUser, returnedUser.get()); diff --git a/src/test/java/com/commafeed/frontend/auth/SecurityCheckFactoryTest.java b/src/test/java/com/commafeed/frontend/auth/SecurityCheckFactoryTest.java index 5c5f5861..6f747dce 100644 --- a/src/test/java/com/commafeed/frontend/auth/SecurityCheckFactoryTest.java +++ b/src/test/java/com/commafeed/frontend/auth/SecurityCheckFactoryTest.java @@ -4,13 +4,14 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.Optional; + import org.junit.Test; import com.commafeed.backend.model.User; import com.commafeed.backend.service.UserService; import com.commafeed.backend.service.internal.PostLoginActivities; import com.commafeed.frontend.session.SessionHelper; -import com.google.common.base.Optional; public class SecurityCheckFactoryTest { diff --git a/src/test/java/com/commafeed/frontend/resource/UserRestTest.java b/src/test/java/com/commafeed/frontend/resource/UserRestTest.java index 0811aa1a..ec3c53d8 100644 --- a/src/test/java/com/commafeed/frontend/resource/UserRestTest.java +++ b/src/test/java/com/commafeed/frontend/resource/UserRestTest.java @@ -8,6 +8,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import java.util.Arrays; +import java.util.Optional; import org.junit.Test; import org.mockito.InOrder; @@ -19,93 +20,92 @@ import com.commafeed.backend.service.UserService; import com.commafeed.frontend.model.request.LoginRequest; import com.commafeed.frontend.model.request.RegistrationRequest; import com.commafeed.frontend.session.SessionHelper; -import com.google.common.base.Optional; public class UserRestTest { - - @Test public void - login_should_not_populate_http_session_if_unsuccessfull() { + + @Test + public void login_should_not_populate_http_session_if_unsuccessfull() { // Absent user - Optional absentUser = Optional.absent(); - + Optional absentUser = Optional.empty(); + // Create UserService partial mock UserService service = mock(UserService.class); when(service.login("user", "password")).thenReturn(absentUser); - + UserREST userREST = new UserREST(null, null, null, service, null, null, null); SessionHelper sessionHelper = mock(SessionHelper.class); - + LoginRequest req = new LoginRequest(); req.setName("user"); req.setPassword("password"); - + userREST.login(req, sessionHelper); - + verify(sessionHelper, never()).setLoggedInUser(any(User.class)); } - - @Test public void - login_should_populate_http_session_if_successfull() { + + @Test + public void login_should_populate_http_session_if_successfull() { // Create a user User user = new User(); - + // Create UserService mock UserService service = mock(UserService.class); when(service.login("user", "password")).thenReturn(Optional.of(user)); - + LoginRequest req = new LoginRequest(); req.setName("user"); req.setPassword("password"); - + UserREST userREST = new UserREST(null, null, null, service, null, null, null); SessionHelper sessionHelper = mock(SessionHelper.class); - + userREST.login(req, sessionHelper); - + verify(sessionHelper).setLoggedInUser(user); } - - @Test public void - register_should_register_and_then_login() { + + @Test + public void register_should_register_and_then_login() { // Create UserService mock UserService service = mock(UserService.class); - + RegistrationRequest req = new RegistrationRequest(); req.setName("user"); req.setPassword("password"); req.setEmail("test@test.com"); - + InOrder inOrder = inOrder(service); - + SessionHelper sessionHelper = mock(SessionHelper.class); UserREST userREST = new UserREST(null, null, null, service, null, null, null); - + userREST.register(req, sessionHelper); - + inOrder.verify(service).register("user", "password", "test@test.com", Arrays.asList(Role.USER)); inOrder.verify(service).login("user", "password"); } - - @Test public void - register_should_populate_http_session() { + + @Test + public void register_should_populate_http_session() { // Create a user User user = new User(); - + // Create UserService mock UserService service = mock(UserService.class); when(service.register(any(String.class), any(String.class), any(String.class), Matchers.anyListOf(Role.class))).thenReturn(user); when(service.login(any(String.class), any(String.class))).thenReturn(Optional.of(user)); - + RegistrationRequest req = new RegistrationRequest(); req.setName("user"); req.setPassword("password"); req.setEmail("test@test.com"); - + SessionHelper sessionHelper = mock(SessionHelper.class); UserREST userREST = new UserREST(null, null, null, service, null, null, null); - + userREST.register(req, sessionHelper); - + verify(sessionHelper).setLoggedInUser(user); } diff --git a/src/test/java/com/commafeed/frontend/session/SessionHelperTest.java b/src/test/java/com/commafeed/frontend/session/SessionHelperTest.java index 34cb19b8..45496151 100644 --- a/src/test/java/com/commafeed/frontend/session/SessionHelperTest.java +++ b/src/test/java/com/commafeed/frontend/session/SessionHelperTest.java @@ -4,6 +4,8 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.Optional; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; @@ -11,7 +13,6 @@ import org.junit.Assert; import org.junit.Test; import com.commafeed.backend.model.User; -import com.google.common.base.Optional; public class SessionHelperTest {