use of org.haiku.haikudepotserver.dataobjects.User in project haikudepotserver by haiku.
the class UserRatingSpreadsheetJobRunner method run.
@Override
public void run(JobService jobService, UserRatingSpreadsheetJobSpecification specification) throws IOException {
Preconditions.checkArgument(null != jobService);
Preconditions.checkArgument(null != specification);
final ObjectContext context = serverRuntime.newContext();
// this will register the outbound data against the job.
JobDataWithByteSink jobDataWithByteSink = jobService.storeGeneratedData(specification.getGuid(), "download", MediaType.CSV_UTF_8.toString());
try (OutputStream outputStream = jobDataWithByteSink.getByteSink().openBufferedStream();
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
CSVWriter writer = new CSVWriter(outputStreamWriter, ',')) {
Optional<Pkg> paramPkgOptional = Optional.empty();
Optional<User> paramUserOptional = Optional.empty();
Optional<Repository> paramRepositoryOptional = Optional.empty();
if (!Strings.isNullOrEmpty(specification.getRepositoryCode())) {
paramRepositoryOptional = Repository.tryGetByCode(context, specification.getRepositoryCode());
if (!paramRepositoryOptional.isPresent()) {
throw new IllegalStateException("unable to find the repository; " + specification.getRepositoryCode());
}
}
if (!Strings.isNullOrEmpty(specification.getUserNickname())) {
paramUserOptional = User.tryGetByNickname(context, specification.getUserNickname());
if (!paramUserOptional.isPresent()) {
throw new IllegalStateException("unable to find the user; " + specification.getUserNickname());
}
}
if (!Strings.isNullOrEmpty(specification.getPkgName())) {
paramPkgOptional = Pkg.tryGetByName(context, specification.getPkgName());
if (!paramPkgOptional.isPresent()) {
throw new IllegalStateException("unable to find the package; " + specification.getPkgName());
}
}
writer.writeNext(new String[] { "pkg-name", "repository-code", "architecture-code", "version-coordinates", "user-nickname", "create-timestamp", "modify-timestamp", "rating", "stability-code", "natural-language-code", "comment", "code" });
// stream out the packages.
long startMs = System.currentTimeMillis();
LOGGER.info("will user rating spreadsheet report");
final DateTimeFormatter dateTimeFormatter = DateTimeHelper.createStandardDateTimeFormat();
UserRatingSearchSpecification spec = new UserRatingSearchSpecification();
spec.setPkg(paramPkgOptional.orElse(null));
spec.setUser(paramUserOptional.orElse(null));
spec.setRepository(paramRepositoryOptional.orElse(null));
// TODO; provide a prefetch tree into the user, pkgversion.
int count = userRatingService.each(context, spec, userRating -> {
writer.writeNext(new String[] { userRating.getPkgVersion().getPkg().getName(), userRating.getPkgVersion().getRepositorySource().getRepository().getCode(), userRating.getPkgVersion().getArchitecture().getCode(), userRating.getPkgVersion().toVersionCoordinates().toString(), userRating.getUser().getNickname(), dateTimeFormatter.format(Instant.ofEpochMilli(userRating.getCreateTimestamp().getTime())), dateTimeFormatter.format(Instant.ofEpochMilli(userRating.getModifyTimestamp().getTime())), null != userRating.getRating() ? userRating.getRating().toString() : "", null != userRating.getUserRatingStability() ? userRating.getUserRatingStability().getCode() : "", userRating.getNaturalLanguage().getCode(), userRating.getComment(), userRating.getCode() });
return true;
});
LOGGER.info("did produce user rating spreadsheet report for {} user ratings in {}ms", count, System.currentTimeMillis() - startMs);
}
}
use of org.haiku.haikudepotserver.dataobjects.User in project haikudepotserver by haiku.
the class UserApiIT method testGetUser_foundWithUserUsageConditionsAgreement.
@Test
public void testGetUser_foundWithUserUsageConditionsAgreement() {
ObjectContext context = serverRuntime.newContext();
User user = integrationTestSupportService.createBasicUser(context, "testuser", "yUe4o2Nwe009");
integrationTestSupportService.agreeToUserUsageConditions(context, user);
setAuthenticatedUser("testuser");
// ------------------------------------
GetUserResult result = userApi.getUser(new GetUserRequest("testuser"));
// ------------------------------------
// just check the few things that come with the additional user usage agreement
Assertions.assertThat(result.userUsageConditionsAgreement.timestampAgreed).isNotNull();
Assertions.assertThat(result.userUsageConditionsAgreement.userUsageConditionsCode).isEqualTo("UUC2021V01");
}
use of org.haiku.haikudepotserver.dataobjects.User in project haikudepotserver by haiku.
the class UserApiIT method testInitiatePasswordReset.
/**
* <p>This test will check the initiation of the password reset procedure.</p>
*/
@Test
public void testInitiatePasswordReset() {
createPasswordResetTestUser();
Captcha captcha = captchaService.generate();
InitiatePasswordResetRequest request = new InitiatePasswordResetRequest();
request.captchaToken = captcha.getToken();
request.captchaResponse = captcha.getResponse();
request.email = "integration-test-recipient@haiku-os.org";
// ------------------------------------
userApi.initiatePasswordReset(request);
// ------------------------------------
{
ObjectContext context = serverRuntime.newContext();
User user = User.tryGetByNickname(context, "testuser").get();
// check for the presence of a token.
List<UserPasswordResetToken> tokens = UserPasswordResetToken.findByUser(context, user);
Assertions.assertThat(tokens.size()).isEqualTo(1);
UserPasswordResetToken token = tokens.get(0);
// check that an email did actually get sent.
List<SimpleMailMessage> messages = mailSender.getSentMessages();
Assertions.assertThat(messages.size()).isEqualTo(1);
SimpleMailMessage message = messages.get(0);
Assertions.assertThat(message.getTo()).isEqualTo(new String[] { "integration-test-recipient@haiku-os.org" });
Assertions.assertThat(message.getFrom()).isEqualTo("integration-test-sender@haiku-os.org");
Assertions.assertThat(message.getText()).contains(token.getCode());
}
}
use of org.haiku.haikudepotserver.dataobjects.User in project haikudepotserver by haiku.
the class UserApiIT method createPasswordResetTestUser.
private void createPasswordResetTestUser() {
ObjectContext context = serverRuntime.newContext();
// language is english
User user = integrationTestSupportService.createBasicUser(context, "testuser", "yUe4o2Nwe009");
user.setEmail("integration-test-recipient@haiku-os.org");
context.commitChanges();
}
use of org.haiku.haikudepotserver.dataobjects.User in project haikudepotserver by haiku.
the class UserApiIT method testAgreeUserUsageConditions.
public void testAgreeUserUsageConditions() {
ObjectContext context = serverRuntime.newContext();
integrationTestSupportService.createBasicUser(context, "testuser", "yUe4o2Nwe009");
setAuthenticatedUser("testuser");
AgreeUserUsageConditionsRequest request = new AgreeUserUsageConditionsRequest();
request.userUsageConditionsCode = "UUC2019V01";
request.nickname = "testuser";
// ------------------------------------
AgreeUserUsageConditionsResult result = userApi.agreeUserUsageConditions(request);
// ------------------------------------
Assertions.assertThat(result).isNotNull();
{
User userAfter = User.getByNickname(context, "testuser");
Assertions.assertThat(userAfter.tryGetUserUsageConditionsAgreement().get().getUserUsageConditions().getCode()).isEqualTo("UUC2019V01");
}
}
Aggregations