/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.api.t2.server.delegator; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.when; import java.util.ArrayList; import javax.ws.rs.core.Response; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.orcid.api.notifications.server.delegator.impl.NotificationsApiServiceDelegatorImpl; import org.orcid.core.exception.OrcidNotificationNotFoundException; import org.orcid.core.locale.LocaleManager; import org.orcid.core.manager.NotificationManager; import org.orcid.core.manager.NotificationValidationManager; import org.orcid.core.manager.ProfileEntityCacheManager; import org.orcid.core.manager.ProfileEntityManager; import org.orcid.core.manager.SourceManager; import org.orcid.core.utils.SecurityContextTestUtils; import org.orcid.jaxb.model.message.ScopePathType; import org.orcid.jaxb.model.notification.permission_v2.NotificationPermissions; import org.orcid.persistence.dao.ProfileDao; import org.springframework.test.util.ReflectionTestUtils; public class NotificationsApiServiceDelegatorTest { @Mock private NotificationManager notificationManager; @Mock private ProfileEntityManager profileEntityManager; @Mock private NotificationValidationManager notificationValidationManager; @Mock private SourceManager sourceManager; @Mock private LocaleManager localeManager; @Mock private ProfileEntityCacheManager profileEntityCacheManager; @Mock private ProfileDao profileDao; @InjectMocks private NotificationsApiServiceDelegatorImpl notificationsApiServiceDelegator; @Before public void setup() { MockitoAnnotations.initMocks(this); ReflectionTestUtils.setField(notificationsApiServiceDelegator, "baseUrl", "https://orcid.org/"); } @Test(expected = OrcidNotificationNotFoundException.class) public void testNotFoundError() { SecurityContextTestUtils.setUpSecurityContextForClientOnly("APP-5555-5555-5555-5555", ScopePathType.PREMIUM_NOTIFICATION); notificationsApiServiceDelegator.findPermissionNotification("1234-5678-1234-5678", 1L); } @Test public void testFindPermissionNotifications() { String clientId = "APP-5555555555555555"; String orcidId = "some-orcid"; NotificationPermissions notifications = new NotificationPermissions(); notifications.setNotifications(new ArrayList<>()); when(notificationManager.findPermissionsByOrcidAndClient(eq(orcidId), eq(clientId), anyInt(), anyInt())).thenReturn(notifications); SecurityContextTestUtils.setUpSecurityContext(orcidId, clientId, ScopePathType.PERSON_UPDATE, ScopePathType.PERSON_READ_LIMITED); Response response = notificationsApiServiceDelegator.findPermissionNotifications("some-orcid"); NotificationPermissions retrieved = (NotificationPermissions) response.getEntity(); assertEquals(notifications.getNotifications().size(), retrieved.getNotifications().size()); } }