def test_list_dependency_items_in_repo(self): "Test generating a list of items from opencontrol.yaml file dependencies section" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' item_type = "systems" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # load opencontrol.yaml file items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'standards' are: ", items) self.assertTrue({ 'revision': 'master', 'url': 'https://github.com/opencontrol/cf-compliance' } in items) self.assertTrue({ 'revision': 'master', 'url': 'https://github.com/opencontrol/aws-compliance' } in items) # test certifications item_type = "certifications" items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'certfications' are: ", items) self.assertTrue( { 'revision': 'master', 'url': 'https://github.com/opencontrol/FedRAMP-Certifications' } in items) # test non-existent type item_type = "non-existent-type" items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'non-existent-type' are: ", items) self.assertTrue([] == items)
def test_resolve_ocfile_url_github(self): "Test resolution of a opencontrol.yaml url" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' correct_url = ocf.resolve_ocfile_url(repo_ref, revision) self.assertTrue( 'https://raw.githubusercontent.com/18F/cg-compliance/master/opencontrol.yaml' == correct_url)
def test_list_items_in_repo_no_key(self): "Test graceful failure of a list of items for a item_type that is not listed in opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' item_type = "standards" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # load opencontrol.yaml file items = ocf.list_items_in_repo(ocfileurl, item_type) self.assertTrue([] == items)
def test_list_items_in_repo(self): "Test generating a list of components from opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # load opencontrol.yaml file components = ocf.list_items_in_repo(ocfileurl, item_type) self.assertTrue(['./AC_Policy', './AT_Policy', './AU_Policy', './CA_Policy', './CICloudGov', './CM_Policy', './CP_Policy', './CloudCheckr', './ELKStack', './IA_Policy', './IR_Policy', './JumpBox', './MA_Policy', './MP_Policy', './PE_Policy', './PL_Policy', './PS_Policy', './RA_Policy', './SA_Policy', './SC_Policy', './SI_Policy', './SecureProxy'] == components)
def test_resolve_ocfile_url_localfile(self): "Test resolution of a opencontrol.yaml url that is a localfile" ocf = OpenControlFiles() # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo1") print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) revision = 'master' component_path = '' correct_url = ocf.resolve_ocfile_url(repo_ref, revision) self.assertTrue( "{}/{}".format(repo_ref,'opencontrol.yaml') == correct_url)
def test_resolve_ocfile_url_localfile(self): "Test resolution of a opencontrol.yaml url that is a localfile" ocf = OpenControlFiles() # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo1") print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) revision = 'master' component_path = '' correct_url = ocf.resolve_ocfile_url(repo_ref, revision) self.assertTrue( "{}/{}".format(repo_ref, 'opencontrol.yaml') == correct_url)
def test_list_standards_in_repo(self): "Test listing of standards from opencontrol.yaml file" ocf = OpenControlFiles() # test with repo on localfile system with local and remote certifications references print("\n******* test repo on localfile system ****") revision = 'master' item_type = "standards" # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) items = ocf.list_items_in_repo(ocfileurl, item_type) print("ocf.list_items_in_repo: ", items) self.assertTrue(['./standards/FRIST-800-53.yaml'] == items)
def test_list_certifications_in_repo(self): "Test generating a list of certifications from opencontrol.yaml file" ocf = OpenControlFiles() # test with repo on localfile system with local and remote certifications references print("\n******* test repo on localfile system ****") revision = 'master' item_type = "certifications" # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) items = ocf.list_items_in_repo(ocfileurl, item_type) print("ocf.list_items_in_repo: ", items) self.assertTrue('./certifications/FredRAMP-low.yaml' in items) self.assertTrue('./certifications/LATO.yaml' in items)
def test_list_items_in_repo(self): "Test generating a list of components from opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # load opencontrol.yaml file components = ocf.list_items_in_repo(ocfileurl, item_type) self.assertTrue([ './AC_Policy', './AT_Policy', './AU_Policy', './CA_Policy', './CICloudGov', './CM_Policy', './CP_Policy', './CloudCheckr', './ELKStack', './IA_Policy', './IR_Policy', './JumpBox', './MA_Policy', './MP_Policy', './PE_Policy', './PL_Policy', './PS_Policy', './RA_Policy', './SA_Policy', './SC_Policy', './SI_Policy', './SecureProxy' ] == components)
def test_parse_opencontrolfile(self): "Test retrieve and parsing of an opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) my_dict = ocf.load_ocfile_from_url(ocfileurl) print(my_dict.keys()) print("------") print(my_dict['components']) self.assertTrue(len(list(my_dict)) == 5) self.assertTrue('metadata' in list(my_dict)) self.assertTrue('dependencies' in list(my_dict)) self.assertTrue('components' in list(my_dict)) self.assertTrue('name' in list(my_dict)) self.assertTrue('schema_version' in list(my_dict))
def test_list_dependency_items_in_repo_no_dependencies(self): "Test generating a list of items from opencontrol.yaml file dependencies section" ocf = OpenControlFiles() # TODO: need better test in case Docker adds dependencies # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo_no_dependencies") revision = 'master' item_type = "dependencies" # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) # load opencontrol.yaml file items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'dependencies' are: ", items) self.assertTrue([] == items)
def test_list_dependency_items_in_repo(self): "Test generating a list of items from opencontrol.yaml file dependencies section" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' item_type = "systems" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # load opencontrol.yaml file items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'standards' are: ", items) self.assertTrue({'revision': 'master', 'url': 'https://github.com/opencontrol/cf-compliance'} in items) self.assertTrue({'revision': 'master', 'url': 'https://github.com/opencontrol/aws-compliance'} in items) # test certifications item_type = "certifications" items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'certfications' are: ", items) self.assertTrue({'revision': 'master', 'url': 'https://github.com/opencontrol/FedRAMP-Certifications'} in items) # test non-existent type item_type = "non-existent-type" items = ocf.list_dependency_items_in_repo(ocfileurl, item_type) print("test_list_dependency_items_in_repo 'non-existent-type' are: ", items) self.assertTrue([] == items)
def test_list_items_urls_in_repo(self): "Test generating a list of items (components, standards, certifications, etc) URL files from opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' # test for graceful handling of non-existent item_type item_type = "standardsx" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("repo_ref 1: %s" % repo_ref) print("ocfileurl 1: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) self.assertTrue(len(components_urls) == 0) # test for existing item_type "components" item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("repo_ref 1: %s" % repo_ref) print("ocfileurl 1: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) # print components_urls self.assertTrue(len(components_urls) == 22) self.assertTrue('https://raw.githubusercontent.com/18F/cg-compliance/master/./AC_Policy/component.yaml' in components_urls) self.assertTrue('https://raw.githubusercontent.com/18F/cg-compliance/master/./ELKStack/component.yaml' in components_urls) self.assertTrue('https://raw.githubusercontent.com/18F/cg-compliance/master/./MA_Policy/component.yaml' in components_urls) self.assertTrue('https://raw.githubusercontent.com/18F/cg-compliance/master/./CICloudGov/component.yaml' in components_urls) # test with other repo repo_ref = 'https://github.com/opencontrol/freedonia-compliance' revision = 'master' component_path = '' item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("ocfileurl 2: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print(components_urls) self.assertTrue(len(components_urls) == 1) self.assertTrue(['https://raw.githubusercontent.com/opencontrol/freedonia-compliance/master/./AU_policy/component.yaml'] == components_urls) # test for components with repo on localfile system print("\n******* test repo on localfile system ****") # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo1") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 3: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "components" components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) # components_urls = ["a", "b"] print("component_urls equal {}".format(components_urls)) expected_url = "file://{}/{}".format(dir_path, "test_data/repo1/./AU_policy/component.yaml") print("expected_url is {}".format(expected_url)) self.assertTrue([expected_url] == components_urls) # test for standards with repo on localfile system # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 4: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "standards" items_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print("items_urls equal {}".format(items_urls)) expected_url = "file://{}/{}".format(dir_path, "test_data/repo2/./standards/FRIST-800-53.yaml") print("expected_url is {}".format(expected_url)) self.assertTrue([expected_url] == items_urls) # test for certifications with repo on localfile system # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 4: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "certifications" items_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print("************\n items_urls equal {}".format(items_urls)) expected_urls = ["file://{}/{}".format(dir_path, "test_data/repo2/./certifications/FredRAMP-low.yaml"), "file://{}/{}".format(dir_path, "test_data/repo2/./certifications/LATO.yaml")] print("expected_urls is {}".format(expected_urls)) self.assertTrue("file://{}/{}".format(dir_path, "test_data/repo2/./certifications/FredRAMP-low.yaml") in items_urls) self.assertTrue("file://{}/{}".format(dir_path, "test_data/repo2/./certifications/LATO.yaml") in items_urls)
def test_list_items_urls_in_repo(self): "Test generating a list of items (components, standards, certifications, etc) URL files from opencontrol.yaml file" ocf = OpenControlFiles() repo_ref = 'https://github.com/18F/cg-compliance' revision = 'master' component_path = '' # test for graceful handling of non-existent item_type item_type = "standardsx" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("repo_ref 1: %s" % repo_ref) print("ocfileurl 1: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) self.assertTrue(len(components_urls) == 0) # test for existing item_type "components" item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("repo_ref 1: %s" % repo_ref) print("ocfileurl 1: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) # print components_urls self.assertTrue(len(components_urls) == 22) self.assertTrue( 'https://raw.githubusercontent.com/18F/cg-compliance/master/./AC_Policy/component.yaml' in components_urls) self.assertTrue( 'https://raw.githubusercontent.com/18F/cg-compliance/master/./ELKStack/component.yaml' in components_urls) self.assertTrue( 'https://raw.githubusercontent.com/18F/cg-compliance/master/./MA_Policy/component.yaml' in components_urls) self.assertTrue( 'https://raw.githubusercontent.com/18F/cg-compliance/master/./CICloudGov/component.yaml' in components_urls) # test with other repo repo_ref = 'https://github.com/opencontrol/freedonia-compliance' revision = 'master' component_path = '' item_type = "components" ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) print("ocfileurl 2: ocfileurl %s" % ocfileurl) # load opencontrol.yaml file components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print(components_urls) self.assertTrue(len(components_urls) == 1) self.assertTrue([ 'https://raw.githubusercontent.com/opencontrol/freedonia-compliance/master/./AU_policy/component.yaml' ] == components_urls) # test for components with repo on localfile system print("\n******* test repo on localfile system ****") # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo1") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 3: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "components" components_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) # components_urls = ["a", "b"] print("component_urls equal {}".format(components_urls)) expected_url = "file://{}/{}".format( dir_path, "test_data/repo1/./AU_policy/component.yaml") print("expected_url is {}".format(expected_url)) self.assertTrue([expected_url] == components_urls) # test for standards with repo on localfile system # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 4: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "standards" items_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print("items_urls equal {}".format(items_urls)) expected_url = "file://{}/{}".format( dir_path, "test_data/repo2/./standards/FRIST-800-53.yaml") print("expected_url is {}".format(expected_url)) self.assertTrue([expected_url] == items_urls) # test for certifications with repo on localfile system # construct absolute file path dir_path = os.path.dirname(os.path.realpath(__file__)) repo_ref = "file://{}/{}".format(dir_path, "test_data/repo2") # resolve the `opencontrol.yaml` file ocfileurl = ocf.resolve_ocfile_url(repo_ref, revision) # print debug info print("dir_path is {}".format(dir_path)) print("repo_ref is {}".format(repo_ref)) print("ocfileurl 4: ocfileurl %s" % ocfileurl) revision = 'master' item_type = "certifications" items_urls = ocf.list_items_urls_in_repo(ocfileurl, item_type) print("************\n items_urls equal {}".format(items_urls)) expected_urls = [ "file://{}/{}".format( dir_path, "test_data/repo2/./certifications/FredRAMP-low.yaml"), "file://{}/{}".format( dir_path, "test_data/repo2/./certifications/LATO.yaml") ] print("expected_urls is {}".format(expected_urls)) self.assertTrue("file://{}/{}".format( dir_path, "test_data/repo2/./certifications/FredRAMP-low.yaml") in items_urls) self.assertTrue("file://{}/{}".format( dir_path, "test_data/repo2/./certifications/LATO.yaml") in items_urls)