class TestServices(unittest.TestCase):
    def setUp(self):
        self.helper = Secure_Track_Helper("localhost",
                                          ("username", "password"))
        self.patcher = patch(
            'pytos.common.rest_requests.requests.Session.send')
        self.mock_get_uri = self.patcher.start()
        self.mock_get_uri.return_value.status_code = 200

    def tearDown(self):
        self.patcher.stop()

    def test_01_get_services_for_device(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "services")
        services = self.helper.get_services_for_device(158)
        self.assertIsInstance(services, Services_List)

    def test_02_get_service_for_device_by_name(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "services")
        with patch(
                'pytos.common.rest_requests.requests.Request') as mock_get_uri:
            service = self.helper.get_service_for_device_by_name(
                158, 'service1')
            mock_get_uri.assert_called_with(
                'GET',
                'https://localhost/securetrack/api/devices/158/services?name=service1',
                auth=('username', 'password'),
                headers={},
                params=None)

    def test_03_get_service_by_device_and_object_id(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "services")
        with patch(
                'pytos.common.rest_requests.requests.Request') as mock_get_uri:
            service = self.helper.get_service_by_device_and_object_id(
                158, 17973529)
            mock_get_uri.assert_called_with(
                'GET',
                'https://localhost/securetrack/api/devices/158/services/17973529',
                auth=('username', 'password'),
                headers={},
                params=None)

    def test_04_get_member_services_for_group_service(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        g_network_object = self.helper.get_network_objects_for_device(158)[-1]
        self.mock_get_uri.return_value.content = fake_request_response(
            "services")
        members = self.helper.get_member_network_objects_for_group_network_object(
            g_network_object, 158)
        self.assertIsInstance(members, list)
class TestNetworkObjects(unittest.TestCase):
    def setUp(self):
        self.helper = Secure_Track_Helper("localhost",
                                          ("username", "password"))
        self.patcher = patch(
            'pytos.common.rest_requests.requests.Session.send')
        self.mock_get_uri = self.patcher.start()
        self.mock_get_uri.return_value.status_code = 200

    def tearDown(self):
        self.patcher.stop()

    def test_01_get_network_objects_for_device(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        network_objects = self.helper.get_network_objects_for_device(158)
        self.assertIsInstance(network_objects, Network_Objects_List)

    def test_02_network_object_text_search(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        with patch(
                'pytos.common.rest_requests.requests.Request') as mock_get_uri:
            network_objects = self.helper.network_object_text_search(
                "192.168", "any_field")
            mock_get_uri.assert_called_with(
                'GET',
                'https://localhost/securetrack/api/network_objects/search?filter=text&any_field=192.168',
                auth=('username', 'password'),
                headers={},
                params=None)
        self.assertIsInstance(network_objects, Network_Objects_List)

    def test_03_network_object_subnet_search(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        with patch(
                'pytos.common.rest_requests.requests.Request') as mock_get_uri:
            network_objects = self.helper.network_object_subnet_search(
                "192.168.0.0", "contained_in")
            mock_get_uri.assert_called_with(
                'GET',
                'https://localhost/securetrack/api/network_objects/search?filter=subnet&contained_in=192.168.0.0',
                auth=('username', 'password'),
                headers={},
                params=None)

    # def test_04_get_network_objects(self):
    #     network_objects = self.helper.get_network_objects()
    #     self.assertIsInstance(network_objects, dict)
    #     self.assertTrue(len(network_objects) > 0)
    #
    def test_04_get_network_object_by_device_and_object_id(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        with patch(
                'pytos.common.rest_requests.requests.Request') as mock_get_uri:
            network_object = self.helper.get_network_object_by_device_and_object_id(
                158, 3418214)
            mock_get_uri.assert_called_with(
                'GET',
                'https://localhost/securetrack/api/devices/158/network_objects/3418214',
                auth=('username', 'password'),
                headers={},
                params=None)

    def test_05_get_member_network_objects_for_group_network_object(self):
        self.mock_get_uri.return_value.content = fake_request_response(
            "network_objects")
        g_network_object = self.helper.get_network_objects_for_device(158)[-1]
        members = self.helper.get_member_network_objects_for_group_network_object(
            g_network_object, 158)
        self.assertIsInstance(members, list)