def test_create(self, *args): set_module_args(dict(image='/path/to/BIGIP-13.0.0.0.0.1645.iso', )) current = ApiParameters( params=load_fixture('load_sys_software_image_1.json')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods in the specific type of manager mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[False, True]) mm.read_current_from_device = Mock(return_value=current) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['file_size'] == 1948
def test_tenant_remove(self, *args): set_module_args(dict( name='foo', state='absent' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[True, False]) mm.client.delete = Mock(return_value=dict(code=204, content={})) results = mm.exec_module() assert results['changed'] is True assert mm.client.delete.called
def test_vlan_delete(self, *args): set_module_args(dict( vlan_id=3333, state='absent' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) mm.exists = Mock(side_effect=[True, False]) mm.client.delete = Mock(return_value=dict(code=204, contents="")) results = mm.exec_module() assert results['changed'] is True mm.client.delete.assert_called_once_with('/openconfig-vlan:vlans/vlan=3333')
def test_vlan_create_name_provided(self, *args): set_module_args(dict( name="foobar", vlan_id=1234, state='present' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) expected = {'openconfig-vlan:vlans': {'vlan': [{'vlan-id': 1234, 'config': {'vlan-id': 1234, 'name': 'foobar'}}]}} mm = ModuleManager(module=module) mm.exists = Mock(return_value=False) mm.client.patch = Mock(return_value=dict(code=201, contents={})) results = mm.exec_module() assert results['changed'] is True assert mm.client.patch.call_args[1]['data'] == expected
def test_create(self, *args): set_module_args( dict(license_key='XXXX-XXXX-XXXX-XXXX-XXXX', accept_eula=True)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) mm.wait_for_initial_license_activation = Mock(return_value=True) mm.wait_for_utility_license_activation = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_delete_icap_service_object_dump_json(self, *args): # Configure the arguments that would be sent to the Ansible module expected = load_fixture('sslo_icap_delete_generated.json') set_module_args(dict(name='foobar', state='absent', dump_json=True)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.client.get = Mock(return_value=dict( code=200, contents=load_fixture('load_sslo_service_icap.json'))) results = mm.exec_module() assert results['changed'] is False assert results['json'] == expected
def test_invalid_timeout(self, *args): set_module_args( dict(name='defaultbip', state='configured', delay=1, sleep=3, timeout=2)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.tenant_exists = Mock(side_effect=[False, False, False]) with self.assertRaises(F5ModuleError): # exception: The combined delay and sleep should not be greater than or equal to the timeout. mm.exec_module()
def test_modify_swg_service_object_defaults(self, *args): # Configure the arguments that would be sent to the Ansible module set_module_args( dict(name='swg_default', rules=['/Common/test_rule_1', '/Common/test_rule_2'], access_profile='/Common/test_access1')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) exists = dict( code=200, contents=load_fixture('load_sslo_service_swg_default.json')) done = dict( code=200, contents=load_fixture('reply_sslo_swg_modify_defaults_done.json')) # Override methods to force specific logic in the module to happen mm.client.post = Mock(return_value=dict( code=202, contents=load_fixture( 'reply_sslo_swg_modify_defaults_start.json'))) mm.client.get = Mock(side_effect=[exists, exists, done]) results = mm.exec_module() assert results['changed'] is True assert results['access_profile'] == '/Common/test_access1' assert results['rules'] == [{ 'name': '/Common/ssloS_swg_default.app/ssloS_swg_default-swg', 'value': '/Common/ssloS_swg_default.app/ssloS_swg_default-swg' }, { 'name': '/Common/test_rule_1', 'value': '/Common/test_rule_1' }, { 'name': '/Common/test_rule_2', 'value': '/Common/test_rule_2' }]
def test_import_image(self, *args): set_module_args( dict( image_name='F5OS-C-1.1.0-3198.PARTITION.iso', remote_host='fake.imageserver.foo.bar.com', remote_user='******', remote_password='******', remote_path='/test/', state='import', )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) expected = { 'input': [{ 'protocol': 'scp', 'remote-host': 'fake.imageserver.foo.bar.com', 'remote-file': '/test/F5OS-C-1.1.0-3198.PARTITION.iso', 'username': '******', 'password': '******', 'local-file': ('/var/import/staging/', ), 'insecure': '' }] } # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.exists = Mock(return_value=False) mm.client.post = Mock(return_value=dict( code=200, contents=dict(load_fixture('start_partition_image_import.json')))) results = mm.exec_module() assert results['changed'] is True assert mm.client.post.call_args[1]['data'] == expected assert results['image_name'] == "F5OS-C-1.1.0-3198.PARTITION.iso" assert results[ 'remote_path'] == "/test/F5OS-C-1.1.0-3198.PARTITION.iso" assert results['iso_version'] == '1.1.0-3198' assert results[ 'message'] == "Image F5OS-C-1.1.0-3198.PARTITION.iso import started."
def test_wait_provisioned(self, *args): """ Transition from configured to provisioned state. """ set_module_args(dict(name='defaultbip', state='provisioned')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.tenant_exists = Mock(side_effect=[True, True]) configured_state = load_fixture('load_tenant_state_configured.json') provisioned_state = load_fixture('load_tenant_state_provisioned.json') mm.read_tenant_from_device = Mock( side_effect=[configured_state, provisioned_state]) results = mm.exec_module() assert results['changed'] is False assert mm.tenant_exists.call_count == 2 assert mm.read_tenant_from_device.call_count == 2
def test_command_with_commas(self, *args): set_module_args( dict(commands=""" tmsh create /auth ldap system-auth {bind-dn uid=binduser, cn=users,dc=domain,dc=com bind-pw $ENCRYPTEDPW check-roles-group enabled search-base-dn cn=users,dc=domain,dc=com servers add { ldap.server.com } } """)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) m1 = V2Manager(module=module) m1.execute_on_device = Mock(return_value=['resp1', 'resp2']) mm = ModuleManager(module=module) mm.get_manager = Mock(return_value=m1) results = mm.exec_module() assert results['changed'] is True
def test_create(self, *args): set_module_args( dict(regkey_pool='foo', license_key='XXXX-XXXX-XXXX-XXXX-XXXX', accept_eula=True, description='this is a description')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[False, True]) mm.create_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['description'] == 'this is a description'
def test_import_from_file(self, *args): set_module_args(dict(name='fake_policy', source=self.policy)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, mutually_exclusive=self.spec.mutually_exclusive, ) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.exists = Mock(return_value=False) mm.import_file_to_device = Mock(return_value=True) mm.remove_temp_policy_from_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['name'] == 'fake_policy' assert results['source'] == self.policy
def test_run_single_command(self, *args): set_module_args( dict(save='yes', reset='yes', merge_content='asdasd', verify='no')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exit_json = Mock(return_value=True) mm.reset_device = Mock(return_value='reset output') mm.upload_to_device = Mock(return_value=True) mm.move_on_device = Mock(return_value=True) mm.merge_on_device = Mock(return_value='merge output') mm.remove_temporary_file = Mock(return_value=True) mm.save_on_device = Mock(return_value='save output') results = mm.exec_module() assert results['changed'] is True
def test_change_password_fail(self, *args): set_module_args(dict( user_name='foo', old_password='******', new_password='******' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.client.post = Mock(return_value=dict(code=400, contents=load_fixture('password_change_error.json'))) with self.assertRaises(F5ModuleError) as err: mm.exec_module() assert 'Incorrect old password' in str(err.exception)
def test_change_password_same_password_raises(self, *args): set_module_args(dict( user_name='foo', old_password='******', new_password='******' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) with self.assertRaises(F5ModuleError) as err: mm.exec_module() assert 'Old and new password cannot be the same.' in str(err.exception) assert mm.client.post.call_count == 0
def test_remove_tenant_declaration(self, *args): set_module_args(dict( tenant='Sample_01', state='absent', )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.resource_exists = Mock(side_effect=[True, False]) mm.remove_from_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert mm.want.timeout == (3, 100)
def test_create(self, *args): set_module_args( dict(name='fake_policy', file='foobar.xml', dest='/tmp/foobar.xml')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, mutually_exclusive=self.spec.mutually_exclusive, ) mm = ModuleManager(module=module) mm.want.binary = False mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) mm.execute = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True
def test_get_facts(self, *args): set_module_args(dict(gather_subset=['system-info'], )) fixture1 = load_fixture('load_shared_system_setup_1.json') module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) tm = SystemInfoFactManager(module=module) tm.read_collection_from_device = Mock(return_value=fixture1) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.get_manager = Mock(return_value=tm) results = mm.exec_module() assert results['changed'] is True assert 'system_info' in results
def test_upsert_ts_declaration_no_change(self, *args): declaration = load_fixture('ts_declaration.json') set_module_args(dict( content=declaration, state='present', )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.read_from_device = Mock( return_value=load_fixture('ts_response.json')) results = mm.exec_module() assert results['changed'] is False
def test_start_declaration_task(self, *args): uuid = "e7550a12-994b-483f-84ee-761eb9af6750" declaration = load_fixture('do_declaration.json') set_module_args(dict(content=declaration, )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.upsert_on_device = Mock( return_value="e7550a12-994b-483f-84ee-761eb9af6750") results = mm.exec_module() assert results['changed'] is True assert results['task_id'] == uuid assert results[ 'message'] == "DO async task started with id: {0}".format(uuid)
def test_create_fast_template_set(self, *args): set_module_args(dict(source='/var/fake/fake.zip', state='present')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.create_on_device = Mock(return_value=True) mm.remove_temp_file_from_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['source'] == '/var/fake/fake.zip' assert results['name'] == 'fake'
def test_vlans_parameter_missing(self, *args): # Configure the arguments that would be sent to the Ansible module set_module_args(dict(name='l2_topo_out', topology_type='inbound_l2')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, mutually_exclusive=self.spec.mutually_exclusive, required_together=self.spec.required_together, required_if=self.spec.required_if) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.return_sslo_global = Mock(return_value=True) with self.assertRaises(F5ModuleError) as res: mm.exec_module() assert str(res.exception) == 'At least one VLAN must be defined.'
def test_invalid_delay_timeout(self, *args): set_module_args( dict( name='foo', state='running', delay=2, sleep=2, timeout=1, )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode) # Override methods to force specific logic in the module to happen mm = ModuleManager(module=module) mm.partition_exists = Mock(side_effect=[False, False, False]) with self.assertRaises(F5ModuleError): # exception: The delay should not be greater than or equal to the timeout. mm.exec_module()
def test_check_declaration_task_status(self, *args): response = (200, { "result": { "status": "FINISHED", "message": "success" } }) uuid = "e7550a12-994b-483f-84ee-761eb9af6750" set_module_args(dict(task_id=uuid, timeout=500)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm._check_task_on_device = Mock(return_value=response) results = mm.exec_module() assert results['changed'] is True assert mm.want.timeout == (5.0, 100)
def test_partition_interface_create_switched_vlan(self, *args): set_module_args(dict(name="2/1.0", trunk_vlans=[444], state='present')) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) mm.exists = Mock(return_value=True) mm.client.patch = Mock(return_value=dict(code=201, contents={})) fixdata = [] fixdata.append( load_fixture("load_velos_partition_interface_config.json")) newdata = { "openconfig-interfaces:interface": fixdata, } mm.client.get = Mock( return_value=dict(code=200, contents=dict(newdata))) results = mm.exec_module() assert results['changed'] is False
def test_create_swg_service_object_with_defaults_dump_json(self, *args): # Configure the arguments that would be sent to the Ansible module expected = load_fixture('sslo_swg_create_defaults_generated.json') set_module_args( dict(name='swg_default', swg_policy='/Common/test-swg', dump_json=True)) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) results = mm.exec_module() assert results['changed'] is False assert results['json'] == expected
def test_delete_authentication_object(self, *args): # Configure the arguments that would be sent to the Ansible module set_module_args(dict(name='foobar', state='absent'), ) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) exists = dict(code=200, contents=load_fixture('load_sslo_config_auth.json')) done = dict(code=200, contents=load_fixture('reply_sslo_auth_delete_done.json')) # Override methods to force specific logic in the module to happen mm.client.post = Mock(return_value=dict( code=202, contents=load_fixture('reply_sslo_auth_delete_start.json'))) mm.client.get = Mock(side_effect=[exists, done]) results = mm.exec_module() assert results['changed'] is True
def test_remove_fast_template(self, *args): set_module_args(dict( name='fake', state='absent', )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, required_if=self.spec.required_if, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(side_effect=[True, False]) mm.remove_from_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert results['name'] == 'fake'
def test_upsert_declaration(self, *args): declaration = load_fixture('as3_declare.json') set_module_args(dict( content=declaration, timeout=600 )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, ) mm = ModuleManager(module=module) # Override methods to force specific logic in the module to happen mm.exists = Mock(return_value=False) mm.upsert_on_device = Mock(return_value=True) results = mm.exec_module() assert results['changed'] is True assert mm.want.timeout == (6, 100)