|
@@ -19,10 +19,11 @@ import sys
|
|
|
import unittest
|
|
import unittest
|
|
|
|
|
|
|
|
from datetime import timedelta
|
|
from datetime import timedelta
|
|
|
-from nose.tools import assert_equal, assert_false, assert_true, assert_raises
|
|
|
|
|
|
|
+from nose.tools import assert_equal, assert_true, assert_raises
|
|
|
|
|
|
|
|
from desktop.conf import RAZ
|
|
from desktop.conf import RAZ
|
|
|
from desktop.lib.raz.raz_client import RazToken, RazClient, get_raz_client
|
|
from desktop.lib.raz.raz_client import RazToken, RazClient, get_raz_client
|
|
|
|
|
+from desktop.lib.exceptions_renderable import PopupException
|
|
|
|
|
|
|
|
if sys.version_info[0] > 2:
|
|
if sys.version_info[0] > 2:
|
|
|
from unittest.mock import patch, Mock
|
|
from unittest.mock import patch, Mock
|
|
@@ -36,55 +37,60 @@ class RazTokenTest(unittest.TestCase):
|
|
|
self.username = 'gethue'
|
|
self.username = 'gethue'
|
|
|
|
|
|
|
|
def test_create(self):
|
|
def test_create(self):
|
|
|
- kerb_auth = Mock()
|
|
|
|
|
|
|
+ with patch('desktop.lib.raz.raz_client.requests_kerberos.HTTPKerberosAuth') as HTTPKerberosAuth:
|
|
|
|
|
+ token = RazToken(raz_url='https://raz.gethue.com:8080', auth_type='kerberos')
|
|
|
|
|
|
|
|
- token = RazToken(raz_url='https://raz.gethue.com:8080', auth_handler=kerb_auth)
|
|
|
|
|
|
|
+ assert_equal('raz.gethue.com', token.raz_hostname)
|
|
|
|
|
+ assert_equal('8080', token.raz_port)
|
|
|
|
|
+ assert_equal('https', token.scheme)
|
|
|
|
|
+ assert_equal('kerberos', token.auth_type)
|
|
|
|
|
|
|
|
- assert_equal('raz.gethue.com', token.raz_hostname)
|
|
|
|
|
- assert_equal('8080', token.raz_port)
|
|
|
|
|
- assert_equal('https', token.scheme)
|
|
|
|
|
|
|
|
|
|
def test_get_delegation_token(self):
|
|
def test_get_delegation_token(self):
|
|
|
- kerb_auth = Mock()
|
|
|
|
|
|
|
+ with patch('desktop.lib.raz.raz_client.requests_kerberos.HTTPKerberosAuth') as HTTPKerberosAuth:
|
|
|
|
|
+ with patch('desktop.lib.raz.raz_client.requests.get') as requests_get:
|
|
|
|
|
+ with patch('desktop.lib.raz.raz_client.socket.gethostbyname') as gethostbyname:
|
|
|
|
|
+ with patch('desktop.lib.raz.raz_client.fetch_jwt') as fetch_jwt:
|
|
|
|
|
+
|
|
|
|
|
+ gethostbyname.return_value = '128.0.0.1'
|
|
|
|
|
+ requests_get.return_value = Mock(
|
|
|
|
|
+ text='{"Token":{"urlString":"f3VLQVkuBCfGSyOLzI9PoxqHTjANUzMgZGVsZWdhdGlvbhExMC44MC4xNjQuMzc6NjA4Mg"}}'
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
- with patch('desktop.lib.raz.raz_client.requests.get') as requests_get:
|
|
|
|
|
- with patch('desktop.lib.raz.raz_client.socket.gethostbyname') as gethostbyname:
|
|
|
|
|
- requests_get.return_value = Mock(
|
|
|
|
|
- text='{"Token":{"urlString":"https://gethue-test.s3.amazonaws.com/gethue/data/customer.csv?' + \
|
|
|
|
|
- 'AWSAccessKeyId=AKIA23E77ZX2HVY76YGL' + \
|
|
|
|
|
- '&Signature=3lhK%2BwtQ9Q2u5VDIqb4MEpoY3X4%3D&Expires=1617207304"}}'
|
|
|
|
|
- )
|
|
|
|
|
- gethostbyname.return_value = '128.0.0.1'
|
|
|
|
|
|
|
+ # When auth type is Kerberos
|
|
|
|
|
+ token = RazToken(raz_url='https://raz.gethue.com:8080', auth_type='kerberos')
|
|
|
|
|
+ t = token.get_delegation_token(user=self.username)
|
|
|
|
|
|
|
|
- token = RazToken(raz_url='https://raz.gethue.com:8080', auth_handler=kerb_auth)
|
|
|
|
|
|
|
+ fetch_jwt.assert_not_called()
|
|
|
|
|
+ assert_equal('f3VLQVkuBCfGSyOLzI9PoxqHTjANUzMgZGVsZWdhdGlvbhExMC44MC4xNjQuMzc6NjA4Mg', t)
|
|
|
|
|
|
|
|
- t = token.get_delegation_token(user=self.username)
|
|
|
|
|
|
|
+ # When auth type is JWT
|
|
|
|
|
+ fetch_jwt.return_value = 'test_jwt_token'
|
|
|
|
|
|
|
|
- assert_equal(
|
|
|
|
|
- 'https://gethue-test.s3.amazonaws.com/gethue/data/customer.csv?AWSAccessKeyId=AKIA23E77ZX2HVY76YGL&'
|
|
|
|
|
- 'Signature=3lhK%2BwtQ9Q2u5VDIqb4MEpoY3X4%3D&Expires=1617207304',
|
|
|
|
|
- t
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ token = RazToken(raz_url='https://raz.gethue.com:8080', auth_type='jwt')
|
|
|
|
|
+ t = token.get_delegation_token(user=self.username)
|
|
|
|
|
|
|
|
- def test_renew_delegation_token(self):
|
|
|
|
|
- kerb_auth = Mock()
|
|
|
|
|
|
|
+ fetch_jwt.assert_called()
|
|
|
|
|
+ assert_equal('f3VLQVkuBCfGSyOLzI9PoxqHTjANUzMgZGVsZWdhdGlvbhExMC44MC4xNjQuMzc6NjA4Mg', t)
|
|
|
|
|
+
|
|
|
|
|
+ fetch_jwt.return_value = None # Should raise PopupException
|
|
|
|
|
|
|
|
|
|
+ token = RazToken(raz_url='https://raz.gethue.com:8080', auth_type='jwt')
|
|
|
|
|
+ assert_raises(PopupException, token.get_delegation_token, user=self.username)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ def test_renew_delegation_token(self):
|
|
|
with patch('desktop.lib.raz.raz_client.requests.get') as requests_get:
|
|
with patch('desktop.lib.raz.raz_client.requests.get') as requests_get:
|
|
|
with patch('desktop.lib.raz.raz_client.socket.gethostbyname') as gethostbyname:
|
|
with patch('desktop.lib.raz.raz_client.socket.gethostbyname') as gethostbyname:
|
|
|
requests_get.return_value = Mock(
|
|
requests_get.return_value = Mock(
|
|
|
- text='{"Token":{"urlString":"https://gethue-test.s3.amazonaws.com/gethue/data/customer.csv?' + \
|
|
|
|
|
- 'AWSAccessKeyId=AKIA23E77ZX2HVY76YGL' + \
|
|
|
|
|
- '&Signature=3lhK%2BwtQ9Q2u5VDIqb4MEpoY3X4%3D&Expires=1617207304"}}'
|
|
|
|
|
|
|
+ text='{"Token":{"urlString":"f3VLQVkuBCfGSyOLzI9PoxqHTjANUzMgZGVsZWdhdGlvbhExMC44MC4xNjQuMzc6NjA4Mg"}}'
|
|
|
)
|
|
)
|
|
|
gethostbyname.return_value = '128.0.0.1'
|
|
gethostbyname.return_value = '128.0.0.1'
|
|
|
- token = RazToken(raz_url='https://raz.gethue.com:8080', auth_handler=kerb_auth)
|
|
|
|
|
|
|
+ token = RazToken(raz_url='https://raz.gethue.com:8080', auth_type='kerberos')
|
|
|
|
|
|
|
|
t = token.renew_delegation_token(user=self.username)
|
|
t = token.renew_delegation_token(user=self.username)
|
|
|
|
|
|
|
|
- assert_equal(t,
|
|
|
|
|
- 'https://gethue-test.s3.amazonaws.com/gethue/data/customer.csv?AWSAccessKeyId=AKIA23E77ZX2HVY76YGL&'
|
|
|
|
|
- 'Signature=3lhK%2BwtQ9Q2u5VDIqb4MEpoY3X4%3D&Expires=1617207304'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ assert_equal(t, 'f3VLQVkuBCfGSyOLzI9PoxqHTjANUzMgZGVsZWdhdGlvbhExMC44MC4xNjQuMzc6NjA4Mg')
|
|
|
|
|
|
|
|
with patch('desktop.lib.raz.raz_client.requests.put') as requests_put:
|
|
with patch('desktop.lib.raz.raz_client.requests.put') as requests_put:
|
|
|
token.init_time += timedelta(hours=9)
|
|
token.init_time += timedelta(hours=9)
|
|
@@ -107,22 +113,20 @@ class RazClientTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_get_raz_client_adls(self):
|
|
def test_get_raz_client_adls(self):
|
|
|
with patch('desktop.lib.raz.raz_client.RazToken') as RazToken:
|
|
with patch('desktop.lib.raz.raz_client.RazToken') as RazToken:
|
|
|
- with patch('desktop.lib.raz.raz_client.requests_kerberos.HTTPKerberosAuth') as HTTPKerberosAuth:
|
|
|
|
|
- client = get_raz_client(
|
|
|
|
|
- raz_url=self.raz_url,
|
|
|
|
|
- username=self.username,
|
|
|
|
|
- auth='kerberos',
|
|
|
|
|
- service='adls',
|
|
|
|
|
- service_name='gethue_adls',
|
|
|
|
|
- cluster_name='gethueCluster'
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ client = get_raz_client(
|
|
|
|
|
+ raz_url=self.raz_url,
|
|
|
|
|
+ username=self.username,
|
|
|
|
|
+ auth='kerberos',
|
|
|
|
|
+ service='adls',
|
|
|
|
|
+ service_name='gethue_adls',
|
|
|
|
|
+ cluster_name='gethueCluster'
|
|
|
|
|
+ )
|
|
|
|
|
|
|
|
- assert_true(isinstance(client, RazClient))
|
|
|
|
|
|
|
+ assert_true(isinstance(client, RazClient))
|
|
|
|
|
|
|
|
- HTTPKerberosAuth.assert_called()
|
|
|
|
|
- assert_equal(client.raz_url, self.raz_url)
|
|
|
|
|
- assert_equal(client.service_name, 'gethue_adls')
|
|
|
|
|
- assert_equal(client.cluster_name, 'gethueCluster')
|
|
|
|
|
|
|
+ assert_equal(client.raz_url, self.raz_url)
|
|
|
|
|
+ assert_equal(client.service_name, 'gethue_adls')
|
|
|
|
|
+ assert_equal(client.cluster_name, 'gethueCluster')
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_check_access_adls(self):
|
|
def test_check_access_adls(self):
|
|
@@ -307,22 +311,20 @@ class RazClientTest(unittest.TestCase):
|
|
|
|
|
|
|
|
def test_get_raz_client_s3(self):
|
|
def test_get_raz_client_s3(self):
|
|
|
with patch('desktop.lib.raz.raz_client.RazToken') as RazToken:
|
|
with patch('desktop.lib.raz.raz_client.RazToken') as RazToken:
|
|
|
- with patch('desktop.lib.raz.raz_client.requests_kerberos.HTTPKerberosAuth') as HTTPKerberosAuth:
|
|
|
|
|
- client = get_raz_client(
|
|
|
|
|
- raz_url=self.raz_url,
|
|
|
|
|
- username=self.username,
|
|
|
|
|
- auth='kerberos',
|
|
|
|
|
- service='s3',
|
|
|
|
|
- service_name='gethue_s3',
|
|
|
|
|
- cluster_name='gethueCluster'
|
|
|
|
|
- )
|
|
|
|
|
-
|
|
|
|
|
- assert_true(isinstance(client, RazClient))
|
|
|
|
|
-
|
|
|
|
|
- HTTPKerberosAuth.assert_called()
|
|
|
|
|
- assert_equal(client.raz_url, self.raz_url)
|
|
|
|
|
- assert_equal(client.service_name, 'gethue_s3')
|
|
|
|
|
- assert_equal(client.cluster_name, 'gethueCluster')
|
|
|
|
|
|
|
+ client = get_raz_client(
|
|
|
|
|
+ raz_url=self.raz_url,
|
|
|
|
|
+ username=self.username,
|
|
|
|
|
+ auth='kerberos',
|
|
|
|
|
+ service='s3',
|
|
|
|
|
+ service_name='gethue_s3',
|
|
|
|
|
+ cluster_name='gethueCluster'
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
|
|
+ assert_true(isinstance(client, RazClient))
|
|
|
|
|
+
|
|
|
|
|
+ assert_equal(client.raz_url, self.raz_url)
|
|
|
|
|
+ assert_equal(client.service_name, 'gethue_s3')
|
|
|
|
|
+ assert_equal(client.cluster_name, 'gethueCluster')
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_check_access_s3(self):
|
|
def test_check_access_s3(self):
|