def test_positive_update_ak5(self): """@Test: Update Content View in an Activation key @Feature: Activation key - Positive Update @Steps: 1. Create Activation key 2. Update Content View for all variations in [1] and include both RH and custom products @Assert: Activation key is updated """ activation_key = self._make_activation_key() for content_view_name in valid_data_list(): with self.subTest(content_view_name): con_view = make_content_view({ u'name': content_view_name, u'organization-id': self.org['id'], }) ActivationKey.update({ u'content-view': con_view['name'], u'name': activation_key['name'], u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({ 'id': activation_key['id'], }) self.assertEqual( activation_key['content-view'], content_view_name)
def test_positive_update_ak_2(self): """@Test: Update Activation Key Name in an Activation key searching by name @Feature: Activation key - Positive Update @Steps: 1. Create Activation key 2. Update Activation key name for all variations in [1] @Assert: Activation key is updated """ for name in valid_data_list(): with self.subTest(name): activation_key = self._make_activation_key() ActivationKey.update({ u'name': activation_key['name'], u'new-name': name, u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({ 'id': activation_key['id'], }) self.assertEqual(activation_key['name'], name)
def test_positive_update_ak_3(self): """@Test: Update Description in an Activation key @Feature: Activation key - Positive Update @Steps: 1. Create Activation key 2. Update Description for all variations in [1] @Assert: Activation key is updated """ for description in valid_data_list(): with self.subTest(description): activation_key = self._make_activation_key() ActivationKey.update({ u'description': description, u'name': activation_key['name'], u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({ 'id': activation_key['id'], }) self.assertEqual(activation_key['description'], description)
def test_positive_update_lce(self): """Update Environment in an Activation key :id: 55aaee60-b8c8-49f0-995a-6c526b9b653b :expectedresults: Activation key is updated :CaseLevel: Integration """ ak_env = self._make_activation_key({ u'lifecycle-environment-id': self.get_default_env()['id'], }) env = make_lifecycle_environment({u'organization-id': self.org['id']}) new_cv = make_content_view({u'organization-id': self.org['id']}) ContentView.publish({u'id': new_cv['id']}) cvv = ContentView.info({u'id': new_cv['id']})['versions'][0] ContentView.version_promote({ u'id': cvv['id'], u'to-lifecycle-environment-id': env['id'], }) ActivationKey.update({ u'id': ak_env['id'], u'lifecycle-environment-id': env['id'], u'content-view': new_cv['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': ak_env['id']}) self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
def test_positive_update_autoattach_toggle(self): """Update Activation key with inverse auto-attach value :id: de3b5fb7-7963-420a-b4c9-c66e78a111dc :Steps: 1. Get the key's current auto attach value. 2. Update the key with the value's inverse. 3. Verify key was updated. :expectedresults: Activation key is successfully copied :CaseImportance: Critical """ new_ak = self._make_activation_key() attach_value = new_ak['auto-attach'] # invert value new_value = u'false' if attach_value == u'true' else u'true' ActivationKey.update({ u'auto-attach': new_value, u'id': new_ak['id'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['auto-attach'], new_value)
def test_update_autoattach_1(self): """@Test: Update Activation key with inverse auto-attach value @Feature: Activation key update / info @Steps: 1. Get the key's current auto attach value. 2. Update the key with the value's inverse. 3. Verify key was updated. @Assert: Activation key is sucessfully copied """ org_id = make_org(cached=True)['id'] key = make_activation_key( {u'organization-id': org_id}, cached=True, ) attach_value = key['auto-attach'] # invert value new_value = u'false' if attach_value == u'true' else u'true' ActivationKey.update({ u'auto-attach': new_value, u'id': key['id'], u'organization-id': org_id, }) attach_value = ActivationKey.info({ u'id': key['id'], u'organization-id': org_id, })['auto-attach'] self.assertEqual(attach_value, new_value)
def test_positive_create_using_old_name(self): """Create activation key, rename it and create another with the initial name :id: 9801319a-f42c-41a4-9ea4-3718e544c8e0 :expectedresults: Activation key is created :CaseImportance: Critical """ name = gen_string('utf8') activation_key = self._make_activation_key({'name': name}) new_name = gen_string('utf8') ActivationKey.update({ u'id': activation_key['id'], u'new-name': new_name, u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(activation_key['name'], new_name) new_activation_key = self._make_activation_key({ u'name': name, u'organization-id': self.org['id'], }) self.assertEqual(new_activation_key['name'], name)
def test_bugzilla_1111723(self): """@test: Create activation key, rename it and create another with the initial name @feature: Activation key - Positive Create @steps: 1. Create an activation key 2. Rename it 3. Create another activation key with the same name from step 1 @assert: Activation key is created """ name = gen_string('utf8') activation_key = self._make_activation_key({'name': name}) new_name = gen_string('utf8') ActivationKey.update({ u'id': activation_key['id'], u'new-name': new_name, u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(activation_key['name'], new_name) new_activation_key = self._make_activation_key({ u'name': name, u'organization-id': self.org['id'], }) self.assertEqual(new_activation_key['name'], name)
def test_negative_update_auto_attach(self): """@Test: Attempt to update Activation key with bad auto-attach value @Feature: Activation key update / info @Steps: 1. Attempt to update a key with incorrect auto-attach value 2. Verify that an appropriate error message was returned @Assert: Activation key is successfully copied """ org_id = make_org(cached=True)['id'] key_id = make_activation_key( {u'organization-id': org_id}, cached=True, )['id'] with self.assertRaises(CLIReturnCodeError) as exe: ActivationKey.update({ u'auto-attach': gen_string('utf8'), u'id': key_id, u'organization-id': org_id, }) self.assertIn( u"'--auto-attach': value must be one of", exe.exception.stderr)
def test_positive_update_lce(self): """@Test: Update Environment in an Activation key @Feature: Activation key - Positive Update @Assert: Activation key is updated """ ak_env = self._make_activation_key({ u'lifecycle-environment-id': self.get_default_env()['id'], }) env = make_lifecycle_environment({u'organization-id': self.org['id']}) new_cv = make_content_view({u'organization-id': self.org['id']}) ContentView.publish({u'id': new_cv['id']}) cvv = ContentView.info({u'id': new_cv['id']})['versions'][0] ContentView.version_promote({ u'id': cvv['id'], u'to-lifecycle-environment-id': env['id'], }) ActivationKey.update({ u'id': ak_env['id'], u'lifecycle-environment-id': env['id'], u'content-view': new_cv['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': ak_env['id']}) self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
def test_positive_update_lce(self): """Update Environment in an Activation key @Feature: Activation key - Positive Update @Assert: Activation key is updated """ ak_env = self._make_activation_key({ u'lifecycle-environment-id': self.get_default_env()['id'], }) env = make_lifecycle_environment({u'organization-id': self.org['id']}) new_cv = make_content_view({u'organization-id': self.org['id']}) ContentView.publish({u'id': new_cv['id']}) cvv = ContentView.info({u'id': new_cv['id']})['versions'][0] ContentView.version_promote({ u'id': cvv['id'], u'to-lifecycle-environment-id': env['id'], }) ActivationKey.update({ u'id': ak_env['id'], u'lifecycle-environment-id': env['id'], u'content-view': new_cv['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': ak_env['id']}) self.assertEqual(updated_ak['lifecycle-environment'], env['name'])
def test_negative_update_name(self): """Try to update Activation Key using invalid value for its name @Feature: Activation key - Negative Update @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() for name in invalid_values_list(): with self.subTest(name): with self.assertRaises(CLIReturnCodeError): ActivationKey.update({u"id": new_ak["id"], u"new-name": name, u"organization-id": self.org["id"]})
def test_positive_update_usage_limit_to_unlimited(self): """Update Usage limit from definite number to Unlimited @Feature: Activation key - Positive Update @Assert: Activation key is updated """ new_ak = self._make_activation_key({u"unlimited-content-hosts": "0", u"max-content-hosts": "10"}) self.assertEqual(new_ak["content-host-limit"], u"10") ActivationKey.update( {u"unlimited-content-hosts": "1", u"name": new_ak["name"], u"organization-id": self.org["id"]} ) updated_ak = ActivationKey.info({"id": new_ak["id"]}) self.assertEqual(updated_ak["content-host-limit"], u"Unlimited")
def test_negative_update_usage_limit(self): """Try to update Activation Key using invalid value for its usage limit attribute @id: cb5fa263-924c-471f-9c57-9506117ca92d @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'max-hosts': int('9' * 20), u'id': new_ak['id'], u'organization-id': self.org['id'], })
def test_negative_update_usage_limit(self): """Try to update Activation Key using invalid value for its usage limit attribute @Feature: Activation key - Negative Update @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'max-content-hosts': int('9' * 20), u'id': new_ak['id'], u'organization-id': self.org['id'], })
def test_positive_update_cv(self): """Update Content View in an Activation key @Feature: Activation key - Positive Update @Assert: Activation key is updated """ cv = make_content_view({u"organization-id": self.org["id"]}) ak_cv = self._make_activation_key({u"content-view-id": cv["id"]}) new_cv = make_content_view({u"organization-id": self.org["id"]}) ActivationKey.update( {u"content-view": new_cv["name"], u"name": ak_cv["name"], u"organization-id": self.org["id"]} ) updated_ak = ActivationKey.info({"id": ak_cv["id"]}) self.assertEqual(updated_ak["content-view"], new_cv["name"])
def test_positive_update_description(self): """Update Description in an Activation key @Feature: Activation key - Positive Update @Assert: Activation key is updated """ activation_key = self._make_activation_key() for description in valid_data_list(): with self.subTest(description): ActivationKey.update( {u"description": description, u"name": activation_key["name"], u"organization-id": self.org["id"]} ) updated_ak = ActivationKey.info({"id": activation_key["id"]}) self.assertEqual(updated_ak["description"], description)
def test_positive_update_name_by_name(self): """Update Activation Key Name in an Activation key searching by name @Feature: Activation key - Positive Update @Assert: Activation key is updated """ new_name = gen_string("alpha") activation_key = self._make_activation_key() ActivationKey.update( {u"name": activation_key["name"], u"new-name": new_name, u"organization-id": self.org["id"]} ) updated_ak = ActivationKey.info({"id": activation_key["id"]}) self.assertEqual(updated_ak["name"], new_name)
def test_positive_update_name_by_id(self): """Update Activation Key Name in Activation key searching by ID @Feature: Activation key - Positive Update @Assert: Activation key is updated """ activation_key = self._make_activation_key() for name in valid_data_list(): with self.subTest(name): ActivationKey.update( {u"id": activation_key["id"], u"new-name": name, u"organization-id": self.org["id"]} ) updated_ak = ActivationKey.info({"id": activation_key["id"]}) self.assertEqual(updated_ak["name"], name)
def test_negative_update_description(self): """Try to update Activation Key using invalid value for its description @Feature: Activation key - Negative Update @BZ: 1177158 @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError): ActivationKey.update( {u"id": new_ak["id"], u"description": gen_string("alpha", 1001), u"organization-id": self.org["id"]} )
def test_negative_update_name(self): """Try to update Activation Key using invalid value for its name @Feature: Activation key - Negative Update @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() for name in invalid_values_list(): with self.subTest(name): with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'id': new_ak['id'], u'new-name': name, u'organization-id': self.org['id'], })
def test_positive_update_usage_limit_to_finite_number(self): """Update Usage limit from Unlimited to a finite number @Feature: Activation key - Positive Update @Assert: Activation key is updated """ new_ak = self._make_activation_key() self.assertEqual(new_ak['host-limit'], u'Unlimited') ActivationKey.update({ u'max-content-hosts': '2147483647', u'name': new_ak['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['host-limit'], u'2147483647')
def test_positive_update_usage_limit_to_finite_number(self): """Update Usage limit from Unlimited to a finite number @Feature: Activation key - Positive Update @Assert: Activation key is updated """ new_ak = self._make_activation_key() self.assertEqual(new_ak['content-host-limit'], u'Unlimited') ActivationKey.update({ u'max-content-hosts': '2147483647', u'name': new_ak['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['content-host-limit'], u'2147483647')
def test_update_autoattach_2(self): """@Test: Update Activation key with valid auto-attach values @Feature: Activation key update / info @Steps: 1. Update the key with a valid value 2. Verify key was updated. @Assert: Activation key is successfully copied """ org_id = make_org(cached=True)['id'] key_id = make_activation_key( {u'organization-id': org_id}, cached=True, )['id'] for new_value in (u'1', u'0', u'true', u'false', u'yes', u'no'): with self.subTest(new_value): result = ActivationKey.update({ u'auto-attach': new_value, u'id': key_id, u'organization-id': org_id, }) self.assertEqual( u'Activation key updated', result[0]['message'])
def test_positive_update_usage_limit_to_finite_number(self): """Update Usage limit from Unlimited to a finite number @id: a55bb8dc-c7d8-4a6a-ac0f-1d5a377da543 @Assert: Activation key is updated """ new_ak = self._make_activation_key() self.assertEqual(new_ak['host-limit'], u'Unlimited') ActivationKey.update({ u'max-hosts': '2147483647', u'name': new_ak['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['host-limit'], u'2147483647')
def test_positive_update_activation_key_5(self, test_data): """@Test: Update Content View in an Activation key @Feature: Activation key - Positive Update @Steps: 1. Create Activation key 2. Update Content View for all variations in [1] and include both RH and custom products @Assert: Activation key is updated """ try: activation_key = self._make_activation_key({u"organization-id": self.org["id"]}) con_view = make_content_view({u"organization-id": self.org["id"], u"name": test_data["content-view"]}) except CLIFactoryError as err: self.fail(err) result = ActivationKey.update( {u"name": activation_key["name"], u"content-view": con_view["name"], u"organization-id": self.org["id"]} ) self.assertEqual(result.return_code, 0, "Failed to update activation key") self.assertEqual(len(result.stderr), 0, "There should not be an error here") result = ActivationKey.info({u"id": activation_key["id"]}) self.assertEqual(result.return_code, 0, "Failed to get info for activation key") self.assertEqual(len(result.stderr), 0, "There should not be an error here") self.assertEqual( result.stdout["content-view"], test_data["content-view"], "Activation key content-view was not updated" )
def test_positive_update_activation_key_3(self, test_data): """@Test: Update Description in an Activation key @Feature: Activation key - Positive Update @Steps: 1. Create Activation key 2. Update Description for all variations in [1] @Assert: Activation key is updated @bz: 1109649 """ try: activation_key = self._make_activation_key({u"organization-id": self.org["id"]}) except CLIFactoryError as err: self.fail(err) result = ActivationKey.update( { u"name": activation_key["name"], u"description": test_data["description"], u"organization-id": self.org["id"], } ) self.assertEqual(result.return_code, 0, "Failed to update activation key") self.assertEqual(len(result.stderr), 0, "There should not be an error here") result = ActivationKey.info({u"id": activation_key["id"]}) self.assertEqual(result.return_code, 0, "Failed to get info for activation key") self.assertEqual(len(result.stderr), 0, "There should not be an error here") self.assertEqual( result.stdout["description"], test_data["description"], "Activation key description was not updated" )
def test_positive_create_using_old_name(self): """Create activation key, rename it and create another with the initial name @Feature: Activation key - Positive Create @Assert: Activation key is created """ name = gen_string("utf8") activation_key = self._make_activation_key({"name": name}) new_name = gen_string("utf8") ActivationKey.update({u"id": activation_key["id"], u"new-name": new_name, u"organization-id": self.org["id"]}) activation_key = ActivationKey.info({"id": activation_key["id"]}) self.assertEqual(activation_key["name"], new_name) new_activation_key = self._make_activation_key({u"name": name, u"organization-id": self.org["id"]}) self.assertEqual(new_activation_key["name"], name)
def test_negative_update_name(self): """Try to update Activation Key using invalid value for its name @id: b75e7c38-fde2-4110-ba65-4157319fc159 @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() for name in invalid_values_list(): with self.subTest(name): with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'id': new_ak['id'], u'new-name': name, u'organization-id': self.org['id'], })
def test_negative_update_description(self): """Try to update Activation Key using invalid value for its description @Feature: Activation key - Negative Update @BZ: 1177158 @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'id': new_ak['id'], u'description': gen_string('alpha', 1001), u'organization-id': self.org['id'], })
def test_positive_update_cv(self): """Update Content View in an Activation key @Feature: Activation key - Positive Update @Assert: Activation key is updated """ cv = make_content_view({u'organization-id': self.org['id']}) ak_cv = self._make_activation_key({u'content-view-id': cv['id']}) new_cv = make_content_view({u'organization-id': self.org['id']}) ActivationKey.update({ u'content-view': new_cv['name'], u'name': ak_cv['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': ak_cv['id']}) self.assertEqual(updated_ak['content-view'], new_cv['name'])
def test_positive_update_name_by_name(self): """Update Activation Key Name in an Activation key searching by name @id: bce4533e-1a58-4edb-a51a-4aa46bc28676 @Assert: Activation key is updated """ new_name = gen_string('alpha') activation_key = self._make_activation_key() ActivationKey.update({ u'name': activation_key['name'], u'new-name': new_name, u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(updated_ak['name'], new_name)
def test_positive_update_description(self): """Update Description in an Activation key @id: 60a4e860-d99c-431e-b70b-9b0fa90d839b @Assert: Activation key is updated """ activation_key = self._make_activation_key() for description in valid_data_list(): with self.subTest(description): ActivationKey.update({ u'description': description, u'name': activation_key['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(updated_ak['description'], description)
def test_positive_update_name_by_id(self): """Update Activation Key Name in Activation key searching by ID @id: bc304894-fd9b-4622-96e3-57c2257e26ca @Assert: Activation key is updated """ activation_key = self._make_activation_key() for name in valid_data_list(): with self.subTest(name): ActivationKey.update({ u'id': activation_key['id'], u'new-name': name, u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(updated_ak['name'], name)
def test_negative_update_description(self): """@Test: Try to update Activation Key using invalid value for its description @Feature: Activation key - Negative Update @BZ: 1177158 @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError): ActivationKey.update({ u'id': new_ak['id'], u'description': gen_string('alpha', 1001), u'organization-id': self.org['id'], })
def test_positive_update_usage_limit_to_unlimited(self): """Update Usage limit from definite number to Unlimited @id: 0b83657b-41d1-4fb2-9c23-c36011322b83 @Assert: Activation key is updated """ new_ak = self._make_activation_key({ u'max-hosts': '10', }) self.assertEqual(new_ak['host-limit'], u'10') ActivationKey.update({ u'unlimited-hosts': True, u'name': new_ak['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['host-limit'], u'Unlimited')
def test_positive_update_cv(self): """Update Content View in an Activation key :id: aa94997d-fc9b-4532-aeeb-9f27b9834914 :expectedresults: Activation key is updated :CaseLevel: Integration """ cv = make_content_view({u'organization-id': self.org['id']}) ak_cv = self._make_activation_key({u'content-view-id': cv['id']}) new_cv = make_content_view({u'organization-id': self.org['id']}) ActivationKey.update({ u'content-view': new_cv['name'], u'name': ak_cv['name'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': ak_cv['id']}) self.assertEqual(updated_ak['content-view'], new_cv['name'])
def test_negative_update_usage_limit(self): """Try to update Activation Key using invalid value for its usage limit attribute @id: cb5fa263-924c-471f-9c57-9506117ca92d @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError) as raise_ctx: ActivationKey.update({ u'max-hosts': int('9' * 20), u'id': new_ak['id'], u'organization-id': self.org['id'], }) self.assert_error_msg( raise_ctx, u'Validation failed: Max hosts must be less than 2147483648' )
def test_negative_update_name(self): """Try to update Activation Key using invalid value for its name @id: b75e7c38-fde2-4110-ba65-4157319fc159 @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() for name in invalid_values_list(): with self.subTest(name), self.assertRaises( CLIReturnCodeError) as raise_ctx: ActivationKey.update({ u'id': new_ak['id'], u'new-name': name, u'organization-id': self.org['id'], }) self.assert_error_msg( raise_ctx, u'Could not update the activation key:' )
def test_negative_update_autoattach(self): """Attempt to update Activation key with bad auto-attach value @id: 54b6f808-ff54-4e69-a54d-e1f99a4652f9 @Steps: 1. Attempt to update a key with incorrect auto-attach value 2. Verify that an appropriate error message was returned @Assert: Activation key is not updated. Appropriate error shown. """ new_ak = self._make_activation_key() with self.assertRaises(CLIReturnCodeError) as exe: ActivationKey.update({ u'auto-attach': gen_string('utf8'), u'id': new_ak['id'], u'organization-id': self.org['id'], }) self.assertIn( u"'--auto-attach': value must be one of", exe.exception.stderr)
def test_positive_create_using_old_name(self): """Create activation key, rename it and create another with the initial name @Feature: Activation key - Positive Create @Assert: Activation key is created """ name = gen_string('utf8') activation_key = self._make_activation_key({'name': name}) new_name = gen_string('utf8') ActivationKey.update({ u'id': activation_key['id'], u'new-name': new_name, u'organization-id': self.org['id'], }) activation_key = ActivationKey.info({'id': activation_key['id']}) self.assertEqual(activation_key['name'], new_name) new_activation_key = self._make_activation_key({ u'name': name, u'organization-id': self.org['id'], }) self.assertEqual(new_activation_key['name'], name)
def test_positive_update_autoattach_toggle(self): """Update Activation key with inverse auto-attach value @Feature: Activation key update / info @Steps: 1. Get the key's current auto attach value. 2. Update the key with the value's inverse. 3. Verify key was updated. @Assert: Activation key is successfully copied """ new_ak = self._make_activation_key() attach_value = new_ak['auto-attach'] # invert value new_value = u'false' if attach_value == u'true' else u'true' ActivationKey.update({ u'auto-attach': new_value, u'id': new_ak['id'], u'organization-id': self.org['id'], }) updated_ak = ActivationKey.info({'id': new_ak['id']}) self.assertEqual(updated_ak['auto-attach'], new_value)
def test_positive_update_autoattach(self): """Update Activation key with valid auto-attach values @id: 9e18b950-6f0f-4f82-a3ac-ef6aba950a78 @Assert: Activation key is successfully updated """ new_ak = self._make_activation_key() for new_value in (u'1', u'0', u'true', u'false', u'yes', u'no'): with self.subTest(new_value): result = ActivationKey.update({ u'auto-attach': new_value, u'id': new_ak['id'], u'organization-id': self.org['id'], }) self.assertEqual( u'Activation key updated', result[0]['message'])
def test_positive_restore_content_hosts_with_modified_subscription(self): """Restore content hosts subscription from an exported content host csv file with modified subscription. :id: d8ac08fe-24e0-41e7-b3d8-0ca13a702a64 :customerscenario: true :steps: 1. Setup activation key , lifecycle environment and content view with RH tools repository 2. Setup hosts (minimum two) and subscribe them to activation key 3. Attach RH subscription to the created content hosts 4. Export the organization content hosts to a csv file 5. Create a new csv file and modify the subscription with an other one (the new subscription must have other data than the default one) 6. Import the new csv file to organization content hosts :expectedresults: content hosts restored with the new subscription :BZ: 1296978 :CaseImportance: Critical """ lce = make_lifecycle_environment({'organization-id': self.org['id']}) activation_key = make_activation_key({ 'organization-id': self.org['id'], 'lifecycle-environment-id': lce['id'], }) ActivationKey.update({ 'organization-id': self.org['id'], 'id': activation_key['id'], 'auto-attach': 'false', }) # Create RH tools repository and contents, this step should upload # the default manifest setup_org_for_a_rh_repo( { 'product': PRDS['rhel'], 'repository-set': REPOSET['rhst7'], 'repository': REPOS['rhst7']['name'], 'organization-id': self.org['id'], 'lifecycle-environment-id': lce['id'], 'activationkey-id': activation_key['id'], }, force_use_cdn=True) # Export and download the organization subscriptions to prepare the new # subscription (The replacement of the default subscription) org_subs_csv_filename = 'subs_{0}.csv'.format(self.org['name']) org_subs_csv_remote_file_path = '/tmp/{0}'.format( org_subs_csv_filename) # export organization subscription to csv file CSV_.subscriptions({ 'export': True, 'file': org_subs_csv_remote_file_path, 'organization': self.org['name'], }) # download the organization subscriptions org_subs_csv_local_file_path = os.path.join(tempfile.gettempdir(), org_subs_csv_filename) download_file(org_subs_csv_remote_file_path, org_subs_csv_local_file_path) _, org_subscriptions = self._read_csv_file( org_subs_csv_local_file_path) new_subscription = None for sub in org_subscriptions: if sub['Subscription Name'] == SATELLITE_SUBSCRIPTION_NAME: new_subscription = sub break self.assertIsNotNone(new_subscription) # retrieve the default subscription id org_subs = Subscription.list({u'organization-id': self.org['id']}) default_subscription_id = None for sub in org_subs: if sub['name'] == DEFAULT_SUBSCRIPTION_NAME: default_subscription_id = sub['id'] break self.assertIsNotNone(default_subscription_id, msg='Default subscription not found') # create 2 Virtual machines with VirtualMachine() as client1, VirtualMachine() as client2: hosts = [] for client in [client1, client2]: client.install_katello_ca() client.register_contenthost( self.org['label'], activation_key=activation_key['name']) self.assertTrue(client.subscribed) host = Host.info({'name': client.hostname}) hosts.append(host) Host.subscription_attach({ 'host-id': host['id'], 'subscription-id': default_subscription_id, }) host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertEqual(len(host_subscriptions), 1) self.assertEqual(host_subscriptions[0]['name'], DEFAULT_SUBSCRIPTION_NAME) # export the content host data to csv file chs_export_file_name = 'chs_export_{0}.csv'.format( self.org['label']) chs_export_remote_file_path = ( '/tmp/{0}'.format(chs_export_file_name)) CSV_.content_hosts({ 'export': True, 'file': chs_export_remote_file_path, 'organization': self.org['name'], }) # download the csv file chs_export_local_file_path = os.path.join(tempfile.gettempdir(), chs_export_file_name) download_file(chs_export_remote_file_path, chs_export_local_file_path) # modify the content hosts subscription field_names, csv_data = self._read_csv_file( chs_export_local_file_path) # each client is represented by one row of data self.assertEqual(len(csv_data), 2) for row_data in csv_data: # The subscription is saved in the following format: # """<quantity>|<sku>|<name>|<contract>|<account>""" subscription_data = row_data['Subscriptions'].strip('"').split( '|') # change the subscription SKU (looks like RH00001) subscription_data[1] = new_subscription['Subscription SKU'] # change the name subscription_data[2] = new_subscription['Subscription Name'] # change the contract number subscription_data[3] = new_subscription[ 'Subscription Contract'] # change the subscription account subscription_data[4] = new_subscription['Subscription Account'] # modify the subscription data row_data['Subscriptions'] = '"{0}"'.format( '|'.join(subscription_data)) # generate a new csv file chs_import_file_name = 'chs_import_{0}.csv'.format( self.org['name']) chs_import_local_file_path = os.path.join(tempfile.gettempdir(), chs_import_file_name) self._write_csv_file(chs_import_local_file_path, field_names, csv_data) # upload the file chs_import_remote_file_path = ( '/tmp/{0}'.format(chs_import_file_name)) upload_file(chs_import_local_file_path, chs_import_remote_file_path) # import content hosts data from csv file CSV_.content_hosts({ 'file': chs_import_remote_file_path, 'organization': self.org['name'], }) for host in hosts: host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertEqual(len(host_subscriptions), 1) self.assertEqual(host_subscriptions[0]['name'], SATELLITE_SUBSCRIPTION_NAME) self.assertEqual(host_subscriptions[0]['contract'], new_subscription['Subscription Contract']) self.assertEqual(host_subscriptions[0]['account'], new_subscription['Subscription Account'])
def test_positive_restore_ak_and_content_hosts_subscriptions(self): """Restore activation key and content hosts subscriptions :id: a44fdeda-9c8c-4316-85b4-a9b6b9f1ffdb :customerscenario: true :steps: 1. Setup activation key , lifecycle environment and content view with RH repository 2. Add RH subscription to activation key 3. Setup hosts (minimum two) and subscribe them to activation key 4. Attach RH subscription to the created content hosts 5. export the activation key and content hosts subscriptions 6. Delete the subscription manifest 7. Ensure that the activation key and content hosts subscriptions does not exist 8. Upload the subscription manifest 9. Ensure the activation key and content hosts subscriptions does not exist 10. Restore the activation key and content hosts subscriptions :expectedresults: activation key and content hosts subscriptions restored :CaseImportance: Critical """ lce = make_lifecycle_environment({'organization-id': self.org['id']}) activation_key = make_activation_key({ 'organization-id': self.org['id'], 'lifecycle-environment-id': lce['id'], }) ActivationKey.update({ 'organization-id': self.org['id'], 'id': activation_key['id'], 'auto-attach': 'false', }) setup_org_for_a_rh_repo( { 'product': PRDS['rhel'], 'repository-set': REPOSET['rhst7'], 'repository': REPOS['rhst7']['name'], 'organization-id': self.org['id'], 'lifecycle-environment-id': lce['id'], 'activationkey-id': activation_key['id'], }, force_use_cdn=True) org_subs = Subscription.list({u'organization-id': self.org['id']}) default_subscription_id = None for sub in org_subs: if sub['name'] == DEFAULT_SUBSCRIPTION_NAME: default_subscription_id = sub['id'] break self.assertIsNotNone(default_subscription_id, msg='Default subscription not found') ak_subs = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], }, output_format='json') self.assertIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in ak_subs]) with VirtualMachine() as client1, VirtualMachine() as client2: hosts = [] for client in [client1, client2]: client.install_katello_ca() client.register_contenthost( self.org['label'], activation_key=activation_key['name']) self.assertTrue(client.subscribed) host = Host.info({'name': client.hostname}) hosts.append(host) Host.subscription_attach({ 'host-id': host['id'], 'subscription-id': default_subscription_id, }) host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in host_subscriptions]) # export the current activations and content hosts subscriptions ak_file_path = '/tmp/ak_{0}.csv'.format(self.org['label']) ch_file_path = '/tmp/content_hosts_{0}.csv'.format( self.org['label']) CSV_.activation_keys({ 'export': True, 'file': ak_file_path, 'organization': self.org['name'], 'itemized-subscriptions': True, }) CSV_.content_hosts({ 'export': True, 'file': ch_file_path, 'organization': self.org['name'], 'itemized-subscriptions': True, }) # delete the manifest Subscription.delete_manifest({'organization-id': self.org['id']}) # ensure that the subscription does not exist any more ak_subs = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], }, output_format='json') self.assertNotIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in ak_subs]) for host in hosts: host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertNotIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in host_subscriptions]) # upload the manifest again self._upload_manifest(self.org['id']) # ensure that the subscription was not auto attached ak_subs = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], }, output_format='json') self.assertNotIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in ak_subs]) for host in hosts: host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertNotIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in host_subscriptions]) # restore from the saved activation key and content hosts # subscriptions CSV_.activation_keys({ 'file': ak_file_path, 'organization': self.org['name'], 'itemized-subscriptions': True, }) CSV_.content_hosts({ 'file': ch_file_path, 'organization': self.org['name'], 'itemized-subscriptions': True, }) # ensure that the subscriptions has been restored ak_subs = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], }, output_format='json') self.assertIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in ak_subs]) for host in hosts: host_subscriptions = ActivationKey.subscriptions( { 'organization-id': self.org['id'], 'id': activation_key['id'], 'host-id': host['id'], }, output_format='json') self.assertIn(DEFAULT_SUBSCRIPTION_NAME, [sub['name'] for sub in host_subscriptions])