use of cz.metacentrum.perun.core.api.Sponsorship in project perun by CESNET.
the class ExpirationNotifSchedulerTest method testSponsorshipDoesntExpireInFuture.
@Test
public void testSponsorshipDoesntExpireInFuture() throws Exception {
System.out.println(CLASS_NAME + "testSponsorshipDoesntExpireInFuture");
LocalDate today = LocalDate.of(2020, 2, 2);
when(spyScheduler.getCurrentLocalDate()).thenReturn(today);
Member member = setUpMember();
User sponsor = perun.getUsersManagerBl().getUserByMember(session, setUpMember());
AuthzResolverBlImpl.setRole(session, sponsor, vo, Role.SPONSOR);
LocalDate nextYear = today.plusYears(1);
perun.getMembersManagerBl().setSponsorshipForMember(session, member, sponsor, nextYear);
ReflectionTestUtils.invokeMethod(spyScheduler, "expireSponsorships");
Sponsorship sponsorship = perun.getMembersManagerBl().getSponsorship(session, member, sponsor);
assertThat(sponsorship.isActive());
}
use of cz.metacentrum.perun.core.api.Sponsorship in project perun by CESNET.
the class MembersManagerEntryIntegrationTest method updateSponsorshipValidity.
@Test
public void updateSponsorshipValidity() throws Exception {
System.out.println(CLASS_NAME + "updateSponsorshipValidity");
Member member = setUpMember(createdVo);
User sponsor = perun.getUsersManagerBl().getUserByMember(sess, setUpSponsor(createdVo));
AuthzResolverBlImpl.setRole(sess, sponsor, createdVo, Role.SPONSOR);
membersManagerEntry.setSponsorshipForMember(sess, member, sponsor, null);
LocalDate validity = LocalDate.now().plusMonths(1);
membersManagerEntry.updateSponsorshipValidity(sess, member, sponsor, validity);
Sponsorship sponsorship = perun.getMembersManagerBl().getSponsorship(sess, member, sponsor);
assertThat(sponsorship.getValidityTo()).isEqualTo(validity);
}
use of cz.metacentrum.perun.core.api.Sponsorship in project perun by CESNET.
the class MembersManagerBlImpl method moveMembersSponsorships.
/**
* Moves sponsorships in VO from source user to target user - moves sponsorships
* where the source user is sponsor or where the source member is sponsored.
*
* @param sess
* @param vo VO to move sponsorships in
* @param sourceUser user to move sponsorships from
* @param targetUser user to move sponsorships to
* @param sourceMember member of the source user in the VO
* @param targetMember member of the target user in the VO
*/
private void moveMembersSponsorships(PerunSession sess, Vo vo, User sourceUser, User targetUser, Member sourceMember, Member targetMember) {
// move sponsorships where sourceUser is sponsor
List<Member> sponsoredMembers = this.getSponsoredMembers(sess, vo, sourceUser);
for (Member sponsoredMember : sponsoredMembers) {
try {
Sponsorship sponsorship = this.getSponsorship(sess, sponsoredMember, sourceUser);
// if target user isn't in role SPONSOR for the VO, assign the role to him
if (!getPerunBl().getVosManagerBl().isUserInRoleForVo(sess, targetUser, Role.SPONSOR, vo, true)) {
AuthzResolverBlImpl.setRole(sess, targetUser, vo, Role.SPONSOR);
}
// first add sponsorship to targetUser
this.sponsorMember(sess, sponsoredMember, targetUser, sponsorship.getValidityTo());
// then remove sponsorship from sourceUser
this.removeSponsor(sess, sponsoredMember, sourceUser);
} catch (SponsorshipDoesNotExistException | MemberNotSponsoredException e) {
throw new ConsistencyErrorException(e);
} catch (AlreadySponsorException e) {
log.warn("When moving sponsorships from sponsor {} to sponsor {}, the sponsor already sponsored " + "member {}. Exception: {}", sourceUser, targetUser, sponsoredMember, e);
} catch (UserNotInRoleException | AlreadyAdminException | RoleCannotBeManagedException e) {
throw new InternalErrorException(e);
}
}
// move sponsorships where sourceMember is sponsored
if (sourceMember.isSponsored()) {
List<User> sponsors = getPerunBl().getUsersManagerBl().getSponsors(sess, sourceMember);
try {
for (int i = 0; i < sponsors.size(); i++) {
User sponsor = sponsors.get(i);
Sponsorship sponsorship = this.getSponsorship(sess, sourceMember, sponsor);
// because the member needs to be marked as sponsored first
if (i == 0) {
this.setSponsorshipForMember(sess, targetMember, sponsor, sponsorship.getValidityTo());
} else {
this.sponsorMember(sess, targetMember, sponsor, sponsorship.getValidityTo());
}
}
} catch (SponsorshipDoesNotExistException e) {
throw new ConsistencyErrorException(e);
} catch (AlreadySponsoredMemberException | MemberNotSponsoredException | AlreadySponsorException | UserNotInRoleException e) {
throw new InternalErrorException(e);
}
}
}
use of cz.metacentrum.perun.core.api.Sponsorship in project perun by CESNET.
the class MembersManagerEntryIntegrationTest method getSponsorshipsExpiringInRangeDoesntReturnExpiringAfterRange.
@Test
public void getSponsorshipsExpiringInRangeDoesntReturnExpiringAfterRange() throws Exception {
System.out.println(CLASS_NAME + "getSponsorshipsExpiringInRangeDoesntReturnExpiringAfterRange");
Member member = setUpMember(createdVo);
User sponsor1 = perun.getUsersManagerBl().getUserByMember(sess, setUpSponsor(createdVo));
User sponsor2 = perun.getUsersManagerBl().getUserByMember(sess, setUpSponsor2(createdVo));
AuthzResolverBlImpl.setRole(sess, sponsor1, createdVo, Role.SPONSOR);
AuthzResolverBlImpl.setRole(sess, sponsor2, createdVo, Role.SPONSOR);
LocalDate today = LocalDate.of(2020, 2, 2);
LocalDate nextDay = today.plusDays(1);
LocalDate nextMonth = today.plusMonths(1);
membersManagerEntry.setSponsorshipForMember(sess, member, sponsor1, nextDay);
membersManagerEntry.sponsorMember(sess, member, sponsor2, nextMonth);
LocalDate nextWeek = today.plusDays(7);
List<Sponsorship> sponsorships = perun.getMembersManagerBl().getSponsorshipsExpiringInRange(sess, today, nextWeek);
assertThat(sponsorships).hasSize(1);
assertThat(sponsorships.get(0).getValidityTo()).isEqualTo(nextDay);
}
use of cz.metacentrum.perun.core.api.Sponsorship in project perun by CESNET.
the class MembersManagerEntryIntegrationTest method getSoonExpiringSponsorshipsReturnsMultipleSponsorships.
@Test
public void getSoonExpiringSponsorshipsReturnsMultipleSponsorships() throws Exception {
System.out.println(CLASS_NAME + "getSoonExpiringSponsorshipsReturnsMultipleSponsorships");
Member member = setUpMember(createdVo);
User sponsor1 = perun.getUsersManagerBl().getUserByMember(sess, setUpSponsor(createdVo));
User sponsor2 = perun.getUsersManagerBl().getUserByMember(sess, setUpSponsor2(createdVo));
AuthzResolverBlImpl.setRole(sess, sponsor1, createdVo, Role.SPONSOR);
AuthzResolverBlImpl.setRole(sess, sponsor2, createdVo, Role.SPONSOR);
LocalDate today = LocalDate.of(2020, 2, 2);
LocalDate nextDay = today.plusDays(1);
LocalDate nextMonth = today.plusMonths(1);
membersManagerEntry.setSponsorshipForMember(sess, member, sponsor1, nextDay);
membersManagerEntry.sponsorMember(sess, member, sponsor2, nextMonth);
LocalDate nextYear = today.plusYears(1);
List<Sponsorship> sponsorships = perun.getMembersManagerBl().getSponsorshipsExpiringInRange(sess, today, nextYear);
assertThat(sponsorships).hasSize(2);
}
Aggregations