@Test
  public void dataWriteClientCanPut() throws Exception {
    Properties props = getVMPropertiesWithPermission("dataWrite");
    int locatorPort = locator.getPort();

    ClientVM clientVM = csRule.startClientVM(2, clientVmConfiguration, props, cf -> cf
        .addPoolLocator("localhost", locatorPort));

    // Client adds data
    clientVM.invoke(() -> {
      ClientCache cache = ClusterStartupRule.getClientCache();
      ClientRegionFactory<String, String> rf =
          cache.createClientRegionFactory(ClientRegionShortcut.PROXY);
      Region<String, String> region = rf.create(regionName);

      region.put(singleKey, singleValue);
      region.putAll(keyValueMap);
    });

    // Confirm server data has been updated.
    server.invoke(() -> {
      assertThat(ClusterStartupRule.getCache().getRegion(regionName))
          .containsOnlyKeys(initKey, singleKey, mapKey1, mapKey2).containsEntry(initKey, initValue)
          .containsEntry(singleKey, singleValue).containsEntry(mapKey1, mapValue1)
          .containsEntry(mapKey2, mapValue2);
    });
  }
Tests for authorization from client to server for data puts and gets. For similar test in the
case of failover, see {@link ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest}.

@since GemFire 5.5
geode-core/src/upgradeTest/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java