def test_filtered_datapoint_True(self): """Tests if run_one_datapoint=false returns all data points""" settings.run_one_datapoint = False self.assertEqual(len(generate_strings_list()), 7) self.assertEqual(len(invalid_emails_list()), 8) self.assertEqual(len(invalid_id_list()), 4) self.assertEqual(len(invalid_interfaces_list()), 8) self.assertEqual(len(invalid_names_list()), 7) self.assertEqual(len(invalid_values_list()), 10) self.assertEqual(len(invalid_usernames_list()), 4) self.assertEqual(len(valid_labels_list()), 2) self.assertEqual(len(valid_data_list()), 7) self.assertEqual(len(valid_emails_list()), 8) self.assertEqual(len(valid_environments_list()), 4) self.assertEqual(len(valid_hosts_list()), 3) self.assertEqual(len(valid_hostgroups_list()), 7) self.assertEqual(len(valid_interfaces_list()), 3) self.assertEqual(len(valid_names_list()), 15) self.assertEqual(len(valid_org_names_list()), 7) self.assertEqual(len(valid_usernames_list()), 6) with mock.patch('robottelo.datafactory.bz_bug_is_open', return_value=True): self.assertEqual(len(valid_docker_repository_names()), 6) with mock.patch('robottelo.datafactory.bz_bug_is_open', return_value=False): self.assertEqual(len(valid_docker_repository_names()), 7)
def test_filtered_datapoint_True(self): """Tests if run_one_datapoint=false returns all data points""" settings.run_one_datapoint = False self.assertEqual(len(generate_strings_list()), 7) self.assertEqual(len(invalid_emails_list()), 8) self.assertEqual(len(invalid_id_list()), 4) self.assertEqual(len(invalid_interfaces_list()), 8) self.assertEqual(len(invalid_names_list()), 7) self.assertEqual(len(invalid_values_list()), 10) self.assertEqual(len(invalid_usernames_list()), 4) self.assertEqual(len(valid_labels_list()), 2) self.assertEqual(len(valid_data_list()), 7) self.assertEqual(len(valid_emails_list()), 8) self.assertEqual(len(valid_environments_list()), 4) self.assertEqual(len(valid_hosts_list()), 3) self.assertEqual(len(valid_hostgroups_list()), 7) self.assertEqual(len(valid_interfaces_list()), 3) self.assertEqual(len(valid_names_list()), 15) self.assertEqual(len(valid_org_names_list()), 7) self.assertEqual(len(valid_usernames_list()), 6) self.assertEqual(len((valid_cron_expressions())), 4) with mock.patch('robottelo.datafactory.bz_bug_is_open', return_value=True): self.assertEqual(len(valid_docker_repository_names()), 6) with mock.patch('robottelo.datafactory.bz_bug_is_open', return_value=False): self.assertEqual(len(valid_docker_repository_names()), 7)
def test_positive_update_name(self): """Create a Docker-type repository and update its name. :id: 64878d14-39ed-44fd-9a71-5923edaa6e3d :expectedresults: A repository is created with a Docker upstream repository and that its name can be updated. :CaseImportance: Critical """ with Session(self) as session: name = gen_string('alphanumeric') product = entities.Product( organization=self.organization).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name)) for new_name in valid_docker_repository_names(): with self.subTest(new_name): self.repository.update(name, new_name=new_name) self.products.search_and_click(product.name) self.assertIsNotNone(self.repository.search(new_name)) name = new_name
def test_positive_delete(self): """Create and delete a Docker-type repository :id: 725a0f6b-67c5-4a59-a7b9-2308333a42bd :expectedresults: A repository is created with a Docker upstream repository and then deleted. :CaseImportance: Critical """ with Session(self) as session: for name in valid_docker_repository_names(): with self.subTest(name): product = entities.Product( organization=self.organization ).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name)) self.repository.delete(name) self.assertIsNone(self.repository.search(name))
def test_positive_update_name(self): """Create a Docker-type repository and update its name. :id: 64878d14-39ed-44fd-9a71-5923edaa6e3d :expectedresults: A repository is created with a Docker upstream repository and that its name can be updated. :CaseImportance: Critical """ with Session(self) as session: name = gen_string('alphanumeric') product = entities.Product(organization=self.organization).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name)) for new_name in valid_docker_repository_names(): with self.subTest(new_name): self.repository.update(name, new_name=new_name) self.products.search_and_click(product.name) self.assertIsNotNone(self.repository.search(new_name)) name = new_name
def test_filtered_datapoint(self, run_one_datapoint): """Tests if run_one_datapoint=false returns all data points""" if run_one_datapoint: assert len(datafactory.generate_strings_list()) == 1 assert len(datafactory.invalid_emails_list()) == 1 assert len(datafactory.invalid_environments_list()) == 1 assert len(datafactory.invalid_id_list()) == 1 assert len(datafactory.invalid_interfaces_list()) == 1 assert len(datafactory.invalid_names_list()) == 1 assert len(datafactory.invalid_values_list()) == 1 assert len(datafactory.valid_data_list()) == 1 assert len(datafactory.valid_docker_repository_names()) == 1 assert len(datafactory.valid_emails_list()) == 1 assert len(datafactory.valid_environments_list()) == 1 assert len(datafactory.valid_hosts_list()) == 1 assert len(datafactory.valid_hostgroups_list()) == 1 assert len(datafactory.valid_interfaces_list()) == 1 assert len(datafactory.valid_labels_list()) == 1 assert len(datafactory.valid_names_list()) == 1 assert len(datafactory.valid_org_names_list()) == 1 assert len(datafactory.valid_usernames_list()) == 1 assert len(datafactory.valid_cron_expressions()) == 1 else: assert len(datafactory.generate_strings_list()) == 7 assert len(datafactory.invalid_emails_list()) == 8 assert len(datafactory.invalid_environments_list()) == 4 assert len(datafactory.invalid_id_list()) == 4 assert len(datafactory.invalid_interfaces_list()) == 8 assert len(datafactory.invalid_names_list()) == 7 assert len(datafactory.invalid_values_list()) == 10 assert len(datafactory.invalid_usernames_list()) == 4 assert len(datafactory.valid_labels_list()) == 2 assert len(datafactory.valid_data_list()) == 7 assert len(datafactory.valid_emails_list()) == 8 assert len(datafactory.valid_environments_list()) == 4 assert len(datafactory.valid_hosts_list()) == 3 assert len(datafactory.valid_hostgroups_list()) == 7 assert len(datafactory.valid_interfaces_list()) == 3 assert len(datafactory.valid_names_list()) == 15 assert len(datafactory.valid_org_names_list()) == 7 assert len(datafactory.valid_usernames_list()) == 6 assert len(datafactory.valid_cron_expressions()) == 4 assert len(datafactory.valid_docker_repository_names()) == 7
def test_return_type(self): """This test validates return types for functions: 1. :meth:`robottelo.datafactory.generate_strings_list` 2. :meth:`robottelo.datafactory.invalid_emails_list` 3. :meth:`robottelo.datafactory.invalid_names_list` 4. :meth:`robottelo.datafactory.valid_data_list` 5. :meth:`robottelo.datafactory.valid_docker_repository_names` 6. :meth:`robottelo.datafactory.valid_emails_list` 7. :meth:`robottelo.datafactory.valid_environments_list` 8. :meth:`robottelo.datafactory.valid_hosts_list` 9. :meth:`robottelo.datafactory.valid_hostgroups_list` 10. :meth:`robottelo.datafactory.valid_labels_list` 11. :meth:`robottelo.datafactory.valid_names_list` 12. :meth:`robottelo.datafactory.valid_org_names_list` 13. :meth:`robottelo.datafactory.valid_usernames_list` 14. :meth:`robottelo.datafactory.invalid_id_list` 15. :meth:`robottelo.datafactory.invalid_interfaces_list` 16. :meth:`robottelo.datafactory.valid_interfaces_list` 17. :meth:`robottelo.datafactory.valid_cron_expressions` """ with mock.patch('robottelo.datafactory.bz_bug_is_open', return_value=False): for item in itertools.chain( generate_strings_list(), invalid_emails_list(), invalid_interfaces_list(), invalid_names_list(), valid_data_list(), valid_docker_repository_names(), valid_emails_list(), valid_environments_list(), valid_hosts_list(), valid_hostgroups_list(), valid_interfaces_list(), valid_labels_list(), valid_names_list(), valid_org_names_list(), valid_cron_expressions(), valid_usernames_list()): self.assertIsInstance(item, six.text_type) for item in invalid_id_list(): if not ( isinstance(item, (six.text_type, int)) or item is None ): self.fail('Unexpected data type')
def test_return_type(self): """This test validates return types for functions: 1. :meth:`robottelo.datafactory.generate_strings_list` 2. :meth:`robottelo.datafactory.invalid_emails_list` 3. :meth:`robottelo.datafactory.invalid_environments_list` 4. :meth:`robottelo.datafactory.invalid_names_list` 5. :meth:`robottelo.datafactory.valid_data_list` 6. :meth:`robottelo.datafactory.valid_docker_repository_names` 7. :meth:`robottelo.datafactory.valid_emails_list` 8. :meth:`robottelo.datafactory.valid_environments_list` 9. :meth:`robottelo.datafactory.valid_hosts_list` 10. :meth:`robottelo.datafactory.valid_hostgroups_list` 11. :meth:`robottelo.datafactory.valid_labels_list` 12. :meth:`robottelo.datafactory.valid_names_list` 13. :meth:`robottelo.datafactory.valid_org_names_list` 14. :meth:`robottelo.datafactory.valid_usernames_list` 15. :meth:`robottelo.datafactory.invalid_id_list` 16. :meth:`robottelo.datafactory.invalid_interfaces_list` 17. :meth:`robottelo.datafactory.valid_interfaces_list` 18. :meth:`robottelo.datafactory.valid_cron_expressions` """ for item in itertools.chain( datafactory.generate_strings_list(), datafactory.invalid_emails_list(), datafactory.invalid_environments_list(), datafactory.invalid_interfaces_list(), datafactory.invalid_names_list(), datafactory.valid_data_list(), datafactory.valid_docker_repository_names(), datafactory.valid_emails_list(), datafactory.valid_environments_list(), datafactory.valid_hosts_list(), datafactory.valid_hostgroups_list(), datafactory.valid_interfaces_list(), datafactory.valid_labels_list(), datafactory.valid_names_list(), datafactory.valid_org_names_list(), datafactory.valid_cron_expressions(), datafactory.valid_usernames_list(), ): assert isinstance(item, str) for item in datafactory.invalid_id_list(): if not (isinstance(item, (str, int)) or item is None): pytest.fail('Unexpected data type')
def test_positive_create_with_name(self): """Create one Docker-type repository :id: 3360aab2-74f3-4f6e-a083-46498ceacad2 :expectedresults: A repository is created with a Docker upstream repository. :CaseImportance: Critical """ for name in valid_docker_repository_names(): with self.subTest(name): repo = _create_repository( entities.Product(organization=self.org).create(), name) self.assertEqual(repo.name, name) self.assertEqual(repo.docker_upstream_name, 'busybox') self.assertEqual(repo.content_type, 'docker')
def test_positive_update_name(self): """Create a Docker-type repository and update its name. :id: 7967e6b5-c206-4ad0-bcf5-64a7ce85233b :expectedresults: A repository is created with a Docker upstream repository and that its name can be updated. :CaseImportance: Critical """ repo = _create_repository( entities.Product(organization=self.org).create()) # Update the repository name to random value for new_name in valid_docker_repository_names(): with self.subTest(new_name): repo.name = new_name repo = repo.update() self.assertEqual(repo.name, new_name)
def test_filtered_datapoint_False(self): """Tests if run_one_datapoint=True returns one data point""" settings.run_one_datapoint = True self.assertEqual(len(generate_strings_list()), 1) self.assertEqual(len(invalid_emails_list()), 1) self.assertEqual(len(invalid_id_list()), 1) self.assertEqual(len(invalid_interfaces_list()), 1) self.assertEqual(len(invalid_names_list()), 1) self.assertEqual(len(invalid_values_list()), 1) self.assertEqual(len(valid_data_list()), 1) self.assertEqual(len(valid_docker_repository_names()), 1) self.assertEqual(len(valid_emails_list()), 1) self.assertEqual(len(valid_environments_list()), 1) self.assertEqual(len(valid_hosts_list()), 1) self.assertEqual(len(valid_hostgroups_list()), 1) self.assertEqual(len(valid_interfaces_list()), 1) self.assertEqual(len(valid_labels_list()), 1) self.assertEqual(len(valid_names_list()), 1) self.assertEqual(len(valid_org_names_list()), 1) self.assertEqual(len(valid_usernames_list()), 1)
def test_filtered_datapoint_False(self): """Tests if run_one_datapoint=True returns one data point""" settings.run_one_datapoint = True self.assertEqual(len(generate_strings_list()), 1) self.assertEqual(len(invalid_emails_list()), 1) self.assertEqual(len(invalid_id_list()), 1) self.assertEqual(len(invalid_interfaces_list()), 1) self.assertEqual(len(invalid_names_list()), 1) self.assertEqual(len(invalid_values_list()), 1) self.assertEqual(len(valid_data_list()), 1) self.assertEqual(len(valid_docker_repository_names()), 1) self.assertEqual(len(valid_emails_list()), 1) self.assertEqual(len(valid_environments_list()), 1) self.assertEqual(len(valid_hosts_list()), 1) self.assertEqual(len(valid_hostgroups_list()), 1) self.assertEqual(len(valid_interfaces_list()), 1) self.assertEqual(len(valid_labels_list()), 1) self.assertEqual(len(valid_names_list()), 1) self.assertEqual(len(valid_org_names_list()), 1) self.assertEqual(len(valid_usernames_list()), 1)
def test_positive_create_with_name(self): """Create one Docker-type repository using different names :id: 233f39b5-ec75-4035-a45f-0f37a40bbdfe :expectedresults: A repository is created with a Docker upstream repository. :CaseImportance: Critical """ with Session(self) as session: for name in valid_docker_repository_names(): with self.subTest(name): product = entities.Product( organization=self.organization).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name))
def test_filtered_datapoint_True(self): """Tests if run_one_datapoint=false returns all data points""" settings.run_one_datapoint = False self.assertEqual(len(generate_strings_list()), 7) self.assertEqual(len(invalid_emails_list()), 8) self.assertEqual(len(invalid_id_list()), 4) self.assertEqual(len(invalid_interfaces_list()), 8) self.assertEqual(len(invalid_names_list()), 7) self.assertEqual(len(invalid_values_list()), 10) self.assertEqual(len(invalid_usernames_list()), 4) self.assertEqual(len(valid_labels_list()), 2) self.assertEqual(len(valid_data_list()), 7) self.assertEqual(len(valid_emails_list()), 8) self.assertEqual(len(valid_environments_list()), 4) self.assertEqual(len(valid_hosts_list()), 3) self.assertEqual(len(valid_hostgroups_list()), 7) self.assertEqual(len(valid_interfaces_list()), 3) self.assertEqual(len(valid_names_list()), 15) self.assertEqual(len(valid_org_names_list()), 7) self.assertEqual(len(valid_usernames_list()), 6) self.assertEqual(len((valid_cron_expressions())), 4) self.assertEqual(len(valid_docker_repository_names()), 7)
def test_positive_create_with_name(self): """Create one Docker-type repository using different names :id: 233f39b5-ec75-4035-a45f-0f37a40bbdfe :expectedresults: A repository is created with a Docker upstream repository. :CaseImportance: Critical """ with Session(self) as session: for name in valid_docker_repository_names(): with self.subTest(name): product = entities.Product( organization=self.organization ).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name))
def test_positive_delete(self): """Create and delete a Docker-type repository :id: 725a0f6b-67c5-4a59-a7b9-2308333a42bd :expectedresults: A repository is created with a Docker upstream repository and then deleted. :CaseImportance: Critical """ with Session(self) as session: for name in valid_docker_repository_names(): with self.subTest(name): product = entities.Product( organization=self.organization).create() _create_repository( session, org=self.organization.name, name=name, product=product.name, ) self.assertIsNotNone(self.repository.search(name)) self.repository.delete(name) self.assertIsNone(self.repository.search(name))
class TestDockerRepository: """Tests specific to performing CRUD methods against ``Docker`` repositories. :CaseComponent: Repositories :Assignee: tpapaioa """ @pytest.mark.tier1 @pytest.mark.parametrize('name', **parametrized(valid_docker_repository_names())) def test_positive_create_with_name(self, module_product, name): """Create one Docker-type repository :id: 3360aab2-74f3-4f6e-a083-46498ceacad2 :parametrized: yes :expectedresults: A repository is created with a Docker upstream repository. :CaseImportance: Critical """ repo = _create_repository(module_product, name) assert repo.name == name assert repo.docker_upstream_name == CONTAINER_UPSTREAM_NAME assert repo.content_type == 'docker' @pytest.mark.tier1 @pytest.mark.parametrize('upstream_name', **parametrized(valid_docker_upstream_names())) def test_positive_create_with_upstream_name(self, module_product, upstream_name): """Create a Docker-type repository with a valid docker upstream name :id: 742a2118-0ab2-4e63-b978-88fe9f52c034 :parametrized: yes :expectedresults: A repository is created with the specified upstream name. :CaseImportance: Critical """ repo = _create_repository(module_product, upstream_name=upstream_name) assert repo.docker_upstream_name == upstream_name assert repo.content_type == 'docker' @pytest.mark.tier1 @pytest.mark.parametrize('upstream_name', **parametrized(invalid_docker_upstream_names())) def test_negative_create_with_invalid_upstream_name( self, module_product, upstream_name): """Create a Docker-type repository with a invalid docker upstream name. :id: 2c5abb4a-e50b-427a-81d2-57eaf8f57a0f :parametrized: yes :expectedresults: A repository is not created and a proper error is raised. :CaseImportance: Critical """ with pytest.raises(HTTPError): _create_repository(module_product, upstream_name=upstream_name) @pytest.mark.tier2 def test_positive_create_repos_using_same_product(self, module_product): """Create multiple Docker-type repositories :id: 4a6929fc-5111-43ff-940c-07a754828630 :expectedresults: Multiple docker repositories are created with a Docker usptream repository and they all belong to the same product. :CaseLevel: Integration """ for _ in range(randint(2, 5)): repo = _create_repository(module_product) assert repo.id in [ repo_.id for repo_ in module_product.read().repository ] @pytest.mark.tier2 def test_positive_create_repos_using_multiple_products(self, module_org): """Create multiple Docker-type repositories on multiple products :id: 5a65d20b-d3b5-4bd7-9c8f-19c8af190558 :expectedresults: Multiple docker repositories are created with a Docker upstream repository and they all belong to their respective products. :CaseLevel: Integration """ for _ in range(randint(2, 5)): product = entities.Product(organization=module_org).create() for _ in range(randint(2, 3)): repo = _create_repository(product) product = product.read() assert repo.id in [repo_.id for repo_ in product.repository] @pytest.mark.tier1 def test_positive_sync(self, module_product): """Create and sync a Docker-type repository :id: 80fbcd84-1c6f-444f-a44e-7d2738a0cba2 :expectedresults: A repository is created with a Docker repository and it is synchronized. :CaseImportance: Critical """ repo = _create_repository(module_product) repo.sync(timeout=600) repo = repo.read() assert repo.content_counts['docker_manifest'] >= 1 @pytest.mark.tier1 @pytest.mark.parametrize('new_name', **parametrized(valid_docker_repository_names())) def test_positive_update_name(self, module_product, repo, new_name): """Create a Docker-type repository and update its name. :id: 7967e6b5-c206-4ad0-bcf5-64a7ce85233b :parametrized: yes :expectedresults: A repository is created with a Docker upstream repository and that its name can be updated. :CaseImportance: Critical """ repo.name = new_name repo = repo.update() assert repo.name == new_name @pytest.mark.tier1 def test_positive_update_upstream_name(self, repo): """Create a Docker-type repository and update its upstream name. :id: 4e2fb78d-0b6a-4455-8869-8eaf9d4a61b0 :expectedresults: A repository is created with a Docker upstream repository and that its upstream name can be updated. :CaseImportance: Critical """ assert repo.docker_upstream_name == CONTAINER_UPSTREAM_NAME # Update the repository upstream name new_upstream_name = 'fedora/ssh' repo.docker_upstream_name = new_upstream_name repo = repo.update() assert repo.docker_upstream_name == new_upstream_name @pytest.mark.tier2 def test_positive_update_url(self, module_product, repo): """Create a Docker-type repository and update its URL. :id: 6a588e65-bf1d-4ca9-82ce-591f9070215f :expectedresults: A repository is created with a Docker upstream repository and that its URL can be updated. :BZ: 1489322 """ assert repo.url == CONTAINER_REGISTRY_HUB # Update the repository URL new_url = gen_url() repo.url = new_url repo = repo.update() assert repo.url == new_url assert repo.url != CONTAINER_REGISTRY_HUB @pytest.mark.tier1 def test_positive_delete(self, repo): """Create and delete a Docker-type repository :id: 92df93cb-9de2-40fa-8451-b8c1ba8f45be :expectedresults: A repository is created with a Docker upstream repository and then deleted. :CaseImportance: Critical """ # Delete it repo.delete() with pytest.raises(HTTPError): repo.read() @pytest.mark.tier2 def test_positive_delete_random_repo(self, module_org): """Create Docker-type repositories on multiple products and delete a random repository from a random product. :id: cbc2792d-cf81-41f7-8889-001a27e4dd66 :expectedresults: Random repository can be deleted from random product without altering the other products. """ repos = [] products = [ entities.Product(organization=module_org).create() for _ in range(randint(2, 5)) ] for product in products: repo = _create_repository(product) assert repo.content_type == 'docker' repos.append(repo) # Delete a random repository shuffle(repos) repo = repos.pop() repo.delete() with pytest.raises(HTTPError): repo.read() # Check if others repositories are not touched for repo in repos: repo = repo.read() assert repo.product.id in [prod.id for prod in products]