NO-JIRA: Skip Extended SASL tests if we can't find saslpasswd2
Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/198af3db Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/198af3db Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/198af3db Branch: refs/heads/master Commit: 198af3dbadc5f01f5333bab6313f812ccab0b750 Parents: eec9cb3 Author: Andrew Stitcher <astitc...@apache.org> Authored: Thu Jul 16 18:32:15 2015 -0400 Committer: Andrew Stitcher <astitc...@apache.org> Committed: Fri Jul 17 17:39:37 2015 -0400 ---------------------------------------------------------------------- config.sh.in | 5 ++++ tests/python/proton_tests/common.py | 44 +++++++++++++++++++++----------- tests/python/proton_tests/sasl.py | 11 ++++---- 3 files changed, 39 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/198af3db/config.sh.in ---------------------------------------------------------------------- diff --git a/config.sh.in b/config.sh.in index 4b60b2f..25d08b1 100755 --- a/config.sh.in +++ b/config.sh.in @@ -59,3 +59,8 @@ export PATH="$PATH:$PROTON_HOME/tests/python" if [[ -x "$(type -p valgrind)" ]] ; then export VALGRIND=$(type -p valgrind) fi + +# can the test harness use saslpasswd2? +if [[ -x "$(type -p saslpasswd2)" ]] ; then + export SASLPASSWD=$(type -p saslpasswd2) +fi http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/198af3db/tests/python/proton_tests/common.py ---------------------------------------------------------------------- diff --git a/tests/python/proton_tests/common.py b/tests/python/proton_tests/common.py index 857cb50..dab6fba 100644 --- a/tests/python/proton_tests/common.py +++ b/tests/python/proton_tests/common.py @@ -108,31 +108,45 @@ def pump(transport1, transport2, buffer_size=1024): def isSSLPresent(): return SSL.present() +createdSASLDb = False + def _cyrusSetup(conf_dir): """Write out simple SASL config. - This assumes saslpasswd2 is in the OS path. """ - t = Template("""sasldb_path: ${db} + saslpasswd = "" + if 'SASLPASSWD' in os.environ: + saslpasswd = os.environ['SASLPASSWD'] + if os.path.exists(saslpasswd): + t = Template("""sasldb_path: ${db} mech_list: EXTERNAL DIGEST-MD5 SCRAM-SHA-1 CRAM-MD5 PLAIN ANONYMOUS """) - abs_conf_dir = os.path.abspath(conf_dir) - subprocess.call(args=['rm','-rf',abs_conf_dir]) - os.mkdir(abs_conf_dir) - db = os.path.join(abs_conf_dir,'proton.sasldb') - conf = os.path.join(abs_conf_dir,'proton-server.conf') - f = open(conf, 'w') - f.write(t.substitute(db=db)) - f.close() - - cmd = Template("echo password | saslpasswd2 -c -p -f ${db} -u proton user").substitute(db=db) - subprocess.call(args=cmd, shell=True) - - os.environ['PN_SASL_CONFIG_PATH'] = abs_conf_dir + abs_conf_dir = os.path.abspath(conf_dir) + subprocess.call(args=['rm','-rf',abs_conf_dir]) + os.mkdir(abs_conf_dir) + db = os.path.join(abs_conf_dir,'proton.sasldb') + conf = os.path.join(abs_conf_dir,'proton-server.conf') + f = open(conf, 'w') + f.write(t.substitute(db=db)) + f.close() + + cmd_template = Template("echo password | ${saslpasswd} -c -p -f ${db} -u proton user") + cmd = cmd_template.substitute(db=db, saslpasswd=saslpasswd) + subprocess.call(args=cmd, shell=True) + + os.environ['PN_SASL_CONFIG_PATH'] = abs_conf_dir + global createdSASLDb + createdSASLDb = True # Globally initialize Cyrus SASL configuration if SASL.extended(): _cyrusSetup('sasl_conf') +def ensureCanTestExtendedSASL(): + if not SASL.extended(): + raise Skipped('Extended SASL not supported') + if not createdSASLDb: + raise Skipped("Can't Test Extended SASL: Couldn't create auth db") + class Test(TestCase): def __init__(self, name): http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/198af3db/tests/python/proton_tests/sasl.py ---------------------------------------------------------------------- diff --git a/tests/python/proton_tests/sasl.py b/tests/python/proton_tests/sasl.py index a072150..9c8c38c 100644 --- a/tests/python/proton_tests/sasl.py +++ b/tests/python/proton_tests/sasl.py @@ -313,16 +313,14 @@ class CyrusSASLTest(Test): _testSaslMech(self, 'ANONYMOUS', authUser='anonymous') def testMechCRAMMD5(self): - if not SASL.extended(): - raise Skipped('Extended SASL not supported') + common.ensureCanTestExtendedSASL() self.t1.bind(self.c1) self.t2.bind(self.c2) _testSaslMech(self, 'CRAM-MD5') def testMechDIGESTMD5(self): - if not SASL.extended(): - raise Skipped('Extended SASL not supported') + common.ensureCanTestExtendedSASL() self.t1.bind(self.c1) self.t2.bind(self.c2) @@ -332,8 +330,7 @@ class CyrusSASLTest(Test): # so not universal and hance need a test for support # to keep it in tests. # def testMechSCRAMSHA1(self): -# if not SASL.extended(): -# raise Skipped('Extended SASL not supported') +# common.ensureCanTestExtendedSASL() # # self.t1.bind(self.c1) # self.t2.bind(self.c2) @@ -365,6 +362,7 @@ class SSLSASLTest(Test): raise Skipped("Proton-J does not support SSL with SASL") if not SASL.extended(): raise Skipped("Simple SASL server does not support PLAIN") + common.ensureCanTestExtendedSASL() clientUser = 'user@proton' mech = 'PLAIN' @@ -383,6 +381,7 @@ class SSLSASLTest(Test): raise Skipped("Proton-J does not support SSL with SASL") if not SASL.extended(): raise Skipped("Simple SASL server does not support PLAIN") + common.ensureCanTestExtendedSASL() clientUser = 'usr@proton' mech = 'PLAIN' --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org