Search in sources :

Example 96 with App

use of org.sagebionetworks.bridge.models.apps.App in project BridgeServer2 by Sage-Bionetworks.

the class HealthDataEx3ControllerTest method getRecord.

@Test
public void getRecord() {
    // Set up mocks.
    App app = App.create();
    app.setIdentifier(TestConstants.TEST_APP_ID);
    when(mockAppService.getApp(TestConstants.TEST_APP_ID)).thenReturn(app);
    HealthDataRecordEx3 record = HealthDataRecordEx3.create();
    record.setAppId(TestConstants.TEST_APP_ID);
    record.setId(RECORD_ID);
    when(mockHealthDataEx3Service.getRecord(RECORD_ID)).thenReturn(Optional.of(record));
    // Execute and verify.
    HealthDataRecordEx3 result = controller.getRecord(TestConstants.TEST_APP_ID, RECORD_ID);
    assertSame(result, record);
    verify(mockHealthDataEx3Service).getRecord(RECORD_ID);
    verify(mockMetrics).setRecordId(RECORD_ID);
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) HealthDataRecordEx3(org.sagebionetworks.bridge.models.healthdata.HealthDataRecordEx3) Test(org.testng.annotations.Test)

Example 97 with App

use of org.sagebionetworks.bridge.models.apps.App in project BridgeServer2 by Sage-Bionetworks.

the class HealthDataEx3ControllerTest method getRecord_RecordInWrongApp.

@Test(expectedExceptions = EntityNotFoundException.class)
public void getRecord_RecordInWrongApp() {
    // Set up mocks.
    App app = App.create();
    app.setIdentifier(TestConstants.TEST_APP_ID);
    when(mockAppService.getApp(TestConstants.TEST_APP_ID)).thenReturn(app);
    HealthDataRecordEx3 record = HealthDataRecordEx3.create();
    record.setAppId("wrong-app");
    record.setId(RECORD_ID);
    when(mockHealthDataEx3Service.getRecord(RECORD_ID)).thenReturn(Optional.of(record));
    // Execute.
    controller.getRecord(TestConstants.TEST_APP_ID, RECORD_ID);
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) HealthDataRecordEx3(org.sagebionetworks.bridge.models.healthdata.HealthDataRecordEx3) Test(org.testng.annotations.Test)

Example 98 with App

use of org.sagebionetworks.bridge.models.apps.App in project BridgeServer2 by Sage-Bionetworks.

the class HealthDataEx3ControllerTest method createOrUpdateRecord.

@Test
public void createOrUpdateRecord() throws Exception {
    // Set up mocks.
    App app = App.create();
    app.setIdentifier(TestConstants.TEST_APP_ID);
    when(mockAppService.getApp(TestConstants.TEST_APP_ID)).thenReturn(app);
    HealthDataRecordEx3 record = HealthDataRecordEx3.create();
    record.setId(RECORD_ID);
    mockRequestBody(mockRequest, record);
    when(mockHealthDataEx3Service.createOrUpdateRecord(any())).thenAnswer(invocation -> invocation.getArgument(0));
    // Execute and verify.
    HealthDataRecordEx3 result = controller.createOrUpdateRecord(TestConstants.TEST_APP_ID);
    assertEquals(result.getId(), RECORD_ID);
    assertEquals(result.getAppId(), TestConstants.TEST_APP_ID);
    verify(mockHealthDataEx3Service).createOrUpdateRecord(same(result));
    verify(mockMetrics).setRecordId(RECORD_ID);
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) HealthDataRecordEx3(org.sagebionetworks.bridge.models.healthdata.HealthDataRecordEx3) Test(org.testng.annotations.Test)

Example 99 with App

use of org.sagebionetworks.bridge.models.apps.App in project BridgeServer2 by Sage-Bionetworks.

the class IntentService method submitIntentToParticipate.

public void submitIntentToParticipate(IntentToParticipate intent) {
    Validate.entityThrowingException(IntentToParticipateValidator.INSTANCE, intent);
    // If the account exists, do nothing.
    AccountId accountId = null;
    if (intent.getPhone() != null) {
        accountId = AccountId.forPhone(intent.getAppId(), intent.getPhone());
    } else {
        accountId = AccountId.forEmail(intent.getAppId(), intent.getEmail());
    }
    Account account = accountService.getAccount(accountId).orElse(null);
    if (account != null) {
        return;
    }
    // validate app exists
    App app = appService.getApp(intent.getAppId());
    // validate subpopulation exists
    SubpopulationGuid guid = SubpopulationGuid.create(intent.getSubpopGuid());
    subpopService.getSubpopulation(app.getIdentifier(), guid);
    // validate it has not yet been submitted
    // the validator has ensured that phone or email, but not both, have been provided;
    CacheKey cacheKey = (intent.getPhone() == null) ? CacheKey.itp(guid, app.getIdentifier(), intent.getEmail()) : CacheKey.itp(guid, app.getIdentifier(), intent.getPhone());
    if (cacheProvider.getObject(cacheKey, IntentToParticipate.class) == null) {
        cacheProvider.setObject(cacheKey, intent, EXPIRATION_IN_SECONDS);
        // sent immediately after consenting.
        if (!app.getInstallLinks().isEmpty()) {
            participantService.sendInstallLinkMessage(app, TRANSACTIONAL, null, intent.getEmail(), intent.getPhone(), intent.getOsName());
        }
    }
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) Account(org.sagebionetworks.bridge.models.accounts.Account) AccountId(org.sagebionetworks.bridge.models.accounts.AccountId) SubpopulationGuid(org.sagebionetworks.bridge.models.subpopulations.SubpopulationGuid) IntentToParticipate(org.sagebionetworks.bridge.models.itp.IntentToParticipate) CacheKey(org.sagebionetworks.bridge.cache.CacheKey)

Example 100 with App

use of org.sagebionetworks.bridge.models.apps.App in project BridgeServer2 by Sage-Bionetworks.

the class ParticipantVersionService method createParticipantVersionFromAccount.

/**
 * Creates a participant version from an account.
 */
public void createParticipantVersionFromAccount(Account account) {
    String appId = account.getAppId();
    App app = appService.getApp(appId);
    if (!BridgeUtils.isExporter3Configured(app)) {
        // If Exporter 3.0 isn't enabled, there's no point in creating a Participant Version.
        return;
    }
    if (!account.getRoles().isEmpty()) {
        // Accounts that have roles aren't research participants. Don't export them to Synapse.
        return;
    }
    if (account.getSharingScope() == SharingScope.NO_SHARING) {
        // no_sharing means we don't export this to Synapse, which means we can skip making a Participant Version.
        return;
    }
    if (account.getActiveEnrollments().isEmpty()) {
        // Participant has no active enrollments. Don't create a participant version.
        return;
    }
    ParticipantVersion participantVersion = makeParticipantVersionFromAccount(account);
    createParticipantVersion(participantVersion);
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) ParticipantVersion(org.sagebionetworks.bridge.models.accounts.ParticipantVersion)

Aggregations

App (org.sagebionetworks.bridge.models.apps.App)389 Test (org.testng.annotations.Test)213 UserSession (org.sagebionetworks.bridge.models.accounts.UserSession)103 DynamoApp (org.sagebionetworks.bridge.dynamodb.DynamoApp)81 PostMapping (org.springframework.web.bind.annotation.PostMapping)74 StudyParticipant (org.sagebionetworks.bridge.models.accounts.StudyParticipant)65 Account (org.sagebionetworks.bridge.models.accounts.Account)57 GetMapping (org.springframework.web.bind.annotation.GetMapping)36 StatusMessage (org.sagebionetworks.bridge.models.StatusMessage)29 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)28 EntityNotFoundException (org.sagebionetworks.bridge.exceptions.EntityNotFoundException)25 RequestContext (org.sagebionetworks.bridge.RequestContext)23 CriteriaContext (org.sagebionetworks.bridge.models.CriteriaContext)23 SignIn (org.sagebionetworks.bridge.models.accounts.SignIn)22 DateTime (org.joda.time.DateTime)20 BadRequestException (org.sagebionetworks.bridge.exceptions.BadRequestException)19 AccountId (org.sagebionetworks.bridge.models.accounts.AccountId)19 JsonNode (com.fasterxml.jackson.databind.JsonNode)18 StudyActivityEvent (org.sagebionetworks.bridge.models.activities.StudyActivityEvent)17 AppAndUsers (org.sagebionetworks.bridge.models.apps.AppAndUsers)16