Example #1
0
 def test_random_choice(self):
     self.populate_file('main.yaml', '''---
     variables:
         my_list: ['one', 'two', 'three']
     steps:
         - echo: {from: '{{ random_choice(my_list) }}', to: one.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     random.seed(123)
     self.assertTrue(runner.run_tests())
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'three'))
Example #2
0
 def test_computed_available_other_step(self):
     self.populate_file(
         'main.yaml', '''---
     steps:
         - echo: {from: 'hello', register: {foo: 'bar'}}
         - echo: {from: '{{ foo }}', to: one.output}
         
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'bar'))
Example #3
0
 def test_cmd_variable_override_inventory(self):
     self.populate_file('inventory.yml', '''---
     one: bar
     ''')
     self.populate_file(
         'main.yaml', '''---
     steps:
         - echo: {from: '{{ one }}', to: 1.output}
         - echo: {from: '{{ two }}', to: 2.output}
     ''')
     runner = Runner(self.test_dir,
                     join(self.test_dir, 'main.yaml'),
                     join(self.test_dir, 'inventory.yml'),
                     environment={
                         'one': 'baz',
                         'two': 'bax'
                     })
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, '1.output'), 'baz'))
     self.assertTrue(check_file(join(self.test_dir, '2.output'), 'bax'))
Example #4
0
 def test_write_file(self):
     self.populate_file(
         'main.yaml', '''---
             variables:
                 user_email: 123
             steps:
                 - echo: {from: '{{ user_email }}', to: 'debug.output'}
             ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     self.assertTrue(check_file(join(self.test_dir, 'debug.output'), '123'))
Example #5
0
 def test_random_functions(self):
     Faker.seed(4321)
     self.populate_file(
         'main.yaml', '''---
     steps:
         - echo: {from: '{{ random("ipv4_private") }}', to: one.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     self.assertTrue(
         check_file(join(self.test_dir, 'one.output'), '10.32.135.245'))
Example #6
0
 def test_vars_available_got(self):
     self.populate_file('main.yaml', '''---
     include: 
         - one.yaml
         - two.yaml
     ''')
     self.populate_file('one.yaml', '''---
     variables:
         foo: bar
     steps:
         - echo: {from: '{{ foo }}', to: one.output}
     ''')
     self.populate_file('two.yaml', '''---
     steps:
         - echo: {from: '{{ foo }}', to: two.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'bar'))
     self.assertTrue(check_file(join(self.test_dir, 'two.output'), 'bar'))
Example #7
0
 def test_run_ignore_errors(self, m):
     m.get('http://test.com', status_code=500)
     self.populate_file(
         'main.yaml', '''---
     steps:
         - http: {get: {url: 'http://test.com', response_code: 200}, ignore_errors: true}
         - echo: {from: 'test2', to: main2.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(
         check_file(join(self.test_dir, 'main2.output'), 'test2'))
Example #8
0
    def test_cmd_override_all(self):
        self.populate_file('inventory.yml', '''---
                foo2: baz
                ''')
        self.populate_file('main.yaml', '''---
        variables:
            foo: baz
        steps:
            - echo: 
                actions: 
                    - {from: '{{ foo }}', to: one.output}
                    - {from: '{{ foo2 }}', to: two.output}

        ''')
        runner = Runner(self.test_dir,
                        join(self.test_dir, 'main.yaml'),
                        join(self.test_dir, 'inventory.yml'),
                        cmd_env={'foo': 'bad', 'foo2': 'bad'})
        runner.run_tests()
        self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'bad'))
        self.assertTrue(check_file(join(self.test_dir, 'two.output'), 'bad'))
Example #9
0
    def test_custom_functions_available(self):
        self.populate_file('custom_filter.py',
                           '''def function_my_custom():
                               return {'key': 'value'}

def function_my_other(input):
  return _not_a_fun(input)

def _not_a_fun(arg):
  return 'to_str=' + str(arg)  
                            ''')
        self.populate_file('main.yaml', '''---
                                steps:
                                    - echo: {from: '{{ my_custom() }}', to: one.output}
                                    - echo: {from: '{{ my_other("test") }}', to: two.output}
                                ''')
        runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None,
                        filter_list=[join(self.test_dir, 'custom_filter.py')])
        self.assertTrue(runner.run_tests())
        self.assertTrue(check_file(join(self.test_dir, 'one.output'), "{'key': 'value'}"))
        self.assertTrue(check_file(join(self.test_dir, 'two.output'), 'to_str=test'))
Example #10
0
 def test_simple_include(self):
     self.populate_file('main.yaml', '''---
     include: simple_file.yaml
     ''')
     self.populate_file('simple_file.yaml', '''---
     variables:
         foo: bar
     steps:
         - echo: {from: '{{ foo }}', to: foo.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'foo.output'), 'bar'))
Example #11
0
 def test_computed_with_template(self):
     self.populate_file('main.yaml', '''---
     variables:
         path: /home/user
         test: main.yml
     steps:
         - echo: {from: 'hello', register: {foo: '{{ path }}/{{ test }}'}}
         - echo: {from: '{{ foo }}', to: one.output}
         
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), '/home/user/main.yml'))
Example #12
0
 def test_override_inventory(self):
     self.populate_file('inventory.yml', '''---
     foo: bar
     ''')
     self.populate_file('main.yaml', '''---
     variables:
         foo: baz
     steps:
         - echo: {from: '{{ foo }}', to: main.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), join(self.test_dir, 'inventory.yml'))
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'main.output'), 'baz'))
Example #13
0
 def test_run_on_include_and_later(self):
     self.populate_file('main.yaml', '''---
     include: 
         file: simple_file.yaml
         variables:
             file: include
         as: test
         run_on_include: true
     steps:
         - run: 
             include: test
             variables: 
                 file: other
     ''')
     self.populate_file('simple_file.yaml', '''---
     steps:
         - echo: {from: 'hello', to: '{{ file }}.output'}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'include.output'), 'hello'))
     self.assertTrue(check_file(join(self.test_dir, 'other.output'), 'hello'))
Example #14
0
 def test_read_write_to_file_template(self):
     self.populate_resource('foo/baz/bar.json', '123')
     self.populate_file(
         'main.yaml', '''---
                     variables:
                         filename: foo/baz/bar.json
                     steps:
                         - echo: {from_file: '{{ filename }}', to: 'resources/{{ filename.replace("/baz/", "/bar/")}}'}
                     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     self.assertTrue(
         check_file(join(self.test_dir, 'resources/foo/bar/bar.json'),
                    '123'))
Example #15
0
 def test_register_override_cmd(self):
     self.populate_file('main.yaml', '''---
     variables:
         foo: baz
     steps:
         - echo: 
             actions: 
                 - {from: 'bar', register: {foo: '{{ OUTPUT }}'}}
                 - {from: '{{ foo }}', to: one.output}
         
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None, cmd_env={'foo': 'bad'})
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'bar'))
Example #16
0
    def test_custom_both_available(self):
        self.populate_file('custom_filter.py',
                           '''def filter_increment(input):
       if isinstance(input, int):
         return input + 1
       return 'not an int'
       
def function_my_other(input):
  return _not_a_fun(input)

def _not_a_fun(arg):
  return 'to_str=' + str(arg)  
                            ''')
        self.populate_file('main.yaml', '''---
                                steps:
                                    - echo: {from: '{{ 221 | increment }}', to: one.output}
                                    - echo: {from: '{{ my_other("test") }}', to: two.output}
                                ''')
        runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None,
                        filter_list=[join(self.test_dir, 'custom_filter.py')])
        self.assertTrue(runner.run_tests())
        self.assertTrue(check_file(join(self.test_dir, 'one.output'), '222'))
        self.assertTrue(check_file(join(self.test_dir, 'two.output'), 'to_str=test'))
Example #17
0
 def test_run_system_variables(self):
     os.environ["SECRET_PASSWORD"] = "******"
     self.populate_file(
         'main.yaml', '''---
     steps:
         - echo: {from: '{{ SECRET_PASSWORD }}', to: sys_env.output}
     ''')
     runner = Runner(self.test_dir,
                     join(self.test_dir, 'main.yaml'),
                     None,
                     system_environment=dict(os.environ))
     runner.run_tests()
     self.assertTrue(
         check_file(join(self.test_dir, 'sys_env.output'), '123'))
Example #18
0
    def test_random_int(self):
        self.populate_file(
            'main.yaml', '''---
        steps:
            - echo: {from: '{{ random_int(1, 10) }}', to: one.output}
        ''')
        runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
        random.seed(123)
        self.assertTrue(runner.run_tests())
        self.assertTrue(check_file(join(self.test_dir, 'one.output'), '9'))

        # no upper limit
        self.populate_file(
            'main.yaml', '''---
        steps:
            - echo: {from: '{{ random_int(1) }}', to: one.output}
        ''')
        runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
        random.seed(123)
        self.assertTrue(runner.run_tests())
        self.assertTrue(
            check_file(join(self.test_dir, 'one.output'),
                       '5186474716495645053'))

        # no lower limit
        self.populate_file(
            'main.yaml', '''---
        steps:
            - echo: {from: '{{ random_int(range_to=1) }}', to: one.output}
        ''')
        runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
        random.seed(123)
        self.assertTrue(runner.run_tests())
        self.assertTrue(
            check_file(join(self.test_dir, 'one.output'),
                       '-2936754363331581815'))
Example #19
0
 def test_for(self):
     self.populate_file('main.yaml', '''---
     variables:
         list: [1, 2, 3, 4, 5, 6]
     steps:
         - loop: 
             foreach:
                 in: '{{ list }}'
                 do:
                     echo: {from: '{{ ITEM }}', to: '{{ ITEM }}.output'}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     for i in range(1, 6):
         self.assertTrue(check_file(join(self.test_dir, str(i) + '.output'), str(i)))
Example #20
0
 def test_inventory_vars_available_in_include(self):
     self.populate_file('inventory.yml', '''---
     foo: bar
     ''')
     self.populate_file('main.yaml', '''---
     include: one.yaml
     steps:
         - echo: {from: '{{ foo }}', to: main.output}
     ''')
     self.populate_file('one.yaml', '''---
     steps:
         - echo: {from: '{{ foo }}', to: include.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), join(self.test_dir, 'inventory.yml'))
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'include.output'), 'bar'))
Example #21
0
 def test_run_finally(self):
     self.populate_file(
         'main.yaml', '''---
     steps:
         - echo: {from: '123', to: sys_env.output}
     finally:
         - sh: 
             command: 'rm sys_env.output'
             path: '{{ CURRENT_DIR }}'
     ''')
     runner = Runner(self.test_dir,
                     join(self.test_dir, 'main.yaml'),
                     None,
                     system_environment=dict(os.environ))
     runner.run_tests()
     self.assertFalse(
         check_file(join(self.test_dir, 'sys_env.output'), '123'))
Example #22
0
 def test_run_in_docker(self):
     self.populate_file(
         'main.yaml', '''---
                     variables:
                         docker: true
                     steps:
                         - sh:
                             command: "grep 'docker|lxc' /proc/1/cgroup"
                             return_code: 1
                             ignore_errors: true
                             register: {docker: false}
                         - echo: {from: '{{ docker }}', to: 'debug.output'}
                     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     self.assertTrue(
         check_file(join(self.test_dir, 'debug.output'), 'False'))
Example #23
0
 def test_include_skipped_test(self):
     self.populate_file('main.yaml', '''---
             include: simple_file.yaml
             steps:
                 - echo: {from: '12', to: bar.output}
             ''')
     self.populate_file('simple_file.yaml', '''---
             ignore: true
             variables:
                 foo: bar
             steps:
                 - echo: {from: '{{ foo }}', to: foo.output}
             ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertFalse(os.path.exists(join(self.test_dir, 'foo.output')))
     self.assertTrue(check_file(join(self.test_dir, 'bar.output'), '12'))
Example #24
0
 def test_run_skip_if_short(self):
     self.populate_file(
         'main.yaml', '''---
             variables:
                 no_output: true
             steps:
                 - echo:
                     from: 'hello world'
                     to: main1.output
                     skip_if: '{{ no_output }}'
                 - echo: {from: 'test2', to: main2.output}
             ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(
         not os.path.exists(join(self.test_dir, 'main1.output')))
     self.assertTrue(
         check_file(join(self.test_dir, 'main2.output'), 'test2'))
Example #25
0
 def test_access_variables(self):
     self._add_output('resources/test.py',
                      "print('{\"variable\":\"value\"}')")
     self.populate_file(
         'main.yaml', '''---
                 variables:
                     site_url: 'http://www.python.org'
                 steps:
                     - selenium:
                         test:
                             driver: '/usr/lib/geckodriver'
                             file: test/tmp/selenium/resources/test.py
                         register: {variable: '{{ OUTPUT.variable }}'}
                     - echo: {from: '{{ variable }}', to: variable.output}
                 ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     self.assertTrue(runner.run_tests())
     self.assertTrue(
         check_file(join(self.test_dir, 'variable.output'), 'value'))
Example #26
0
 def test_vars_override_computed(self):
     self.populate_file('main.yaml', '''---
     include: 
         - one.yaml
         - file: two.yaml
           variables: 
             foo: baz
     ''')
     self.populate_file('one.yaml', '''---
     steps:
         - echo: {from: 'hello', register: {foo: 'bar'}}
         
     ''')
     self.populate_file('two.yaml', '''---
     steps:
         - echo: {from: '{{ foo }}', to: one.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(check_file(join(self.test_dir, 'one.output'), 'baz'))
Example #27
0
 def test_multiple_includes(self):
     self.populate_file('main.yaml', '''---
     include: 
         - file: simple_file.yaml
           run_on_include: false
         - other_simple_file.yaml
     ''')
     self.populate_file('simple_file.yaml', '''---
     variables:
         foo: bar
     steps:
         - echo: {from: '{{ foo }}', to: foo.output}
     ''')
     self.populate_file('other_simple_file.yaml', '''---
     variables:
         foo: baz
     steps:
         - echo: {from: '{{ foo }}', to: other.output}
     ''')
     runner = Runner(self.test_dir, join(self.test_dir, 'main.yaml'), None)
     runner.run_tests()
     self.assertTrue(not os.path.exists(join(self.test_dir, 'foo.output')))
     self.assertTrue(check_file(join(self.test_dir, 'other.output'), 'baz'))