Skip to content

Instantly share code, notes, and snippets.

@balteo
Created November 7, 2014 13:44
Show Gist options
  • Save balteo/e8c2ea96db22d3f9c88e to your computer and use it in GitHub Desktop.
Save balteo/e8c2ea96db22d3f9c88e to your computer and use it in GitHub Desktop.
Problematic test case
package com.bignibou.it.service.advertisement;
import static org.mockito.Mockito.when;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
import org.springframework.security.test.context.support.WithUserDetails;
import com.bignibou.domain.Address;
import com.bignibou.domain.Advertisement;
import com.bignibou.domain.Member;
import com.bignibou.domain.Role;
import com.bignibou.it.AbstractServicePlusRepositoryIntegrationTest;
import com.bignibou.it.helper.factory.AdvertisementFactory;
import com.bignibou.it.helper.factory.MemberFactory;
import com.bignibou.service.advertisement.AdvertisementService;
import com.bignibou.service.geolocation.GeolocationService;
public class AdvertisementServiceSecurityTest extends AbstractServicePlusRepositoryIntegrationTest {
private static final String IMPERSONATOR_EMAIL = "joe.hacker@gmail.com";
private final static String OWNER_OF_ADVERTISEMENT_EMAIL = "john.nice@gmail.com";
@Autowired
AdvertisementService advertisementService;
@Autowired
GeolocationService geolocationServiceMock;
@Autowired
private MemberFactory memberFactory;
@Autowired
private AdvertisementFactory advertisementFactory;
private Advertisement advertisement;
private Member impersonator;
@Before
public void setUp() {
advertisement = advertisementFactory.createAdvertisement(OWNER_OF_ADVERTISEMENT_EMAIL);
impersonator = memberFactory.createMember(IMPERSONATOR_EMAIL, Role.ROLE_BASIC_CHILDCAREWORKER);
when(geolocationServiceMock.retrieveAddressFromReference("valid-reference")).thenReturn(new Address());
}
@After
public void tearDown() {
advertisementFactory.deleteAdvertisement(advertisement);
memberFactory.deleteMember(impersonator);
}
@Test(expected = AuthenticationCredentialsNotFoundException.class)
public void deleteAdvertisementByIdWithoutAuthenticatedUser() {
advertisementService.deleteAdvertisement(advertisement.getId());
}
@Test(expected = AccessDeniedException.class)
@WithUserDetails(IMPERSONATOR_EMAIL)
public void deleteAdvertisementByIdWithInvalidMember() {
advertisementService.deleteAdvertisement(advertisement.getId());
}
@Test
@WithUserDetails(OWNER_OF_ADVERTISEMENT_EMAIL)
public void deleteAdvertisementByIdWithValidMember() {
advertisementService.deleteAdvertisement(advertisement.getId());
}
@Test
@WithUserDetails(OWNER_OF_ADVERTISEMENT_EMAIL)
public void shouldAllowModifyAdvertisement() {
advertisementService.modifyAdvertisement(advertisement.getMember(), advertisement, "valid-address-reference");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment