コード例 #1
0
/** Tests the delete request. */
@SuppressWarnings("javadoc")
public class DeleteRequestTestCase extends RequestsTestCase {

  private static final DeleteRequest NEW_DELETE_REQUEST =
      Requests.newDeleteRequest(DN.valueOf("uid=Deleterequest1"));
  private static final DeleteRequest NEW_DELETE_REQUEST2 =
      Requests.newDeleteRequest("cn=Deleterequesttestcase");
  private static final DeleteRequest NEW_DELETE_REQUEST3 =
      Requests.newDeleteRequest("uid=user.999,ou=people,o=test");

  @DataProvider(name = "deleteRequests")
  private Object[][] getDeleteRequests() throws Exception {
    return createModifiableInstance();
  }

  @Override
  protected DeleteRequest[] newInstance() {
    return new DeleteRequest[] {NEW_DELETE_REQUEST, NEW_DELETE_REQUEST2, NEW_DELETE_REQUEST3};
  }

  @Override
  protected Request copyOf(Request original) {
    return Requests.copyOfDeleteRequest((DeleteRequest) original);
  }

  @Override
  protected Request unmodifiableOf(Request original) {
    return Requests.unmodifiableDeleteRequest((DeleteRequest) original);
  }

  @Test(dataProvider = "deleteRequests")
  public void testModifiableRequest(final DeleteRequest original) {
    final String newValue = "uid=newName";
    final DeleteRequest copy = (DeleteRequest) copyOf(original);

    copy.setName(newValue);
    assertThat(copy.getName().toString()).isEqualTo(newValue);
    assertThat(original.getName().toString()).isNotEqualTo(newValue);
  }

  @Test(dataProvider = "deleteRequests")
  public void testUnmodifiableRequest(final DeleteRequest original) {
    final DeleteRequest unmodifiable = (DeleteRequest) unmodifiableOf(original);
    assertThat(unmodifiable.getName().toString()).isEqualTo(original.getName().toString());
  }

  @Test(dataProvider = "deleteRequests", expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetName(final DeleteRequest original) {
    final DeleteRequest unmodifiable = (DeleteRequest) unmodifiableOf(original);
    unmodifiable.setName("uid=scarter,ou=people,dc=example,dc=com");
  }

  @Test(dataProvider = "deleteRequests", expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetName2(final DeleteRequest original) {
    final DeleteRequest unmodifiable = (DeleteRequest) unmodifiableOf(original);
    unmodifiable.setName(DN.valueOf("uid=scarter,ou=people,dc=example,dc=com"));
  }
}
コード例 #2
0
  @Test(dataProvider = "annotatedRequestHandlerData")
  public void testActionCollectionItemAnnotatedRequestHandler(
      Class<?> requestHandler,
      boolean collection,
      boolean create,
      boolean read,
      boolean update,
      boolean delete,
      boolean patch,
      boolean resourceAction,
      boolean collectionAction,
      boolean query)
      throws Exception {

    // Given
    Object provider = requestHandler.newInstance();
    Connection connection = Resources.newInternalConnection(createHandler(collection, provider));
    ActionRequest req1 = Requests.newActionRequest("/test/fred", "instanceAction1");
    ActionRequest req2 = Requests.newActionRequest("/test/fred", "instanceAction2");

    // When
    Promise<JsonValue, ResourceException> promise1 =
        connection.actionAsync(new RootContext(), req1);
    Promise<JsonValue, ResourceException> promise2 =
        connection.actionAsync(new RootContext(), req2);

    // Then
    if (collectionAction && collection) {
      AssertJJsonValueAssert.assertThat(promise1)
          .succeeded()
          .stringAt("result")
          .isEqualTo("instanceAction1-fred");
      AssertJJsonValueAssert.assertThat(promise2)
          .succeeded()
          .stringAt("result")
          .isEqualTo("instanceAction2-fred");
    } else if (collection) {
      AssertJJsonValueAssert.assertThat(promise1)
          .failedWithException()
          .isInstanceOf(NotSupportedException.class);
      AssertJJsonValueAssert.assertThat(promise2)
          .failedWithException()
          .isInstanceOf(NotSupportedException.class);
    } else {
      AssertJJsonValueAssert.assertThat(promise1)
          .failedWithException()
          .isInstanceOf(NotFoundException.class);
      AssertJJsonValueAssert.assertThat(promise2)
          .failedWithException()
          .isInstanceOf(NotFoundException.class);
    }
  }
コード例 #3
0
  @Test(dataProvider = "annotatedRequestHandlerData")
  public void testUpdateAnnotatedRequestHandler(
      Class<?> requestHandler,
      boolean collection,
      boolean create,
      boolean read,
      boolean update,
      boolean delete,
      boolean patch,
      boolean resourceAction,
      boolean collectionAction,
      boolean query)
      throws Exception {

    // Given
    Object provider = requestHandler.newInstance();
    Connection connection = Resources.newInternalConnection(createHandler(collection, provider));
    UpdateRequest req = Requests.newUpdateRequest("/test", json(object(field("dummy", "test"))));

    // When
    Promise<Resource, ResourceException> promise = connection.updateAsync(new RootContext(), req);

    // Then
    if (update && !collection) {
      assertThat(promise).succeeded().withId().isEqualTo("update");
    } else if (!collection) {
      assertThat(promise).failedWithException().isInstanceOf(NotSupportedException.class);
    } else {
      assertThat(promise).failedWithException().isInstanceOf(BadRequestException.class);
    }
  }
コード例 #4
0
  @Test(dataProvider = "annotatedRequestHandlerData")
  public void testPatchCollectionItemAnnotatedRequestHandler(
      Class<?> requestHandler,
      boolean collection,
      boolean create,
      boolean read,
      boolean update,
      boolean delete,
      boolean patch,
      boolean resourceAction,
      boolean collectionAction,
      boolean query)
      throws Exception {

    // Given
    Object provider = requestHandler.newInstance();
    Connection connection = Resources.newInternalConnection(createHandler(collection, provider));
    PatchRequest req = Requests.newPatchRequest("/test/fred");

    // When
    Promise<Resource, ResourceException> promise = connection.patchAsync(new RootContext(), req);

    // Then
    if (patch && collection) {
      assertThat(promise).succeeded().withId().isEqualTo("patch-fred");
    } else if (collection) {
      assertThat(promise).failedWithException().isInstanceOf(NotSupportedException.class);
    } else {
      assertThat(promise).failedWithException().isInstanceOf(NotFoundException.class);
    }
  }
コード例 #5
0
  @Test
  // request FD
  public void testParseVersion() throws StiebelHeatPumpException {
    // verify the version from heat pump
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "Version";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0xb5,
          (byte) 0xfd,
          (byte) 0x01,
          (byte) 0xb6,
          (byte) 0x10,
          (byte) 0x03
        };

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    data.get("Version");
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));
    Assert.assertEquals("4.38", data.get("Version"));
  }
コード例 #6
0
  @Test
  public void testCopyHeadersClusterAdminRequest() {
    Map<String, String> transportHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> restHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> copiedHeaders = randomHeadersFrom(restHeaders);
    Set<String> usefulRestHeaders = new HashSet<>(copiedHeaders.keySet());
    usefulRestHeaders.addAll(randomMap(randomIntBetween(0, 10), "useful-").keySet());
    Map<String, String> restContext = randomContext(randomIntBetween(0, 10));
    Map<String, String> transportContext =
        Maps.difference(randomContext(randomIntBetween(0, 10)), restContext).entriesOnlyOnLeft();

    HashMap<String, String> expectedHeaders = new HashMap<>();
    expectedHeaders.putAll(transportHeaders);
    expectedHeaders.putAll(copiedHeaders);

    Map<String, String> expectedContext = new HashMap<>();
    expectedContext.putAll(transportContext);
    expectedContext.putAll(restContext);

    Client client =
        client(
            new NoOpClient(), new FakeRestRequest(restHeaders, expectedContext), usefulRestHeaders);

    ClusterHealthRequest clusterHealthRequest = Requests.clusterHealthRequest();
    putHeaders(clusterHealthRequest, transportHeaders);
    putContext(clusterHealthRequest, transportContext);
    assertHeaders(clusterHealthRequest, transportHeaders);
    client.admin().cluster().health(clusterHealthRequest);
    assertHeaders(clusterHealthRequest, expectedHeaders);
    assertContext(clusterHealthRequest, expectedContext);

    ClusterStateRequest clusterStateRequest = Requests.clusterStateRequest();
    putHeaders(clusterStateRequest, transportHeaders);
    putContext(clusterStateRequest, transportContext);
    assertHeaders(clusterStateRequest, transportHeaders);
    client.admin().cluster().state(clusterStateRequest);
    assertHeaders(clusterStateRequest, expectedHeaders);
    assertContext(clusterStateRequest, expectedContext);

    ClusterStatsRequest clusterStatsRequest = Requests.clusterStatsRequest();
    putHeaders(clusterStatsRequest, transportHeaders);
    putContext(clusterStatsRequest, transportContext);
    assertHeaders(clusterStatsRequest, transportHeaders);
    client.admin().cluster().clusterStats(clusterStatsRequest);
    assertHeaders(clusterStatsRequest, expectedHeaders);
    assertContext(clusterStatsRequest, expectedContext);
  }
コード例 #7
0
  @Test
  public void testCopyHeadersIndicesAdminRequest() {
    Map<String, String> transportHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> restHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> copiedHeaders = randomHeadersFrom(restHeaders);
    Set<String> usefulRestHeaders = new HashSet<>(copiedHeaders.keySet());
    usefulRestHeaders.addAll(randomMap(randomIntBetween(0, 10), "useful-").keySet());
    Map<String, String> restContext = randomContext(randomIntBetween(0, 10));
    Map<String, String> transportContext =
        Maps.difference(randomContext(randomIntBetween(0, 10)), restContext).entriesOnlyOnLeft();

    HashMap<String, String> expectedHeaders = new HashMap<>();
    expectedHeaders.putAll(transportHeaders);
    expectedHeaders.putAll(copiedHeaders);

    Map<String, String> expectedContext = new HashMap<>();
    expectedContext.putAll(transportContext);
    expectedContext.putAll(restContext);

    Client client =
        client(new NoOpClient(), new FakeRestRequest(restHeaders, restContext), usefulRestHeaders);

    CreateIndexRequest createIndexRequest = Requests.createIndexRequest("test");
    putHeaders(createIndexRequest, transportHeaders);
    putContext(createIndexRequest, transportContext);
    assertHeaders(createIndexRequest, transportHeaders);
    client.admin().indices().create(createIndexRequest);
    assertHeaders(createIndexRequest, expectedHeaders);
    assertContext(createIndexRequest, expectedContext);

    CloseIndexRequest closeIndexRequest = Requests.closeIndexRequest("test");
    putHeaders(closeIndexRequest, transportHeaders);
    putContext(closeIndexRequest, transportContext);
    assertHeaders(closeIndexRequest, transportHeaders);
    client.admin().indices().close(closeIndexRequest);
    assertHeaders(closeIndexRequest, expectedHeaders);
    assertContext(closeIndexRequest, expectedContext);

    FlushRequest flushRequest = Requests.flushRequest();
    putHeaders(flushRequest, transportHeaders);
    putContext(flushRequest, transportContext);
    assertHeaders(flushRequest, transportHeaders);
    client.admin().indices().flush(flushRequest);
    assertHeaders(flushRequest, expectedHeaders);
    assertContext(flushRequest, expectedContext);
  }
コード例 #8
0
  @Test
  public void testCopyHeadersRequest() {
    Map<String, String> transportHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> restHeaders = randomHeaders(randomIntBetween(0, 10));
    Map<String, String> copiedHeaders = randomHeadersFrom(restHeaders);
    Set<String> usefulRestHeaders = new HashSet<>(copiedHeaders.keySet());
    usefulRestHeaders.addAll(randomMap(randomIntBetween(0, 10), "useful-").keySet());
    Map<String, String> restContext = randomContext(randomIntBetween(0, 10));
    Map<String, String> transportContext =
        Maps.difference(randomContext(randomIntBetween(0, 10)), restContext).entriesOnlyOnLeft();

    Map<String, String> expectedHeaders = new HashMap<>();
    expectedHeaders.putAll(transportHeaders);
    expectedHeaders.putAll(copiedHeaders);

    Map<String, String> expectedContext = new HashMap<>();
    expectedContext.putAll(transportContext);
    expectedContext.putAll(restContext);

    Client client =
        client(new NoOpClient(), new FakeRestRequest(restHeaders, restContext), usefulRestHeaders);

    SearchRequest searchRequest = Requests.searchRequest();
    putHeaders(searchRequest, transportHeaders);
    putContext(searchRequest, transportContext);
    assertHeaders(searchRequest, transportHeaders);
    client.search(searchRequest);
    assertHeaders(searchRequest, expectedHeaders);
    assertContext(searchRequest, expectedContext);

    GetRequest getRequest = Requests.getRequest("index");
    putHeaders(getRequest, transportHeaders);
    putContext(getRequest, transportContext);
    assertHeaders(getRequest, transportHeaders);
    client.get(getRequest);
    assertHeaders(getRequest, expectedHeaders);
    assertContext(getRequest, expectedContext);

    IndexRequest indexRequest = Requests.indexRequest();
    putHeaders(indexRequest, transportHeaders);
    putContext(indexRequest, transportContext);
    assertHeaders(indexRequest, transportHeaders);
    client.index(indexRequest);
    assertHeaders(indexRequest, expectedHeaders);
    assertContext(indexRequest, expectedContext);
  }
コード例 #9
0
ファイル: Connections.java プロジェクト: Geek2Sages/lettuce
  /*
   * Initiate {@code CLIENT LIST} on all connections and return the {@link Requests}.
   *
   * @return the {@link Requests}.
   */
  public Requests requestClients() {

    Requests requests = new Requests();

    for (Map.Entry<RedisURI, StatefulRedisConnection<String, String>> entry :
        connections.entrySet()) {

      CommandArgs<String, String> args =
          new CommandArgs<>(ClusterTopologyRefresh.CODEC).add(CommandKeyword.LIST);
      Command<String, String, String> command =
          new Command<>(CommandType.CLIENT, new StatusOutput<>(ClusterTopologyRefresh.CODEC), args);
      TimedAsyncCommand<String, String, String> timedCommand = new TimedAsyncCommand<>(command);

      entry.getValue().dispatch(timedCommand);
      requests.addRequest(entry.getKey(), timedCommand);
    }

    return requests;
  }
コード例 #10
0
  @Override
  protected Void doInBackground(Void... voids) {
    final VKRequest vkRequest = Requests.vkFriendsRequest(Requests.LOCALE_RUS);

    vkRequest.executeWithListener(
        new VKRequest.VKRequestListener() {
          @Override
          public void onComplete(VKResponse response) {
            super.onComplete(response);
            vkTask = new ParseVkResponseTask(vkFriends, listener, response);
            vkTask.setShowResults(false);
            vkTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
          }
        });

    while (vkTask == null) {}

    try {
      vkTask.get();
      Request fbRequest = Requests.fbFriendsRequest();
      Response response = fbRequest.executeAndWait();
      fbTask = new ParseFbResponseTask(fbFriends, listener, response);
      fbTask.setShowResults(false);
      Handler mainHandler = new Handler(Looper.getMainLooper());
      mainHandler.post(
          new Runnable() {
            @Override
            public void run() {
              fbTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            }
          });
      fbTask.get();
    } catch (Exception e) {
      e.printStackTrace();
      return null;
    }

    fillSyncContactsList();
    storeSyncContacts();

    return null;
  }
コード例 #11
0
 @SuppressWarnings("unchecked")
 @Test(dataProvider = "testCollectionResourceProviderData")
 public void testCollectionResourceProvider(String resourcePath, String expectedId)
     throws Exception {
   CollectionResourceProvider collection = mock(CollectionResourceProvider.class);
   RequestHandler handler = Resources.newCollection(collection);
   Connection connection = Resources.newInternalConnection(handler);
   ReadRequest read = Requests.newReadRequest(resourcePath);
   connection.readAsync(new RootContext(), read);
   ArgumentCaptor<ReadRequest> captor = ArgumentCaptor.forClass(ReadRequest.class);
   verify(collection).readInstance(any(ServerContext.class), eq(expectedId), captor.capture());
   Assertions.assertThat(captor.getValue().getResourcePath()).isEqualTo("");
 }
コード例 #12
0
  @Test
  // request OC
  public void testParseSettingsDomesticWater() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsDomesticHotWater";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x8e,
          (byte) 0x07,
          (byte) 0x14,
          (byte) 0x5a,
          (byte) 0xff,
          (byte) 0x9c,
          (byte) 0x1e,
          (byte) 0x07,
          (byte) 0x00,
          (byte) 0x64,
          (byte) 0x03,
          (byte) 0x02,
          (byte) 0xee,
          (byte) 0x01,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("2.0", data.get("P32StartupHysteresisDHWTemperature"));
    Assert.assertEquals("90", data.get("P33TimeDelayElectricalReheating"));
    Assert.assertEquals("-10.0", data.get("P34OutsideTemperatureLimitForImmElectricalReheating"));
    Assert.assertEquals("30", data.get("P35PasteurisationInterval"));
    Assert.assertEquals("7", data.get("P36MaxDurationDHWLoading"));
    Assert.assertEquals("10.0", data.get("PasteurisationHeatupTemperature"));
    Assert.assertEquals("3", data.get("NoOfEnabledElectricalReheatStagesDHWLoading"));
    Assert.assertEquals("75.0", data.get("MaxFlowTemperatureDHWMode"));
    Assert.assertEquals("1", data.get("CompressorShutdownDHWLoading"));
  }
コード例 #13
0
  @Test(dataProvider = "annotatedRequestHandlerData")
  public void testActionAnnotatedRequestHandler(
      Class<?> requestHandler,
      boolean collection,
      boolean create,
      boolean read,
      boolean update,
      boolean delete,
      boolean patch,
      boolean resourceAction,
      boolean collectionAction,
      boolean query)
      throws Exception {

    // Given
    Object provider = requestHandler.newInstance();
    Connection connection = Resources.newInternalConnection(createHandler(collection, provider));
    String actionId1 = collection ? "collectionAction1" : "instanceAction1";
    ActionRequest req1 = Requests.newActionRequest("/test", actionId1);
    String actionId2 = collection ? "collectionAction2" : "instanceAction2";
    ActionRequest req2 = Requests.newActionRequest("/test", actionId2);

    // When
    Promise<JsonValue, ResourceException> promise1 =
        connection.actionAsync(new RootContext(), req1);
    Promise<JsonValue, ResourceException> promise2 =
        connection.actionAsync(new RootContext(), req2);

    // Then
    if ((collection && collectionAction) || (!collection && resourceAction)) {
      assertThatJsonValue(promise1).succeeded().stringAt("result").isEqualTo(actionId1);
      assertThatJsonValue(promise2).succeeded().stringAt("result").isEqualTo(actionId2);
    } else {
      assertThatJsonValue(promise1).failedWithException().isInstanceOf(NotSupportedException.class);
      assertThatJsonValue(promise2).failedWithException().isInstanceOf(NotSupportedException.class);
    }
  }
コード例 #14
0
  @Test
  @Ignore
  // request FC
  public void testParseTime2() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "Time";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x6a,
          (byte) 0xfc,
          (byte) 0x00,
          (byte) 0x06,
          (byte) 0x15,
          (byte) 0x27,
          (byte) 0x0a,
          (byte) 0x0f,
          (byte) 0x00,
          (byte) 0x02,
          (byte) 0x10,
          (byte) 0x10,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("2", data.get("WeekDay"));
    Assert.assertEquals("21", data.get("Hours"));
    Assert.assertEquals("33", data.get("Minutes"));
    Assert.assertEquals("36", data.get("Seconds"));
    Assert.assertEquals("14", data.get("Year"));
    Assert.assertEquals("2", data.get("Month"));
    Assert.assertEquals("8", data.get("Day"));
  }
コード例 #15
0
  @Test
  // request O3
  public void testParseSettingsEvaporator1() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsEvaporator1";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x0e,
          (byte) 0x03,
          (byte) 0x00,
          (byte) 0x96,
          (byte) 0x00,
          (byte) 0x0a,
          (byte) 0x00,
          (byte) 0x96,
          (byte) 0x00,
          (byte) 0x64,
          (byte) 0x10,
          (byte) 0x10,
          (byte) 0x60,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("15.0", data.get("UpperLimitEvaporatorTemperatureForDefrostEnd"));
    Assert.assertEquals("10", data.get("MaxEvaporatorDefrostTime"));
    Assert.assertEquals("15.0", data.get("LimitTemperatureCondenserElectricalReheating"));
    Assert.assertEquals("10.0", data.get("LimitTemperatureCondenserDefrostTermination"));
    Assert.assertEquals("16", data.get("P47CompressorRestartDelay"));
    Assert.assertEquals("96", data.get("P48ExhaustFanSpeed"));
  }
コード例 #16
0
  @Test
  // request O9
  public void testParseOperationCounters() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "OperationCounters";
              }
            });
    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0xea,
          (byte) 0x09,
          (byte) 0x00,
          (byte) 0x1a,
          (byte) 0x00,
          (byte) 0x19,
          (byte) 0x0c,
          (byte) 0x77,
          (byte) 0x02,
          (byte) 0x28,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("26", data.get("CompressorA"));
    Assert.assertEquals("25", data.get("CompressorB"));
    Assert.assertEquals("3191", data.get("HeatingMode"));
    Assert.assertEquals("552", data.get("DHWMode"));
    Assert.assertEquals("0", data.get("CoolingMode"));
  }
コード例 #17
0
  @Test
  // request 10
  public void testParseSettingsDryHeatingProgram() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsDryHeatingProgram";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0xa8,
          (byte) 0x10,
          (byte) 0x10,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0xfa,
          (byte) 0x01,
          (byte) 0x90,
          (byte) 0x00,
          (byte) 0x02,
          (byte) 0x00,
          (byte) 0x0a,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);

    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("0", data.get("P70Start"));
    Assert.assertEquals("25.0", data.get("P71BaseTemperature"));
    Assert.assertEquals("40.0", data.get("P72PeakTemperature"));
    Assert.assertEquals("2", data.get("P73BaseTemperatureDuration"));
    Assert.assertEquals("1.0", data.get("P74Increase"));
  }
コード例 #18
0
  @Test
  // request OC
  public void testParseSettingsDomesticWaterProgram() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsDomesticHotWaterProgram";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x1d,
          (byte) 0x0c,
          (byte) 0x08,
          (byte) 0x98,
          (byte) 0x01,
          (byte) 0xf4,
          (byte) 0x7b,
          (byte) 0x00,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("2200", data.get("BP1StartTime"));
    Assert.assertEquals("500", data.get("BP1StopTime"));
    Assert.assertEquals("1", data.get("BP1Monday"));
    Assert.assertEquals("1", data.get("BP1Tuesday"));
    Assert.assertEquals("0", data.get("BP1Wednesday"));
    Assert.assertEquals("1", data.get("BP1Thusday"));
    Assert.assertEquals("1", data.get("BP1Friday"));
    Assert.assertEquals("1", data.get("BP1Saturday"));
    Assert.assertEquals("1", data.get("BP1Sunday"));
    Assert.assertEquals("0", data.get("BP1Enabled"));
  }
コード例 #19
0
  @Test
  // request OA
  public void testParseSettingsCirculationPump() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsCirculationPump";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0xeb,
          (byte) 0x0a,
          (byte) 0x01,
          (byte) 0x01,
          (byte) 0x20,
          (byte) 0x00,
          (byte) 0xba,
          (byte) 0x00,
          (byte) 0xc8,
          (byte) 0x00,
          (byte) 0x3c,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("1", data.get("P54minStartupCycles"));
    Assert.assertEquals("288", data.get("P55maxStartupCycles"));
    Assert.assertEquals("18.6", data.get("P56OutsideTemperatureMinHeatingCycles"));
    Assert.assertEquals("20.0", data.get("P57OutsideTemperatureMaxHeatingCycles"));
    Assert.assertEquals("60", data.get("P58SuppressTemperatureCaptureDuringPumpStart"));
  }
コード例 #20
0
  @Test(dataProvider = "dataWithoutVersionHeader")
  @SuppressWarnings("unchecked")
  public void shouldRouteActionRequestsUsingDefaultVersionBehaviour(
      String resource,
      DefaultVersionBehaviour versionBehaviour,
      boolean expectException,
      RequestHandler provider) {

    // Given
    AcceptAPIVersionContext apiVersionContext =
        new AcceptAPIVersionContext(
            new RootContext(),
            "PROTOCOL_NAME",
            AcceptAPIVersion.newBuilder().withDefaultProtocolVersion("1.0").build());
    ServerContext context = new ServerContext(apiVersionContext);
    ActionRequest request =
        Requests.newActionRequest(resource, "ACTION_ID").setContent(json(object()));
    ResultHandler<JsonValue> handler = mock(ResultHandler.class);
    setDefaultVersionBehaviour(router, versionBehaviour);

    // When
    router.handleAction(context, request, handler);

    // Then
    if (expectException) {
      ArgumentCaptor<ResourceException> exceptionCaptor =
          ArgumentCaptor.forClass(ResourceException.class);
      verify(handler).handleError(exceptionCaptor.capture());
      assertThat(exceptionCaptor.getValue()).isInstanceOf(BadRequestException.class);
      verifyZeroInteractions(
          usersHandlerOne,
          usersHandlerTwo,
          usersHandlerThree,
          groupsHandlerOne,
          groupsHandlerTwo,
          groupsHandlerThree);
    } else {
      verify(provider)
          .handleAction(
              Matchers.<ServerContext>anyObject(),
              Matchers.<ActionRequest>anyObject(),
              eq(handler));
    }
  }
コード例 #21
0
  @Test(dataProvider = "dataWithVersionHeader")
  @SuppressWarnings("unchecked")
  public void shouldRouteDeleteVersionRequests(
      String resource, String requestedVersion, boolean expectException, RequestHandler provider) {

    // Given
    AcceptAPIVersionContext apiVersionContext =
        new AcceptAPIVersionContext(
            new RootContext(),
            "PROTOCOL_NAME",
            AcceptAPIVersion.newBuilder()
                .withDefaultProtocolVersion("1.0")
                .withDefaultResourceVersion(requestedVersion)
                .build());
    ServerContext context = new ServerContext(apiVersionContext);
    DeleteRequest request = Requests.newDeleteRequest(resource);
    ResultHandler<Resource> handler = mock(ResultHandler.class);

    // When
    router.handleDelete(context, request, handler);

    // Then
    if (expectException) {
      ArgumentCaptor<ResourceException> exceptionCaptor =
          ArgumentCaptor.forClass(ResourceException.class);
      verify(handler).handleError(exceptionCaptor.capture());
      assertThat(exceptionCaptor.getValue()).isInstanceOf(NotFoundException.class);
      verifyZeroInteractions(
          usersHandlerOne,
          usersHandlerTwo,
          usersHandlerThree,
          groupsHandlerOne,
          groupsHandlerTwo,
          groupsHandlerThree);
    } else {
      verify(provider)
          .handleDelete(
              Matchers.<ServerContext>anyObject(),
              Matchers.<DeleteRequest>anyObject(),
              eq(handler));
    }
  }
コード例 #22
0
  @Test
  // request 0E
  public void testParseSettingsRestartAndMixerTime() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsRestartAndMixerTime";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x09,
          (byte) 0x0e,
          (byte) 0x00,
          (byte) 0x78,
          (byte) 0x00,
          (byte) 0x64,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x1e,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("120", data.get("P59RestartBeforSetbackEnd"));
    Assert.assertEquals("10.0", data.get("MixerProportionalRange"));
    Assert.assertEquals("0.0", data.get("DerivativeMixerTime"));
    Assert.assertEquals("30", data.get("MixerTimeInterval"));
  }
コード例 #23
0
  @Test
  // request O4
  public void testParseSettingsEvaporator2() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsEvaporator2";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x04,
          (byte) 0x3c,
          (byte) 0x00,
          (byte) 0x64,
          (byte) 0x00,
          (byte) 0x5a,
          (byte) 0x01,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("60", data.get("MaxDefrostDurationAAExchanger"));
    Assert.assertEquals("10.0", data.get("DefrostStartThreshold"));
    Assert.assertEquals("90", data.get("VolumeFlowFilterReplacement"));
    Assert.assertEquals("1", data.get("P85DefrostModeAAHE"));
  }
コード例 #24
0
  @Test
  // request OD
  public void testParseSettingsAbsenceProgram() throws StiebelHeatPumpException {
    List<Request> result =
        Requests.searchIn(
            configuration,
            new Matcher<Request>() {
              @Override
              public boolean matches(Request r) {
                return r.getName() == "SettingsAbsenceProgram";
              }
            });

    byte[] response =
        new byte[] {
          (byte) 0x01,
          (byte) 0x00,
          (byte) 0x10,
          (byte) 0x10,
          (byte) 0x0f,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x00,
          (byte) 0x10,
          (byte) 0x03
        };

    response = parser.fixDuplicatedBytes(response);
    Assert.assertEquals(response[3], result.get(0).getRequestByte());
    Assert.assertEquals(response[2], parser.calculateChecksum(response));

    Map<String, String> data = parser.parseRecords(response, result.get(0));

    Assert.assertEquals("0.0", data.get("AP0DurationUntilAbsenceStart"));
    Assert.assertEquals("0.0", data.get("AP0AbsenceDuration"));
    Assert.assertEquals("0", data.get("AP0EnableAbsenceProgram"));
  }
コード例 #25
0
  @Test(dataProvider = "annotatedRequestHandlerData")
  public void testQueryCollectionAnnotatedRequestHandler(
      Class<?> requestHandler,
      boolean collection,
      boolean create,
      boolean read,
      boolean update,
      boolean delete,
      boolean patch,
      boolean resourceAction,
      boolean collectionAction,
      boolean query)
      throws Exception {

    // Given
    Object provider = requestHandler.newInstance();
    Connection connection = Resources.newInternalConnection(createHandler(collection, provider));
    QueryRequest req = Requests.newQueryRequest("/test");

    // When
    Promise<QueryResult, ResourceException> promise =
        connection.queryAsync(new RootContext(), req, mock(QueryResourceHandler.class));

    // Then
    if (query && collection) {
      AssertJPromiseAssert.assertThat(promise).succeeded();
      QueryResult result = promise.get();
      Assertions.assertThat(result.getPagedResultsCookie()).isEqualTo("query");
    } else if (collection) {
      AssertJPromiseAssert.assertThat(promise)
          .failedWithException()
          .isInstanceOf(NotSupportedException.class);
    } else {
      AssertJPromiseAssert.assertThat(promise)
          .failedWithException()
          .isInstanceOf(BadRequestException.class);
    }
  }
コード例 #26
0
 @Override
 protected Request unmodifiableOf(Request original) {
   return Requests.unmodifiablePlainSASLBindRequest((PlainSASLBindRequest) original);
 }
コード例 #27
0
 @Override
 protected Request copyOf(Request original) {
   return Requests.copyOfPlainSASLBindRequest((PlainSASLBindRequest) original);
 }
コード例 #28
0
/** Tests Plain SASL Bind requests. */
@SuppressWarnings("javadoc")
public class PlainSASLBindRequestTestCase extends RequestsTestCase {

  private static final PlainSASLBindRequest NEW_PLAIN_SASL_BIND_REQUEST =
      Requests.newPlainSASLBindRequest("id1", EMPTY_BYTES);
  private static final PlainSASLBindRequest NEW_PLAIN_SASL_BIND_REQUEST2 =
      Requests.newPlainSASLBindRequest("id2", getBytes("password"));

  @DataProvider(name = "plainSASLBindRequests")
  private Object[][] getPlainSASLBindRequests() throws Exception {
    return createModifiableInstance();
  }

  @Override
  protected PlainSASLBindRequest[] newInstance() {
    return new PlainSASLBindRequest[] {NEW_PLAIN_SASL_BIND_REQUEST, NEW_PLAIN_SASL_BIND_REQUEST2};
  }

  @Override
  protected Request copyOf(Request original) {
    return Requests.copyOfPlainSASLBindRequest((PlainSASLBindRequest) original);
  }

  @Override
  protected Request unmodifiableOf(Request original) {
    return Requests.unmodifiablePlainSASLBindRequest((PlainSASLBindRequest) original);
  }

  @Test(dataProvider = "plainSASLBindRequests")
  public void testModifiableRequest(final PlainSASLBindRequest original) {
    final String authID = "u:user.0";
    final String azID = "dn:user.0,dc=com";
    final String password = "******";

    final PlainSASLBindRequest copy = (PlainSASLBindRequest) copyOf(original);
    copy.setAuthenticationID(authID);
    copy.setAuthorizationID(azID);
    copy.setPassword(password.toCharArray());

    assertThat(copy.getAuthenticationID()).isEqualTo(authID);
    assertThat(copy.getAuthorizationID()).isEqualTo(azID);
    assertThat(original.getAuthenticationID()).isNotEqualTo(copy.getAuthenticationID());
    assertThat(original.getAuthorizationID()).isNotEqualTo(copy.getAuthorizationID());
  }

  @Test(dataProvider = "plainSASLBindRequests")
  public void testUnmodifiableRequest(final PlainSASLBindRequest original) {
    final PlainSASLBindRequest unmodifiable = (PlainSASLBindRequest) unmodifiableOf(original);
    assertThat(unmodifiable.getName()).isEqualTo(original.getName());
    assertThat(unmodifiable.getAuthorizationID()).isEqualTo(original.getAuthorizationID());
    assertThat(unmodifiable.getAuthenticationID()).isEqualTo(original.getAuthenticationID());
    assertThat(unmodifiable.getSASLMechanism()).isEqualTo(original.getSASLMechanism());
  }

  @Test(
      dataProvider = "plainSASLBindRequests",
      expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetAuthenticationID(final PlainSASLBindRequest original) {
    final PlainSASLBindRequest unmodifiable = (PlainSASLBindRequest) unmodifiableOf(original);
    unmodifiable.setAuthenticationID("dn: uid=scarter,ou=people,dc=example,dc=com");
  }

  @Test(
      dataProvider = "plainSASLBindRequests",
      expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetAuthorizationID(final PlainSASLBindRequest original) {
    final PlainSASLBindRequest unmodifiable = (PlainSASLBindRequest) unmodifiableOf(original);
    unmodifiable.setAuthorizationID("dn: uid=scarter,ou=people,dc=example,dc=com");
  }

  @Test(
      dataProvider = "plainSASLBindRequests",
      expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetPassword(final PlainSASLBindRequest original) {
    final PlainSASLBindRequest unmodifiable = (PlainSASLBindRequest) unmodifiableOf(original);
    unmodifiable.setPassword("password".toCharArray());
  }

  @Test(
      dataProvider = "plainSASLBindRequests",
      expectedExceptions = UnsupportedOperationException.class)
  public void testUnmodifiableSetPassword2(final PlainSASLBindRequest original) {
    final PlainSASLBindRequest unmodifiable = (PlainSASLBindRequest) unmodifiableOf(original);
    unmodifiable.setPassword("password".getBytes());
  }
}
コード例 #29
0
 @Override
 protected Request unmodifiableOf(Request original) {
   return Requests.unmodifiableDeleteRequest((DeleteRequest) original);
 }
コード例 #30
0
 @Override
 protected Request copyOf(Request original) {
   return Requests.copyOfDeleteRequest((DeleteRequest) original);
 }