@Test
  public void shouldProcessManifestFromObjectIssuingCertificate() {
    final ManifestCms manifestCms = getRootManifestCms();
    final MutableBoolean fetchManifestCalled = new MutableBoolean(false);
    final MutableBoolean processedManifestFilesCalled = new MutableBoolean(false);

    subject =
        new TopDownWalker(workQueue, certificateRepositoryObjectFetcher, validitionResult) {
          @Override
          ManifestCms fetchManifest(
              URI manifestURI, CertificateRepositoryObjectValidationContext context) {
            fetchManifestCalled.setValue(true);
            assertEquals(ta.getManifestUri(), manifestURI);
            return manifestCms;
          }

          @Override
          void processManifestFiles(
              CertificateRepositoryObjectValidationContext context, ManifestCms actualManifestCms) {
            processedManifestFilesCalled.setValue(true);
            assertEquals(ta, context.getCertificate());
            assertEquals(manifestCms, actualManifestCms);
          }
        };

    subject.processManifest(taContext);

    assertTrue(fetchManifestCalled.booleanValue());
    assertTrue(processedManifestFilesCalled.booleanValue());
  }
  @Test
  public void shouldNotProcessFilesWhenManifestIsNull() {
    when(certificateRepositoryObjectFetcher.getManifest(
            eq(ROOT_SIA_MANIFEST_RSYNC_LOCATION), eq(taContext), isA(ValidationResult.class)))
        .thenReturn(null);

    subject.processManifest(taContext);

    verify(certificateRepositoryObjectFetcher)
        .getManifest(
            eq(ROOT_SIA_MANIFEST_RSYNC_LOCATION), eq(taContext), isA(ValidationResult.class));
    verifyNoMoreInteractions(certificateRepositoryObjectFetcher);
  }