# -*- coding: utf-8 -*- # Import Salt Testing libs from salttesting.helpers import ensure_in_syspath ensure_in_syspath('../../') # Import salt libs import integration class PublishModuleTest(integration.ModuleCase, integration.SaltReturnAssertsMixIn): ''' Validate the publish module ''' def test_publish(self): ''' publish.publish ''' ret = self.run_function('publish.publish', ['minion', 'test.ping']) self.assertEqual(ret, {'minion': True}) ret = self.run_function( 'publish.publish', ['minion', 'test.kwarg', 'arg="cheese=spam"'] ) ret = ret['minion'] check_true = ( 'cheese', '__pub_arg', '__pub_fun', '__pub_id', '__pub_jid', '__pub_ret', '__pub_tgt', '__pub_tgt_type', ) for name in check_true: if not name in ret: print name self.assertTrue(name in ret) self.assertEqual(ret['cheese'], 'spam') self.assertEqual(ret['__pub_arg'], ['cheese=spam']) self.assertEqual(ret['__pub_id'], 'minion') self.assertEqual(ret['__pub_fun'], 'test.kwarg') def test_full_data(self): ''' publish.full_data ''' ret = self.run_function( 'publish.full_data', ['minion', 'test.fib', ['40']] ) self.assertTrue(ret) self.assertEqual(ret['minion']['ret'][0][-1], 34) def test_kwarg(self): ''' Verify that the pub data is making it to the minion functions ''' ret = self.run_function( 'publish.full_data', ['minion', 'test.kwarg', 'arg="cheese=spam"'] ) ret = ret['minion']['ret'] check_true = ( 'cheese', '__pub_arg', '__pub_fun', '__pub_id', '__pub_jid', '__pub_ret', '__pub_tgt', '__pub_tgt_type', ) for name in check_true: if not name in ret: print name self.assertTrue(name in ret) self.assertEqual(ret['cheese'], 'spam') self.assertEqual(ret['__pub_arg'], ['cheese=spam']) self.assertEqual(ret['__pub_id'], 'minion') self.assertEqual(ret['__pub_fun'], 'test.kwarg') ret = self.run_function( 'publish.full_data', ['minion', 'test.kwarg', 'cheese=spam'] ) self.assertIn( 'The following keyword arguments are not valid: cheese=spam', ret ) def test_reject_minion(self): ''' Test bad authentication ''' ret = self.run_function( 'publish.publish', ['minion', 'cmd.run', ['echo foo']] ) self.assertEqual(ret, {}) if __name__ == '__main__': from integration import run_tests run_tests(PublishModuleTest)