示例#1
0
    def test_api_path(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            set_module_args(self.config_module_args.copy())
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
示例#2
0
    def test_api_extended_query_and_WHERE_or(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['extended_query'] = {
                'attributes': ['.id', 'name'],
                'where': [
                    {
                        'or': [
                            {
                                'attribute': 'name',
                                'is': 'in',
                                'value': [1, 2],
                            },
                            {
                                'attribute': 'name',
                                'is': '!=',
                                'value': 5,
                            },
                        ],
                    },
                ],
            }
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['msg'], [
            {
                '.id': '*A1',
                'name': 'dummy_bridge_A1'
            },
        ])
示例#3
0
    def test_disabled_omit(self, mock_compose_api_path):
        mock_compose_api_path.return_value = [
            {
                'chain': 'input',
                'in-interface-list': 'LAN',
                '.id': '*1',
                'dynamic': False,
            },
        ]
        with self.assertRaises(AnsibleExitJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'ip firewall filter',
                'handle_disabled': 'omit',
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['result'], [{
            'chain': 'input',
            'in-interface-list': 'LAN',
            '.id': '*1',
        }])
示例#4
0
    def test_api_extended_query(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['extended_query'] = {
                'attributes': ['.id', 'name'],
            }
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['msg'], [
            {
                '.id': '*A1',
                'name': 'dummy_bridge_A1'
            },
            {
                '.id': '*A2',
                'name': 'dummy_bridge_A2'
            },
            {
                '.id': '*A3',
                'name': 'dummy_bridge_A3'
            },
        ])
示例#5
0
 def test_command_multiple(self):
     set_module_args(
         dict(
             commands=['/system resource print', '/system resource print']))
     result = self.execute_module(changed=True)
     self.assertEqual(len(result['stdout']), 2)
     self.assertTrue('platform: "MikroTik"' in result['stdout'][0])
示例#6
0
    def test_regular_result(self, mock_compose_api_path):
        mock_compose_api_path.return_value = [
            {
                'called-format': 'mac:ssid',
                'interim-update': 'enabled',
                'mac-caching': 'disabled',
                'mac-format': 'XX:XX:XX:XX:XX:XX',
                'mac-mode': 'as-username',
                'foo': 'bar',
                '.id': '*1',
            },
        ]
        with self.assertRaises(AnsibleExitJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'caps-man aaa',
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['result'], [{
            'interim-update': 'enabled',
            '.id': '*1',
        }])
示例#7
0
    def test_module_fail_when_required_args_missing(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            set_module_args({})
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
示例#8
0
 def test_command_retries(self):
     wait_for = 'result[0] contains "test string"'
     set_module_args(
         dict(commands=['/system resource print'],
              wait_for=wait_for,
              retries=2))
     self.execute_module(failed=True)
     self.assertEqual(self.run_commands.call_count, 2)
示例#9
0
 def test_command_match_all_failure(self):
     wait_for = [
         'result[0] contains "MikroTik"', 'result[0] contains "test string"'
     ]
     commands = ['/system resource print', '/system resource print']
     set_module_args(dict(commands=commands, wait_for=wait_for,
                          match='all'))
     self.execute_module(failed=True)
    def test_facts_config(self):
        set_module_args(dict(gather_subset='config'))
        result = self.execute_module()
        self.assertIsInstance(result['ansible_facts']['ansible_net_config'],
                              str)

        self.assertIsInstance(
            result['ansible_facts']['ansible_net_config_nonverbose'], str)
 def test_command_match_any(self):
     wait_for = [
         'result[0] contains "MikroTik"', 'result[0] contains "test string"'
     ]
     set_module_args(
         dict(commands=['/system resource print'],
              wait_for=wait_for,
              match='any'))
     self.execute_module()
示例#12
0
    def test_api_remove(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['remove'] = "*A1"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], True)
示例#13
0
    def test_api_query_missing_key(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['query'] = ".id other"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
示例#14
0
    def test_api_update(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['update'] = ".id=*A1 name=unit_test_brige"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], True)
示例#15
0
    def test_api_cmd(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['cmd'] = "add name=unit_test_brige_arbitrary"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
示例#16
0
 def test_command_match_all(self):
     wait_for = [
         'result[0] contains "MikroTik"', 'result[0] contains "RB1100"'
     ]
     set_module_args(
         dict(commands=['/system resource print'],
              wait_for=wait_for,
              match='all'))
     self.execute_module(changed=True)
示例#17
0
    def test_api_query_and_WHERE_no_cond(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['query'] = ".id name WHERE name != dummy_bridge_A2"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
示例#18
0
    def test_api_cmd_none_existing_cmd(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['cmd'] = "add NONE_EXIST=unit_test_brige_arbitrary"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'][0], 'no such command')
示例#19
0
    def test_api_remove_no_id(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['remove'] = "*A2"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'][0], 'no such item (4)')
示例#20
0
    def test_api_update_none_existing_id(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['update'] = ".id=*A2 name=unit_test_brige"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'][0], 'no such item (4)')
示例#21
0
    def test_api_add_already_exist(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['add'] = "name=unit_test_brige_exist"
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'][0], 'failure: already have interface with such name')
示例#22
0
    def test_module_fail_when_invalid_gather_subset(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['gather_subset'] = ['!foobar']
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'], 'Bad subset: foobar')
 def test_facts_hardware(self):
     set_module_args(dict(gather_subset='hardware'))
     result = self.execute_module()
     self.assertEqual(result['ansible_facts']['ansible_net_spacefree_mb'],
                      64921.6)
     self.assertEqual(result['ansible_facts']['ansible_net_spacetotal_mb'],
                      65024.0)
     self.assertEqual(result['ansible_facts']['ansible_net_memfree_mb'],
                      988.3)
     self.assertEqual(result['ansible_facts']['ansible_net_memtotal_mb'],
                      1010.8)
示例#24
0
    def test_api_extended_query_missing_key(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            module_args = self.config_module_args.copy()
            module_args['extended_query'] = {
                'attributes': ['.id', 'other'],
            }
            set_module_args(module_args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['msg'], [])
示例#25
0
    def test_invalid_path(self):
        with self.assertRaises(AnsibleFailJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'something invalid'
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['failed'], True)
        self.assertEqual(result['msg'].startswith('value of path must be one of: '), True)
示例#26
0
    def test_empty_result(self, mock_compose_api_path):
        mock_compose_api_path.return_value = []
        with self.assertRaises(AnsibleExitJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'ip dns static'
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['result'], [])
 def test_facts_default(self):
     set_module_args(dict(gather_subset='default'))
     result = self.execute_module()
     self.assertEqual(result['ansible_facts']['ansible_net_hostname'],
                      'MikroTik')
     self.assertEqual(result['ansible_facts']['ansible_net_version'],
                      '6.42.5 (stable)')
     self.assertEqual(result['ansible_facts']['ansible_net_model'],
                      'RouterBOARD 3011UiAS')
     self.assertEqual(result['ansible_facts']['ansible_net_serialnum'],
                      '1234567890')
     self.assertEqual(result['ansible_facts']['ansible_net_arch'], 'x86')
     self.assertEqual(result['ansible_facts']['ansible_net_uptime'],
                      '3h28m52s')
示例#28
0
    def test_idempotent_1(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'ip dns static',
                'find': {},
                'values': {},
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], False)
        self.assertEqual(result['old_data'], START_IP_DNS_STATIC_OLD_DATA)
        self.assertEqual(result['new_data'], START_IP_DNS_STATIC_OLD_DATA)
        self.assertEqual(result['match_count'], 3)
        self.assertEqual(result['modify_count'], 0)
 def test_facts_interfaces(self):
     set_module_args(dict(gather_subset='interfaces'))
     result = self.execute_module()
     self.assertIn(
         result['ansible_facts']['ansible_net_all_ipv4_addresses'][0],
         ['10.37.129.3', '10.37.0.0', '192.168.88.1'])
     self.assertEqual(
         result['ansible_facts']['ansible_net_all_ipv6_addresses'],
         ['fe80::21c:42ff:fe36:5290'])
     self.assertEqual(
         result['ansible_facts']['ansible_net_all_ipv6_addresses'][0],
         result['ansible_facts']['ansible_net_interfaces']['ether1']['ipv6']
         [0]['address'])
     self.assertEqual(
         len(result['ansible_facts']['ansible_net_interfaces'].keys()), 11)
     self.assertEqual(len(result['ansible_facts']['ansible_net_neighbors']),
                      4)
示例#30
0
    def test_change_remove_comment_1(self):
        with self.assertRaises(AnsibleExitJson) as exc:
            args = self.config_module_args.copy()
            args.update({
                'path': 'ip dns static',
                'find': {},
                'values': {
                    'comment': None,
                },
            })
            set_module_args(args)
            self.module.main()

        result = exc.exception.args[0]
        self.assertEqual(result['changed'], True)
        self.assertEqual(result['old_data'], START_IP_DNS_STATIC_OLD_DATA)
        self.assertEqual(result['new_data'], [
            {
                '.id': '*1',
                'name': 'router',
                'address': '192.168.88.1',
                'ttl': '1d',
                'disabled': False,
                'dynamic': False,
            },
            {
                '.id': '*A',
                'name': 'router',
                'text': 'Router Text Entry',
                'ttl': '1d',
                'disabled': False,
                'dynamic': False,
            },
            {
                '.id': '*7',
                'name': 'foo',
                'address': '192.168.88.2',
                'ttl': '1d',
                'disabled': False,
                'dynamic': False,
            },
        ])
        self.assertEqual('diff' in result, False)
        self.assertEqual(result['match_count'], 3)
        self.assertEqual(result['modify_count'], 1)