From 1c717b2f00173772c85cb33360b9537eaf2ba1eb Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Thu, 9 Apr 2020 15:05:02 +0200 Subject: [PATCH 1/8] add ProxyProviderFactory test --- .../ProxyProvider/ProxyProviderFactory.py | 2 +- .../test/Test_ProxyProviderFactory.py | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Resources/ProxyProvider/test/Test_ProxyProviderFactory.py diff --git a/Resources/ProxyProvider/ProxyProviderFactory.py b/Resources/ProxyProvider/ProxyProviderFactory.py index cd76b328693..65e2c7b4da0 100644 --- a/Resources/ProxyProvider/ProxyProviderFactory.py +++ b/Resources/ProxyProvider/ProxyProviderFactory.py @@ -26,7 +26,7 @@ def getProxyProvider(self, proxyProvider): """ This method returns a ProxyProvider instance corresponding to the supplied name. - :param basestring proxyProvider: the name of the Proxy Provider + :param str proxyProvider: the name of the Proxy Provider :return: S_OK(ProxyProvider)/S_ERROR() """ diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py new file mode 100644 index 00000000000..175877ab959 --- /dev/null +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -0,0 +1,50 @@ +__RCSID__ = "$Id$" + +import os +import mock +import unittest + +from DIRAC import S_OK, S_ERROR, gLogger +from DIRAC.Resources.ProxyProvider.ProxyProviderFactory import ProxyProviderFactory + + +thisPath = os.path.dirname(os.path.abspath(__file__)).split('/') +rootPath = thisPath[:len(thisPath) - 3] +certsPath = os.path.join('/'.join(rootPath), 'Core/Security/test/certs') + +def sf_getInfoAboutProviders(of, providerName, option, section): + if of == 'Proxy' and providerName == 'MY_DIRACCA' and option == 'all' and section == 'all': + return {'ProviderType': 'DIRACCA', + 'CertFile': os.path.join(certsPath, 'ca/ca.cert.pem'), + 'KeyFile': os.path.join(certsPath, 'ca/ca.key.pem'), + 'Supplied': ['O', 'OU', 'CN'], + 'Optional': ['emailAddress'], + 'DNOrder': ['O', 'OU', 'CN', 'emailAddress'], + 'OU': 'CA', + 'C': 'DN', + 'O': 'DIRACCA'} + return S_ERROR('No proxy provider found') + +@mock.patch('DIRAC.Resources.ProxyProvider.ProxyProviderFactory.getInfoAboutProviders', + new=sf_getInfoAboutProviders()) +class ProxyProviderFactoryTest(unittest.TestCase): + """ Base class for the ProxyProviderFactory test cases + """ + + def test_standalone(self): + """ Test loading a proxy provider element with everything defined in itself. + """ + result = ProxyProviderFactory().getProxyProvider('MY_DIRACCA') + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + proxyProviderObj = result['Value'] + result = proxyProviderObj.generateDN(FullName='test', Email='email@test.org') + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + userDN = result['Value'] + gLogger.info('Created DN:', userDN) + result = proxyProviderObj.getProxy(userDN) + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + + +if __name__ == '__main__': + suite = unittest.defaultTestLoader.loadTestsFromTestCase(ProxyProviderFactoryTest) + testResult = unittest.TextTestRunner(verbosity = 3).run(suite) From ae811df08ee4123984280051f87bd3ed74bebfee Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Tue, 14 Apr 2020 14:34:02 +0200 Subject: [PATCH 2/8] add pusp --- .../test/Test_ProxyProviderFactory.py | 50 +++++++++++-------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index 175877ab959..91ac46a595c 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -13,20 +13,23 @@ certsPath = os.path.join('/'.join(rootPath), 'Core/Security/test/certs') def sf_getInfoAboutProviders(of, providerName, option, section): - if of == 'Proxy' and providerName == 'MY_DIRACCA' and option == 'all' and section == 'all': - return {'ProviderType': 'DIRACCA', - 'CertFile': os.path.join(certsPath, 'ca/ca.cert.pem'), - 'KeyFile': os.path.join(certsPath, 'ca/ca.key.pem'), - 'Supplied': ['O', 'OU', 'CN'], - 'Optional': ['emailAddress'], - 'DNOrder': ['O', 'OU', 'CN', 'emailAddress'], - 'OU': 'CA', - 'C': 'DN', - 'O': 'DIRACCA'} + if of == 'Proxy' and option == 'all' and section == 'all': + if providerName == 'MY_DIRACCA': + return S_OK({'ProviderType': 'DIRACCA', + 'CertFile': os.path.join(certsPath, 'ca/ca.cert.pem'), + 'KeyFile': os.path.join(certsPath, 'ca/ca.key.pem'), + 'Supplied': ['O', 'OU', 'CN'], + 'Optional': ['emailAddress'], + 'DNOrder': ['O', 'OU', 'CN', 'emailAddress'], + 'OU': 'CA', + 'C': 'DN', + 'O': 'DIRACCA'}) + if providerName == 'MY_PUSP': + return S_OK({'ProviderType': 'PUSP', 'ServiceURL': 'https://somedomain'}) return S_ERROR('No proxy provider found') @mock.patch('DIRAC.Resources.ProxyProvider.ProxyProviderFactory.getInfoAboutProviders', - new=sf_getInfoAboutProviders()) + new=sf_getInfoAboutProviders) class ProxyProviderFactoryTest(unittest.TestCase): """ Base class for the ProxyProviderFactory test cases """ @@ -34,15 +37,22 @@ class ProxyProviderFactoryTest(unittest.TestCase): def test_standalone(self): """ Test loading a proxy provider element with everything defined in itself. """ - result = ProxyProviderFactory().getProxyProvider('MY_DIRACCA') - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') - proxyProviderObj = result['Value'] - result = proxyProviderObj.generateDN(FullName='test', Email='email@test.org') - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') - userDN = result['Value'] - gLogger.info('Created DN:', userDN) - result = proxyProviderObj.getProxy(userDN) - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + for provider, resultOfGenerateDN in [('MY_DIRACCA', True), ('MY_PUSP', False)]: + result = ProxyProviderFactory().getProxyProvider(provider) + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + proxyProviderObj = result['Value'] + result = proxyProviderObj.generateDN(FullName='test', Email='email@test.org') + text = 'Must be ended %s%s' % ('successful' if resultOfGenerateDN else 'with error', + ': %s' % result.get('Message', 'Error message is absent.')) + self.assertEqual(result['OK'], resultOfGenerateDN, text) + if not res: + gLogger.info('Msg: %s' % (result['Message'])) + else: + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + userDN = result['Value'] + gLogger.info('Created DN:', userDN) + result = proxyProviderObj.getProxy(userDN) + self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') if __name__ == '__main__': From 99908eb1b9b7880882c9f47f3825e95f1f5fe103 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Tue, 14 Apr 2020 14:35:38 +0200 Subject: [PATCH 3/8] fix bug --- Resources/ProxyProvider/test/Test_ProxyProviderFactory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index 91ac46a595c..c7e1459e159 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -45,7 +45,7 @@ def test_standalone(self): text = 'Must be ended %s%s' % ('successful' if resultOfGenerateDN else 'with error', ': %s' % result.get('Message', 'Error message is absent.')) self.assertEqual(result['OK'], resultOfGenerateDN, text) - if not res: + if not resultOfGenerateDN: gLogger.info('Msg: %s' % (result['Message'])) else: self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') From 2262117f064edc303ab2f57bec8bd7655b0639c9 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Tue, 14 Apr 2020 16:16:50 +0200 Subject: [PATCH 4/8] pep8 --- Resources/ProxyProvider/test/Test_ProxyProviderFactory.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index c7e1459e159..ea3e5da2be7 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -12,6 +12,7 @@ rootPath = thisPath[:len(thisPath) - 3] certsPath = os.path.join('/'.join(rootPath), 'Core/Security/test/certs') + def sf_getInfoAboutProviders(of, providerName, option, section): if of == 'Proxy' and option == 'all' and section == 'all': if providerName == 'MY_DIRACCA': @@ -57,4 +58,4 @@ def test_standalone(self): if __name__ == '__main__': suite = unittest.defaultTestLoader.loadTestsFromTestCase(ProxyProviderFactoryTest) - testResult = unittest.TextTestRunner(verbosity = 3).run(suite) + testResult = unittest.TextTestRunner(verbosity=3).run(suite) From 6f83d8eef377ce8ffb1d617662fc35251ba3c5a3 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Fri, 17 Apr 2020 15:32:56 +0200 Subject: [PATCH 5/8] optimize --- .../ProxyProvider/test/Test_ProxyProviderFactory.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index ea3e5da2be7..bef97dbdef7 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -4,12 +4,10 @@ import mock import unittest -from DIRAC import S_OK, S_ERROR, gLogger +from DIRAC import S_OK, S_ERROR, gLogger, rootPath from DIRAC.Resources.ProxyProvider.ProxyProviderFactory import ProxyProviderFactory -thisPath = os.path.dirname(os.path.abspath(__file__)).split('/') -rootPath = thisPath[:len(thisPath) - 3] certsPath = os.path.join('/'.join(rootPath), 'Core/Security/test/certs') @@ -40,7 +38,7 @@ def test_standalone(self): """ for provider, resultOfGenerateDN in [('MY_DIRACCA', True), ('MY_PUSP', False)]: result = ProxyProviderFactory().getProxyProvider(provider) - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) proxyProviderObj = result['Value'] result = proxyProviderObj.generateDN(FullName='test', Email='email@test.org') text = 'Must be ended %s%s' % ('successful' if resultOfGenerateDN else 'with error', @@ -49,11 +47,11 @@ def test_standalone(self): if not resultOfGenerateDN: gLogger.info('Msg: %s' % (result['Message'])) else: - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) userDN = result['Value'] gLogger.info('Created DN:', userDN) result = proxyProviderObj.getProxy(userDN) - self.assertTrue(result['OK'], '\n%s' % result.get('Message') or 'Error message is absent.') + self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) if __name__ == '__main__': From dbbf9391a848ccbc7cfbf07ae4faae1184348bb8 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Fri, 17 Apr 2020 15:50:27 +0200 Subject: [PATCH 6/8] fix bug --- Resources/ProxyProvider/test/Test_ProxyProviderFactory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index bef97dbdef7..f889f06faca 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -8,7 +8,7 @@ from DIRAC.Resources.ProxyProvider.ProxyProviderFactory import ProxyProviderFactory -certsPath = os.path.join('/'.join(rootPath), 'Core/Security/test/certs') +certsPath = os.path.join(rootPath, 'Core/Security/test/certs') def sf_getInfoAboutProviders(of, providerName, option, section): From 63618062e16bb53b67345f1eb7c1c533bdc0a68a Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Fri, 17 Apr 2020 15:57:47 +0200 Subject: [PATCH 7/8] fix assrts --- Resources/ProxyProvider/test/Test_ProxyProviderFactory.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index f889f06faca..af720bfd7ef 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -38,7 +38,7 @@ def test_standalone(self): """ for provider, resultOfGenerateDN in [('MY_DIRACCA', True), ('MY_PUSP', False)]: result = ProxyProviderFactory().getProxyProvider(provider) - self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) + self.assertTrue(result['OK'], '\n' + result.get('Message', 'Error message is absent.')) proxyProviderObj = result['Value'] result = proxyProviderObj.generateDN(FullName='test', Email='email@test.org') text = 'Must be ended %s%s' % ('successful' if resultOfGenerateDN else 'with error', @@ -47,11 +47,11 @@ def test_standalone(self): if not resultOfGenerateDN: gLogger.info('Msg: %s' % (result['Message'])) else: - self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) + self.assertTrue(result['OK'], '\n' + result.get('Message', 'Error message is absent.')) userDN = result['Value'] gLogger.info('Created DN:', userDN) result = proxyProviderObj.getProxy(userDN) - self.assertTrue(result['OK'], '\n%s' % result.get('Message', 'Error message is absent.')) + self.assertTrue(result['OK'], '\n' + result.get('Message', 'Error message is absent.')) if __name__ == '__main__': From 6f2e6088285020a7daf906ab01ff1e67c2702150 Mon Sep 17 00:00:00 2001 From: TaykYoku Date: Fri, 17 Apr 2020 16:51:48 +0200 Subject: [PATCH 8/8] fix path --- Resources/ProxyProvider/test/Test_ProxyProviderFactory.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py index af720bfd7ef..937c0483451 100644 --- a/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py +++ b/Resources/ProxyProvider/test/Test_ProxyProviderFactory.py @@ -8,7 +8,7 @@ from DIRAC.Resources.ProxyProvider.ProxyProviderFactory import ProxyProviderFactory -certsPath = os.path.join(rootPath, 'Core/Security/test/certs') +certsPath = os.path.join(rootPath, 'DIRAC/Core/Security/test/certs') def sf_getInfoAboutProviders(of, providerName, option, section):