import org.sonar.core.issue.db.IssueFilterDto;
import org.sonar.core.issue.db.IssueFilterFavouriteDao;
import org.sonar.core.issue.db.IssueFilterFavouriteDto;
+import org.sonar.core.user.AuthorizationDao;
import org.sonar.core.user.Permissions;
-import org.sonar.server.exceptions.ForbiddenException;
import org.sonar.server.user.UserSession;
import javax.annotation.CheckForNull;
+
import java.util.List;
import java.util.Map;
private final IssueFilterDao issueFilterDao;
private final IssueFilterFavouriteDao issueFilterFavouriteDao;
private final IssueFinder issueFinder;
+ private final AuthorizationDao authorizationDao;
private final IssueFilterSerializer issueFilterSerializer;
- public IssueFilterService(IssueFilterDao issueFilterDao, IssueFilterFavouriteDao issueFilterFavouriteDao, IssueFinder issueFinder,
+ public IssueFilterService(IssueFilterDao issueFilterDao, IssueFilterFavouriteDao issueFilterFavouriteDao, IssueFinder issueFinder, AuthorizationDao authorizationDao,
IssueFilterSerializer issueFilterSerializer) {
this.issueFilterDao = issueFilterDao;
this.issueFilterFavouriteDao = issueFilterFavouriteDao;
this.issueFinder = issueFinder;
+ this.authorizationDao = authorizationDao;
this.issueFilterSerializer = issueFilterSerializer;
}
public DefaultIssueFilter update(DefaultIssueFilter issueFilter, UserSession userSession) {
String user = getNotNullLogin(userSession);
IssueFilterDto issueFilterDto = findIssueFilterDto(issueFilter.id(), user);
- verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user, userSession);
-
- if (!issueFilterDto.getUserLogin().equals(issueFilter.user()) && !userSession.hasPermission(Permissions.SYSTEM_ADMIN)) {
- throw new ForbiddenException("User is not authorized to change the owner of this filter");
+ verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user);
+ if(!issueFilterDto.getUserLogin().equals(issueFilter.user())) {
+ verifyCurrentUserCanChangeFilterOwnership(user);
}
-
validateFilter(issueFilter, user);
issueFilterDao.update(IssueFilterDto.toIssueFilter(issueFilter));
public DefaultIssueFilter updateFilterQuery(Long issueFilterId, Map<String, Object> filterQuery, UserSession userSession) {
String user = getNotNullLogin(userSession);
IssueFilterDto issueFilterDto = findIssueFilterDto(issueFilterId, user);
- verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user, userSession);
+ verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user);
DefaultIssueFilter issueFilter = issueFilterDto.toIssueFilter();
issueFilter.setData(serializeFilterQuery(filterQuery));
public void delete(Long issueFilterId, UserSession userSession) {
String user = getNotNullLogin(userSession);
IssueFilterDto issueFilterDto = findIssueFilterDto(issueFilterId, user);
- verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user, userSession);
+ verifyCurrentUserCanModifyFilter(issueFilterDto.toIssueFilter(), user);
deleteFavouriteIssueFilters(issueFilterDto);
issueFilterDao.delete(issueFilterId);
}
String getNotNullLogin(UserSession userSession) {
- userSession.checkLoggedIn();
- return userSession.login();
+ String user = userSession.login();
+ if (!userSession.isLoggedIn() && user != null) {
+ throw new IllegalStateException("User is not logged in");
+ }
+ return user;
}
void verifyCurrentUserCanReadFilter(DefaultIssueFilter issueFilter, String user) {
if (!issueFilter.user().equals(user) && !issueFilter.shared()) {
- throw new ForbiddenException("User is not authorized to read this filter");
+ // TODO throw unauthorized
+ throw new IllegalStateException("User is not authorized to read this filter");
}
}
- private void verifyCurrentUserCanModifyFilter(DefaultIssueFilter issueFilter, String user, UserSession userSession) {
- if (!issueFilter.user().equals(user) && !userSession.hasPermission(Permissions.SYSTEM_ADMIN)) {
- throw new ForbiddenException("User is not authorized to modify this filter");
+ private void verifyCurrentUserCanModifyFilter(DefaultIssueFilter issueFilter, String user) {
+ if (!issueFilter.user().equals(user) && !isAdmin(user)) {
+ // TODO throw unauthorized
+ throw new IllegalStateException("User is not authorized to modify this filter");
+ }
+ }
+
+ private void verifyCurrentUserCanChangeFilterOwnership(String user) {
+ if(!isAdmin(user)) {
+ // TODO throw unauthorized
+ throw new IllegalStateException("User is not authorized to change the owner of this filter");
}
}
}));
}
+ private boolean isAdmin(String user) {
+ return authorizationDao.selectGlobalPermissions(user).contains(Permissions.SYSTEM_ADMIN);
+ }
+
private IssueFilterResult createIssueFilterResult(IssueQueryResult issueQueryResult, IssueQuery issueQuery) {
return new IssueFilterResult(issueQueryResult, issueQuery);
}
import org.sonar.core.issue.db.IssueFilterDto;
import org.sonar.core.issue.db.IssueFilterFavouriteDao;
import org.sonar.core.issue.db.IssueFilterFavouriteDto;
-import org.sonar.server.exceptions.ForbiddenException;
-import org.sonar.server.exceptions.UnauthorizedException;
+import org.sonar.core.user.AuthorizationDao;
import org.sonar.server.user.MockUserSession;
import org.sonar.server.user.UserSession;
public class IssueFilterServiceTest {
- IssueFilterService service;
- IssueFilterDao issueFilterDao;
- IssueFilterFavouriteDao issueFilterFavouriteDao;
- IssueFinder issueFinder;
- IssueFilterSerializer issueFilterSerializer;
+ private IssueFilterService service;
+
+ private IssueFilterDao issueFilterDao;
+ private IssueFilterFavouriteDao issueFilterFavouriteDao;
+ private IssueFinder issueFinder;
+ private AuthorizationDao authorizationDao;
+ private IssueFilterSerializer issueFilterSerializer;
+
+ private UserSession userSession;
@Before
public void before() {
+ userSession = mock(UserSession.class);
+ when(userSession.isLoggedIn()).thenReturn(true);
+ when(userSession.userId()).thenReturn(10);
+ when(userSession.login()).thenReturn("john");
+
issueFilterDao = mock(IssueFilterDao.class);
issueFilterFavouriteDao = mock(IssueFilterFavouriteDao.class);
issueFinder = mock(IssueFinder.class);
+ authorizationDao = mock(AuthorizationDao.class);
issueFilterSerializer = mock(IssueFilterSerializer.class);
- service = new IssueFilterService(issueFilterDao, issueFilterFavouriteDao, issueFinder, issueFilterSerializer);
+ service = new IssueFilterService(issueFilterDao, issueFilterFavouriteDao, issueFinder, authorizationDao, issueFilterSerializer);
}
@Test
IssueFilterDto issueFilterDto = new IssueFilterDto().setId(1L).setName("My Issue").setUserLogin("john");
when(issueFilterDao.selectById(1L)).thenReturn(issueFilterDto);
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter issueFilter = service.find(1L, userSession);
assertThat(issueFilter).isNotNull();
assertThat(issueFilter.id()).isEqualTo(1L);
IssueFilterDto issueFilterDto = new IssueFilterDto().setId(1L).setName("My Issue").setUserLogin("arthur").setShared(true);
when(issueFilterDao.selectById(1L)).thenReturn(issueFilterDto);
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter issueFilter = service.find(1L, userSession);
assertThat(issueFilter).isNotNull();
assertThat(issueFilter.id()).isEqualTo(1L);
public void should_not_find_by_id_on_not_existing_issue() {
when(issueFilterDao.selectById(1L)).thenReturn(null);
try {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.find(1L, userSession);
fail();
} catch (Exception e) {
@Test
public void should_not_find_by_id_if_not_logged() {
+ when(userSession.isLoggedIn()).thenReturn(false);
try {
- service.find(1L, UserSession.ANONYMOUS);
+ service.find(1L, userSession);
fail();
- } catch (UnauthorizedException e) {
- verifyZeroInteractions(issueFilterDao);
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not logged in");
}
+ verifyZeroInteractions(issueFilterDao);
}
@Test
when(issueFilterDao.selectById(1L)).thenReturn(issueFilterDto);
try {
// John is not authorized to see eric filters
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.find(1L, userSession);
fail();
- } catch (ForbiddenException e) {
- assertThat(e).hasMessage("User is not authorized to read this filter");
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not authorized to read this filter");
}
}
public void should_find_by_user() {
when(issueFilterDao.selectByUser("john")).thenReturn(newArrayList(new IssueFilterDto().setId(1L).setName("My Issue").setUserLogin("john")));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
List<DefaultIssueFilter> issueFilter = service.findByUser(userSession);
assertThat(issueFilter).hasSize(1);
assertThat(issueFilter.get(0).id()).isEqualTo(1L);
}
@Test
- public void should_not_find_by_user_if_not_logged_in() {
+ public void should_not_find_by_user_if_not_logged() {
+ when(userSession.isLoggedIn()).thenReturn(false);
try {
- service.findByUser(UserSession.ANONYMOUS);
+ service.findByUser(userSession);
fail();
- } catch (UnauthorizedException e) {
- // OK
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not logged in");
}
}
@Test
public void should_save() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("My Issue");
DefaultIssueFilter result = service.save(issueFilter, userSession);
assertThat(result.name()).isEqualTo("My Issue");
@Test
public void should_add_favorite_on_save() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("My Issue");
service.save(issueFilter, userSession);
}
@Test
- public void should_not_save_if_not_logged_in() {
+ public void should_not_save_if_not_logged() {
+ when(userSession.isLoggedIn()).thenReturn(false);
try {
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("My Issue");
- service.save(issueFilter, UserSession.ANONYMOUS);
+ service.save(issueFilter, userSession);
fail();
- } catch (UnauthorizedException e) {
- verify(issueFilterDao, never()).insert(any(IssueFilterDto.class));
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not logged in");
}
+ verify(issueFilterDao, never()).insert(any(IssueFilterDto.class));
}
@Test
public void should_not_save_if_name_already_used() {
when(issueFilterDao.selectByNameAndUser(eq("My Issue"), eq("john"), eq((Long) null))).thenReturn(new IssueFilterDto());
try {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("My Issue");
service.save(issueFilter, userSession);
fail();
public void should_not_save_shared_filter_if_name_already_used_by_shared_filter() {
when(issueFilterDao.selectByNameAndUser(eq("My Issue"), eq("john"), eq((Long) null))).thenReturn(null);
when(issueFilterDao.selectSharedWithoutUserFiltersByName(eq("My Issue"), eq("john"), eq((Long) null))).thenReturn(new IssueFilterDto());
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
try {
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("My Issue").setShared(true);
service.save(issueFilter, userSession);
public void should_update() {
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Old Filter").setUserLogin("john"));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter result = service.update(new DefaultIssueFilter().setId(1L).setName("My New Filter").setUser("john"), userSession);
assertThat(result.name()).isEqualTo("My New Filter");
@Test
public void should_update_shared_filter_if_admin() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john").setPermissions(UserRole.ADMIN);
+ when(authorizationDao.selectGlobalPermissions("john")).thenReturn(newArrayList(UserRole.ADMIN));
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Old Filter").setUserLogin("arthur").setShared(true));
DefaultIssueFilter result = service.update(new DefaultIssueFilter().setId(1L).setName("My New Filter"), userSession);
when(issueFilterDao.selectById(1L)).thenReturn(null);
try {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.update(new DefaultIssueFilter().setId(1L).setName("My New Filter"), userSession);
fail();
} catch (Exception e) {
@Test
public void should_not_update_if_shared_and_not_admin() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john").setPermissions(UserRole.USER);
+ when(authorizationDao.selectGlobalPermissions("john")).thenReturn(newArrayList(UserRole.USER));
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Old Filter").setUserLogin("arthur").setShared(true));
try {
service.update(new DefaultIssueFilter().setId(1L).setName("My New Filter"), userSession);
fail();
- } catch (ForbiddenException e) {
- assertThat(e).hasMessage("User is not authorized to modify this filter");
- verify(issueFilterDao, never()).update(any(IssueFilterDto.class));
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not authorized to modify this filter");
}
+ verify(issueFilterDao, never()).update(any(IssueFilterDto.class));
}
@Test
public void should_not_update_if_name_already_used() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Old Filter").setUserLogin("john"));
when(issueFilterDao.selectByNameAndUser("My Issue", "john", 1L)).thenReturn(new IssueFilterDto());
Map<String, Object> data = newHashMap();
data.put("componentRoots", "struts");
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter result = service.updateFilterQuery(1L, data, userSession);
assertThat(result.data()).isEqualTo("componentRoots=struts");
verify(issueFilterDao).update(any(IssueFilterDto.class));
}
-
+
@Test
public void should_change_shared_filter_ownership_when_admin() throws Exception {
+ String currentUser = "dave.loper";
IssueFilterDto sharedFilter = new IssueFilterDto().setId(1L).setName("My filter").setUserLogin("former.owner").setShared(true);
IssueFilterDto expectedDto = new IssueFilterDto().setName("My filter").setUserLogin("new.owner").setShared(true);
- MockUserSession admin = MockUserSession.set().setLogin("admin").setPermissions(UserRole.ADMIN);
+ when(authorizationDao.selectGlobalPermissions(currentUser)).thenReturn(newArrayList(UserRole.ADMIN));
when(issueFilterDao.selectById(1L)).thenReturn(sharedFilter);
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setId(1L).setName("My filter").setShared(true).setUser("new.owner");
- service.update(issueFilter, admin);
+ service.update(issueFilter, MockUserSession.create().setUserId(1).setLogin(currentUser));
verify(issueFilterDao).update(argThat(Matches.filter(expectedDto)));
}
String currentUser = "dave.loper";
IssueFilterDto sharedFilter = new IssueFilterDto().setId(1L).setName("My filter").setUserLogin(currentUser).setShared(true);
- MockUserSession.set().setPermissions(UserRole.USER);
+ when(authorizationDao.selectGlobalPermissions(currentUser)).thenReturn(newArrayList(UserRole.USER));
when(issueFilterDao.selectById(1L)).thenReturn(sharedFilter);
try {
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setId(1L).setName("My filter").setShared(true).setUser("new.owner");
service.update(issueFilter, MockUserSession.create().setUserId(1).setLogin(currentUser));
fail();
- } catch (ForbiddenException e) {
- assertThat(e).hasMessage("User is not authorized to change the owner of this filter");
- verify(issueFilterDao, never()).update(any(IssueFilterDto.class));
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not authorized to change the owner of this filter");
}
+ verify(issueFilterDao, never()).update(any(IssueFilterDto.class));
}
@Test
public void should_delete() {
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("john"));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.delete(1L, userSession);
verify(issueFilterDao).delete(1L);
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("john"));
when(issueFilterFavouriteDao.selectByUserAndIssueFilterId("john", 1L)).thenReturn(new IssueFilterFavouriteDto().setId(10L).setUserLogin("john").setIssueFilterId(1L));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.delete(1L, userSession);
verify(issueFilterDao).delete(1L);
when(issueFilterDao.selectById(1L)).thenReturn(null);
try {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.delete(1L, userSession);
fail();
} catch (Exception e) {
@Test
public void should_delete_shared_filter_if_user_is_admin() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john").setPermissions(UserRole.ADMIN);
+ when(authorizationDao.selectGlobalPermissions("john")).thenReturn(newArrayList(UserRole.ADMIN));
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("arthur").setShared(true));
service.delete(1L, userSession);
@Test
public void should_not_delete_not_shared_filter_if_user_is_admin() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john").setPermissions(UserRole.ADMIN);
+ when(authorizationDao.selectGlobalPermissions("john")).thenReturn(newArrayList(UserRole.ADMIN));
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("arthur").setShared(false));
try {
service.delete(1L, userSession);
fail();
- } catch (ForbiddenException e) {
- assertThat(e).hasMessage("User is not authorized to read this filter");
- verify(issueFilterDao, never()).delete(anyLong());
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not authorized to read this filter");
}
+ verify(issueFilterDao, never()).delete(anyLong());
}
@Test
public void should_not_delete_shared_filter_if_not_admin() {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john").setPermissions(UserRole.USER);
+ when(authorizationDao.selectGlobalPermissions("john")).thenReturn(newArrayList(UserRole.USER));
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("arthur").setShared(true));
try {
service.delete(1L, userSession);
fail();
- } catch (ForbiddenException e) {
- assertThat(e).hasMessage("User is not authorized to modify this filter");
- verify(issueFilterDao, never()).delete(anyLong());
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not authorized to modify this filter");
}
+ verify(issueFilterDao, never()).delete(anyLong());
}
@Test
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("john").setData("componentRoots=struts"));
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("Copy Of My Issue");
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter result = service.copy(1L, issueFilter, userSession);
assertThat(result.name()).isEqualTo("Copy Of My Issue");
assertThat(result.user()).isEqualTo("john");
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("arthur").setShared(true));
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("Copy Of My Issue");
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
DefaultIssueFilter result = service.copy(1L, issueFilter, userSession);
assertThat(result.name()).isEqualTo("Copy Of My Issue");
assertThat(result.user()).isEqualTo("john");
public void should_add_favorite_on_copy() {
when(issueFilterDao.selectById(1L)).thenReturn(new IssueFilterDto().setId(1L).setName("My Issues").setUserLogin("john").setData("componentRoots=struts"));
DefaultIssueFilter issueFilter = new DefaultIssueFilter().setName("Copy Of My Issue");
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.copy(1L, issueFilter, userSession);
verify(issueFilterDao).insert(any(IssueFilterDto.class));
public void should_find_shared_issue_filter() {
when(issueFilterDao.selectSharedWithoutUserFilters("john")).thenReturn(newArrayList(new IssueFilterDto().setId(1L).setName("My Issue").setUserLogin("john").setShared(true)));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
List<DefaultIssueFilter> results = service.findSharedFilters(userSession);
assertThat(results).hasSize(1);
}
public void should_find_favourite_issue_filter() {
when(issueFilterDao.selectByUserWithOnlyFavoriteFilters("john")).thenReturn(newArrayList(new IssueFilterDto().setId(1L).setName("My Issue").setUserLogin("john")));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
List<DefaultIssueFilter> results = service.findFavoriteFilters(userSession);
assertThat(results).hasSize(1);
}
@Test
public void should_not_find_favourite_issue_filter_if_not_logged() {
+ when(userSession.isLoggedIn()).thenReturn(false);
+
try {
- service.findFavoriteFilters(UserSession.ANONYMOUS);
+ service.findFavoriteFilters(userSession);
fail();
- } catch (UnauthorizedException e) {
- // OK
+ } catch (Exception e) {
+ assertThat(e).isInstanceOf(IllegalStateException.class).hasMessage("User is not logged in");
}
}
when(issueFilterFavouriteDao.selectByUserAndIssueFilterId("john", 1L)).thenReturn(null);
ArgumentCaptor<IssueFilterFavouriteDto> issueFilterFavouriteDtoCaptor = ArgumentCaptor.forClass(IssueFilterFavouriteDto.class);
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.toggleFavouriteIssueFilter(1L, userSession);
verify(issueFilterFavouriteDao).insert(issueFilterFavouriteDtoCaptor.capture());
when(issueFilterFavouriteDao.selectByUserAndIssueFilterId("john", 1L)).thenReturn(null);
ArgumentCaptor<IssueFilterFavouriteDto> issueFilterFavouriteDtoCaptor = ArgumentCaptor.forClass(IssueFilterFavouriteDto.class);
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.toggleFavouriteIssueFilter(1L, userSession);
verify(issueFilterFavouriteDao).insert(issueFilterFavouriteDtoCaptor.capture());
// The filter is in the favorite list --> remove favorite
when(issueFilterFavouriteDao.selectByUserAndIssueFilterId("john", 1L)).thenReturn(new IssueFilterFavouriteDto().setId(10L).setUserLogin("john").setIssueFilterId(1L));
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.toggleFavouriteIssueFilter(1L, userSession);
verify(issueFilterFavouriteDao).delete(10L);
}
public void should_not_toggle_favourite_filter_if_filter_not_found() {
when(issueFilterDao.selectById(1L)).thenReturn(null);
try {
- UserSession userSession = MockUserSession.create().setUserId(1).setLogin("john");
service.toggleFavouriteIssueFilter(1L, userSession);
fail();
} catch (Exception e) {