@Test public void testSensitiveUserFields() throws Exception { Map<String, Object> sensitiveFields = Maps.newHashMap(); sensitiveFields.put("key", "keycontents"); AddServicesRequest addRequest = new AddServicesRequest(sensitiveFields, ImmutableSet.of(service2.getName())); ClusterOperationRequest opRequest = new ClusterOperationRequest(sensitiveFields); Cluster cluster = createActiveCluster(); clusterService.requestAddServices(cluster.getId(), account, addRequest); testSensitiveFieldsAdded(cluster, sensitiveFields); clusterStore.deleteCluster(cluster.getId()); cluster = createActiveCluster(); clusterService.requestClusterDelete(cluster.getId(), account, opRequest); testSensitiveFieldsAdded(cluster, sensitiveFields); clusterStore.deleteCluster(cluster.getId()); cluster = createActiveCluster(); clusterService.requestServiceRuntimeAction(cluster.getId(), account, ClusterAction.RESTART_SERVICES, service1.getName(), opRequest); testSensitiveFieldsAdded(cluster, sensitiveFields); clusterStore.deleteCluster(cluster.getId()); }
@Test public void testUsesExistingCredentials() throws Exception { Cluster cluster = createActiveCluster(); // add required sensitive user field Map<String, Object> sensitiveFields = Maps.newHashMap(); sensitiveFields.put("key", "keycontents"); credentialStore.set(account.getTenantId(), cluster.getId(), sensitiveFields); // request doesn't contain the required key field, but it should be picked up from the credential store // so this should go through without throwing an exception. AddServicesRequest addServicesRequest = new AddServicesRequest(null, ImmutableSet.of(service2.getName())); clusterService.requestAddServices(cluster.getId(), account, addServicesRequest); }
@Test(expected = MissingFieldsException.class) public void testMissingRequestThrowsException() throws Exception { Cluster cluster = createActiveCluster(); clusterService.requestClusterDelete(cluster.getId(), cluster.getAccount(), null); }
@Test public void testClusterConfigure() throws Exception { Cluster cluster = createActiveCluster(); Map<String, Object> providerFields = Maps.newHashMap(); providerFields.put("keyname", "somename"); providerFields.put("key", "somecontents"); providerFields.put("url", "internal.net/api"); ClusterConfigureRequest configureRequest = new ClusterConfigureRequest(providerFields, new JsonObject(), false); clusterService.requestClusterReconfigure(cluster.getId(), account, configureRequest); cluster = clusterStore.getCluster(cluster.getId()); // key and url are both sensitive fields Map<String, String> expectedSensitiveFields = ImmutableMap.of( "key", "somecontents", "url", "internal.net/api" ); // nonsensitive fields should be everything currently in the provider plus the nonsensitive user fields // given in the request Map<String, Object> expectedNonsensitiveFields = Maps.newHashMap(provider.getProvisionerFields()); expectedNonsensitiveFields.put("keyname", "somename"); Assert.assertEquals(expectedNonsensitiveFields, cluster.getProvider().getProvisionerFields()); Assert.assertEquals(expectedSensitiveFields, credentialStore.get(account.getTenantId(), cluster.getId())); }
@Test public void testRequiredUserFields() throws Exception { Cluster cluster = createActiveCluster(); // the "key" user field is required. Should throw an except if its not set. Map<String, Object> providerFields = Maps.newHashMap(); ClusterConfigureRequest configureRequest = new ClusterConfigureRequest(providerFields, new JsonObject(), false); boolean failed = false; try { clusterService.requestClusterReconfigure(cluster.getId(), account, configureRequest); } catch (MissingFieldsException e) { // this is expected failed = true; } Assert.assertTrue(failed); // now try with required user field set providerFields.put("key", "keycontents"); configureRequest = new ClusterConfigureRequest(providerFields, new JsonObject(), false); clusterService.requestClusterReconfigure(cluster.getId(), account, configureRequest); // nonsensitive fields should be everything currently in the provider before we get the updated cluster Map<String, Object> expectedNonsensitiveFields = cluster.getProvider().getProvisionerFields(); // get the updated cluster cluster = clusterStore.getCluster(cluster.getId()); // key and url are both sensitive fields Map<String, String> expectedSensitiveFields = ImmutableMap.of( "key", "keycontents" ); Assert.assertEquals(expectedNonsensitiveFields, cluster.getProvider().getProvisionerFields()); Assert.assertEquals(expectedSensitiveFields, credentialStore.get(account.getTenantId(), cluster.getId())); }
@Test public void testAddServices() throws Exception { Cluster cluster = createActiveCluster(); // add required sensitive user field Map<String, Object> sensitiveFields = Maps.newHashMap(); sensitiveFields.put("key", "keycontents"); AddServicesRequest addServicesRequest = new AddServicesRequest(sensitiveFields, ImmutableSet.of(service2.getName())); clusterService.requestAddServices(cluster.getId(), account, addServicesRequest); // nonsensitive fields should be everything currently in the provider before we get the updated cluster Map<String, Object> expectedNonsensitiveFields = cluster.getProvider().getProvisionerFields(); // get the updated cluster cluster = clusterStore.getCluster(cluster.getId()); // nonsensitive fields should be everything currently in the provider plus the nonsensitive user fields // given in the request Assert.assertEquals(expectedNonsensitiveFields, cluster.getProvider().getProvisionerFields()); Assert.assertEquals(sensitiveFields, credentialStore.get(account.getTenantId(), cluster.getId())); }