# -*- coding: utf-8 -*-

# Import Python libs
from __future__ import absolute_import

# Import Salt Testing libs
from tests.support.case import ModuleCase
from tests.support.unit import skipIf

# Import Salt Libs
import salt.utils.path
import salt.utils.platform

URL = 'repo.saltstack.com'


class NetworkTest(ModuleCase):
    '''
    Validate network module
    '''
    def test_network_ping(self):
        '''
        network.ping
        '''
        ret = self.run_function('network.ping', [URL])
        exp_out = ['ping', URL, 'ttl', 'time']
        for out in exp_out:
            self.assertIn(out, ret.lower())

    @skipIf(salt.utils.platform.is_darwin(), 'not supported on macosx')
    def test_network_netstat(self):
        '''
        network.netstat
        '''
        ret = self.run_function('network.netstat')
        exp_out = ['proto', 'local-address']
        for val in ret:
            for out in exp_out:
                self.assertIn(out, val)

    def test_network_traceroute(self):
        '''
        network.traceroute
        '''
        if not salt.utils.path.which('traceroute') and not salt.utils.platform.is_windows():
            self.skipTest('traceroute not installed')
        ret = self.run_function('network.traceroute', [URL])
        exp_out = ['hostname', 'ip']
        for out in exp_out:
            self.assertIn(out, exp_out)

    @skipIf(not salt.utils.platform.is_windows(), 'windows only test')
    def test_network_nslookup(self):
        '''
        network.nslookup
        '''
        ret = self.run_function('network.nslookup', [URL])
        exp_out = ['Server', 'Address']
        for out in exp_out:
            self.assertIn(out, exp_out)
