Search in sources :

Example 11 with App

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

the class DynamoAppTest method appFullySerializesForCaching.

@Test
public void appFullySerializesForCaching() throws Exception {
    final DynamoApp app = TestUtils.getValidApp(DynamoAppTest.class);
    OAuthProvider oauthProvider = new OAuthProvider("clientId", "secret", "endpoint", OAuthProviderTest.CALLBACK_URL, null);
    app.getOAuthProviders().put("myProvider", oauthProvider);
    app.setAutomaticCustomEvents(ImmutableMap.of("3-days-after-enrollment", "P3D"));
    app.setVersion(2L);
    app.setMinSupportedAppVersions(ImmutableMap.<String, Integer>builder().put(OperatingSystem.IOS, 2).build());
    app.setUploadMetadataFieldDefinitions(ImmutableList.of(new UploadFieldDefinition.Builder().withName("test-metadata-field").withType(UploadFieldType.INT).build()));
    app.setAndroidAppLinks(ANDROID_APP_LINKS);
    app.setAppleAppLinks(APPLE_APP_LINKS);
    final JsonNode node = BridgeObjectMapper.get().valueToTree(app);
    assertTrue(node.get("autoVerificationEmailSuppressed").booleanValue());
    assertEqualsAndNotNull(app.getConsentNotificationEmail(), node.get("consentNotificationEmail").asText());
    assertEqualsAndNotNull(app.getExporter3Configuration(), JsonUtils.asEntity(node, "exporter3Configuration", Exporter3Configuration.class));
    assertFalse(node.get("participantIpLockingEnabled").booleanValue());
    assertTrue(node.get("appIdExcludedInExport").booleanValue());
    assertEqualsAndNotNull(app.getSupportEmail(), node.get("supportEmail").asText());
    assertEqualsAndNotNull(app.getSynapseDataAccessTeamId(), node.get("synapseDataAccessTeamId").longValue());
    assertEqualsAndNotNull(app.getSynapseProjectId(), node.get("synapseProjectId").textValue());
    assertEqualsAndNotNull(app.getTechnicalEmail(), node.get("technicalEmail").asText());
    assertEqualsAndNotNull(app.getUploadValidationStrictness().toString().toLowerCase(), node.get("uploadValidationStrictness").textValue());
    assertTrue(node.get("usesCustomExportSchedule").asBoolean());
    assertEqualsAndNotNull(app.getSponsorName(), node.get("sponsorName").asText());
    assertEqualsAndNotNull(app.getName(), node.get("name").asText());
    assertEqualsAndNotNull(app.getShortName(), node.get("shortName").textValue());
    assertEqualsAndNotNull(app.isActive(), node.get("active").asBoolean());
    assertEqualsAndNotNull(app.getIdentifier(), node.get("identifier").asText());
    assertEqualsAndNotNull(app.getMinAgeOfConsent(), node.get("minAgeOfConsent").asInt());
    assertEqualsAndNotNull(app.getPasswordPolicy(), JsonUtils.asEntity(node, "passwordPolicy", PasswordPolicy.class));
    assertEqualsAndNotNull(app.getUserProfileAttributes(), JsonUtils.asStringSet(node, "userProfileAttributes"));
    assertEqualsAndNotNull(app.getTaskIdentifiers(), JsonUtils.asStringSet(node, "taskIdentifiers"));
    assertEqualsAndNotNull(app.getActivityEventKeys(), JsonUtils.asStringSet(node, "activityEventKeys"));
    assertEqualsAndNotNull(app.getDataGroups(), JsonUtils.asStringSet(node, "dataGroups"));
    assertEqualsAndNotNull(app.getVersion(), node.get("version").longValue());
    assertTrue(node.get("strictUploadValidationEnabled").asBoolean());
    assertTrue(node.get("healthCodeExportEnabled").asBoolean());
    assertTrue(node.get("emailVerificationEnabled").asBoolean());
    assertTrue(node.get("externalIdRequiredOnSignup").asBoolean());
    assertTrue(node.get("emailSignInEnabled").asBoolean());
    assertTrue(node.get("reauthenticationEnabled").booleanValue());
    assertTrue(node.get("autoVerificationPhoneSuppressed").booleanValue());
    assertTrue(node.get("verifyChannelOnSignInEnabled").booleanValue());
    assertEquals(node.get("accountLimit").asInt(), 0);
    assertFalse(node.get("disableExport").asBoolean());
    assertEqualsAndNotNull("App", node.get("type").asText());
    assertEqualsAndNotNull(app.getPushNotificationARNs().get(OperatingSystem.IOS), node.get("pushNotificationARNs").get(OperatingSystem.IOS).asText());
    assertEqualsAndNotNull(app.getPushNotificationARNs().get(OperatingSystem.ANDROID), node.get("pushNotificationARNs").get(OperatingSystem.ANDROID).asText());
    JsonNode automaticCustomEventsNode = node.get("automaticCustomEvents");
    assertEquals(automaticCustomEventsNode.size(), 1);
    assertEquals(automaticCustomEventsNode.get("3-days-after-enrollment").textValue(), "P3D");
    JsonNode appleLink = node.get("appleAppLinks").get(0);
    assertEquals(appleLink.get("appID").textValue(), "appId");
    assertEquals(appleLink.get("paths").get(0).textValue(), "/appId/");
    assertEquals(appleLink.get("paths").get(1).textValue(), "/appId/*");
    JsonNode androidLink = node.get("androidAppLinks").get(0);
    assertEquals(androidLink.get("namespace").textValue(), "namespace");
    assertEquals(androidLink.get("package_name").textValue(), "package_name");
    assertEquals(androidLink.get("sha256_cert_fingerprints").get(0).textValue(), "sha256_cert_fingerprints");
    // validate minAppVersion
    JsonNode supportedVersionsNode = JsonUtils.asJsonNode(node, "minSupportedAppVersions");
    assertNotNull(supportedVersionsNode);
    assertEqualsAndNotNull(app.getMinSupportedAppVersions().get(OperatingSystem.IOS), supportedVersionsNode.get(OperatingSystem.IOS).intValue());
    // validate metadata field defs
    JsonNode metadataFieldDefListNode = node.get("uploadMetadataFieldDefinitions");
    assertEquals(metadataFieldDefListNode.size(), 1);
    JsonNode oneMetadataFieldDefNode = metadataFieldDefListNode.get(0);
    assertEquals(oneMetadataFieldDefNode.get("name").textValue(), "test-metadata-field");
    assertEquals(oneMetadataFieldDefNode.get("type").textValue(), "int");
    JsonNode providerNode = node.get("oAuthProviders").get("myProvider");
    assertEquals(providerNode.get("clientId").textValue(), "clientId");
    assertEquals(providerNode.get("secret").textValue(), "secret");
    assertEquals(providerNode.get("endpoint").textValue(), "endpoint");
    assertEquals(providerNode.get("callbackUrl").textValue(), OAuthProviderTest.CALLBACK_URL);
    assertEquals(providerNode.get("type").textValue(), "OAuthProvider");
    JsonNode defaultTemplates = node.get("defaultTemplates");
    assertEquals(defaultTemplates.get("email_account_exists").textValue(), "ABC-DEF");
    // Deserialize back to a POJO and verify.
    final App deserApp = BridgeObjectMapper.get().readValue(node.toString(), App.class);
    assertEquals(deserApp, app);
}
Also used : UploadFieldDefinition(org.sagebionetworks.bridge.models.upload.UploadFieldDefinition) App(org.sagebionetworks.bridge.models.apps.App) PasswordPolicy(org.sagebionetworks.bridge.models.apps.PasswordPolicy) OAuthProvider(org.sagebionetworks.bridge.models.apps.OAuthProvider) JsonNode(com.fasterxml.jackson.databind.JsonNode) Exporter3Configuration(org.sagebionetworks.bridge.models.apps.Exporter3Configuration) Test(org.testng.annotations.Test) OAuthProviderTest(org.sagebionetworks.bridge.models.apps.OAuthProviderTest)

Example 12 with App

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

the class DynamoAppTest method uploadMetadataFieldDefListIsNeverNull.

@Test
public void uploadMetadataFieldDefListIsNeverNull() {
    // make field for test
    List<UploadFieldDefinition> fieldDefList = new ArrayList<>();
    fieldDefList.add(new UploadFieldDefinition.Builder().withName("test-field").withType(UploadFieldType.ATTACHMENT_V2).build());
    // starts as empty
    App app = new DynamoApp();
    assertTrue(app.getUploadMetadataFieldDefinitions().isEmpty());
    // set value works
    app.setUploadMetadataFieldDefinitions(fieldDefList);
    assertEquals(app.getUploadMetadataFieldDefinitions(), fieldDefList);
    // set to null makes it empty again
    app.setUploadMetadataFieldDefinitions(null);
    assertTrue(app.getUploadMetadataFieldDefinitions().isEmpty());
}
Also used : UploadFieldDefinition(org.sagebionetworks.bridge.models.upload.UploadFieldDefinition) App(org.sagebionetworks.bridge.models.apps.App) ArrayList(java.util.ArrayList) Test(org.testng.annotations.Test) OAuthProviderTest(org.sagebionetworks.bridge.models.apps.OAuthProviderTest)

Example 13 with App

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

the class DynamoAppTest method reauthenticationEnabled.

@Test
public void reauthenticationEnabled() {
    // Starts as null.
    App app = App.create();
    assertNull(app.isReauthenticationEnabled());
    // Set to true.
    app.setReauthenticationEnabled(true);
    assertTrue(app.isReauthenticationEnabled());
    // Set to false.
    app.setReauthenticationEnabled(false);
    assertFalse(app.isReauthenticationEnabled());
    // Set back to null.
    app.setReauthenticationEnabled(null);
    assertNull(app.isReauthenticationEnabled());
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) Test(org.testng.annotations.Test) OAuthProviderTest(org.sagebionetworks.bridge.models.apps.OAuthProviderTest)

Example 14 with App

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

the class DynamoAppTest method testThatEmptyMinSupportedVersionMapperDoesNotThrowException.

@Test
public void testThatEmptyMinSupportedVersionMapperDoesNotThrowException() throws Exception {
    final DynamoApp app = TestUtils.getValidApp(DynamoAppTest.class);
    app.setVersion(2L);
    final String json = BridgeObjectMapper.get().writeValueAsString(app);
    BridgeObjectMapper.get().readTree(json);
    // Deserialize back to a POJO and verify.
    final App deserApp = BridgeObjectMapper.get().readValue(json, App.class);
    assertEquals(deserApp, app);
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) Test(org.testng.annotations.Test) OAuthProviderTest(org.sagebionetworks.bridge.models.apps.OAuthProviderTest)

Example 15 with App

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

the class BridgeUtilsTest method isExporter3Configured_ConfigObjectNull.

@Test
public void isExporter3Configured_ConfigObjectNull() {
    App app = TestUtils.getValidApp(BridgeUtilsTest.class);
    app.setExporter3Enabled(true);
    app.setExporter3Configuration(null);
    assertFalse(BridgeUtils.isExporter3Configured(app));
}
Also used : App(org.sagebionetworks.bridge.models.apps.App) Test(org.testng.annotations.Test) AssessmentConfigValidatorTest(org.sagebionetworks.bridge.validators.AssessmentConfigValidatorTest)

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