@Test
public void testDocsWithProcessors() throws IOException {

    final ExtensionManifest extensionManifest = parse("src/test/resources/descriptors/extension-manifest-hadoop-nar.xml");
    assertNotNull(extensionManifest);
    assertEquals("1.10.0-SNAPSHOT", extensionManifest.getSystemApiVersion());
    final List<Extension> extensionDetails = extensionManifest.getExtensions();
    assertEquals(10, extensionDetails.size());
    final Extension putHdfsExtension = extensionDetails.stream()
            .filter(e -> e.getName().equals("org.apache.nifi.processors.hadoop.PutHDFS"))
            .findFirst()
            .orElse(null);
    assertNotNull(putHdfsExtension);
    assertEquals(ExtensionType.PROCESSOR, putHdfsExtension.getType());
    assertEquals("Write FlowFile data to Hadoop Distributed File System (HDFS)", putHdfsExtension.getDescription());
    assertEquals(5, putHdfsExtension.getTags().size());
    assertTrue(putHdfsExtension.getTags().contains("hadoop"));
    assertTrue(putHdfsExtension.getTags().contains("HDFS"));
    assertTrue(putHdfsExtension.getTags().contains("put"));
    assertTrue(putHdfsExtension.getTags().contains("copy"));
    assertTrue(putHdfsExtension.getTags().contains("filesystem"));
    assertNull(putHdfsExtension.getProvidedServiceAPIs());
    assertNotNull(putHdfsExtension.getProperties());
    assertEquals(15, putHdfsExtension.getProperties().size());
    assertNull(putHdfsExtension.getRestricted().getGeneralRestrictionExplanation());
    final List<Restriction> restrictions = putHdfsExtension.getRestricted().getRestrictions();
    assertNotNull(restrictions);
    assertEquals(1, restrictions.size());
    final Restriction restriction = restrictions.stream().findFirst().orElse(null);
    assertEquals("write filesystem", restriction.getRequiredPermission());
    assertEquals("Provides operator the ability to delete any file that NiFi has access to in HDFS or\n" +
            "                            the local filesystem.", restriction.getExplanation().trim());
}