@Test
  public void updateTopologyConfigWhileAuthenticated() {
    final Topology mockedTopology = RandomGenerator.randomObject(Topology.class);
    final TopologyConfig requestTopologyConfig = RandomGenerator.randomObject(TopologyConfig.class);

    doReturn(mockedTopology)
        .when(topologyServiceMock)
        .getTopology(mockedTopology.getId(), TEST_SUBJECT_ID);
    doNothing()
        .when(topologyServiceMock)
        .updateTopology(mockedTopology.getId(), mockedTopology, TEST_SUBJECT_ID);

    mockAuthenticatedSubject();

    ClientResponse clientResponse =
        resource()
            .path("/api/topologies/" + mockedTopology.getId() + "/config")
            .type(MediaType.APPLICATION_JSON)
            .put(ClientResponse.class, requestTopologyConfig);

    assertEquals("Response HTTP status code should be 200 (OK)", clientResponse.getStatus(), 200);

    verify(topologyServiceMock).getTopology(mockedTopology.getId(), TEST_SUBJECT_ID);
    verify(topologyServiceMock)
        .updateTopology(mockedTopology.getId(), mockedTopology, TEST_SUBJECT_ID);
  }
  @Test
  public void getTopologyWhileAuthenticated() {
    final Topology mockedTopology = RandomGenerator.randomObject(Topology.class);

    doReturn(mockedTopology)
        .when(topologyServiceMock)
        .getTopology(mockedTopology.getId(), TEST_SUBJECT_ID);

    mockAuthenticatedSubject();

    Topology responseTopology =
        resource()
            .path("/api/topologies/" + mockedTopology.getId())
            .accept(MediaType.APPLICATION_JSON)
            .get(Topology.class);

    assertEquals(
        "Response topology should match the mocked topology", mockedTopology, responseTopology);

    verify(topologyServiceMock).getTopology(anyString(), anyString());
  }
  @Test
  public void submitTopologyWhileAuthenticated() {
    final String requestClusterId = "LOCAL";
    final String requestLogLevel = "INFO";
    final String requestClassLoaderPolicy = "FRAMEWORK_FIRST";
    final Topology mockedTopology = RandomGenerator.randomObject(Topology.class);

    doReturn(mockedTopology)
        .when(topologyServiceMock)
        .submitTopology(
            mockedTopology.getId(),
            TEST_SUBJECT_ID,
            requestClusterId,
            requestLogLevel,
            requestClassLoaderPolicy);

    mockAuthenticatedSubject();

    Topology responseTopology =
        resource()
            .path("/api/topologies/" + mockedTopology.getId() + "/submit")
            .queryParam("clusterId", requestClusterId)
            .accept(MediaType.APPLICATION_JSON)
            .get(Topology.class);

    assertEquals(
        "Response topology should match the mocked topology", mockedTopology, responseTopology);

    verify(topologyServiceMock)
        .submitTopology(
            mockedTopology.getId(),
            TEST_SUBJECT_ID,
            requestClusterId,
            requestLogLevel,
            requestClassLoaderPolicy);
  }