def test_without_userdata_clean(self):
        """ this tests that handle user data returns the expected output
        when there is no init script specified in agent config
        """

        ctx = self.mock_ctx('test_run_instances_with_user_data_clean')
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        self.assertNotIn('user_data', handle_userdata_output)
    def test_without_userdata_clean(self):
        """ this tests that handle user data returns the expected output
        when there is no init script specified in agent config
        """

        ctx = self.mock_ctx('test_run_instances_with_user_data_clean')
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        self.assertNotIn('user_data', handle_userdata_output)
    def test_with_existing_userdata_clean(self):
        """ this tests that handle user data returns the expected output when existing
        """

        ctx = self.mock_ctx('test_with_existing_userdata_clean')
        ctx.agent.init_script = lambda: 'EXISTING'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        expected_userdata = 'EXISTING'
        self.assertIn(
            expected_userdata, handle_userdata_output.get('user_data'))
    def test_with_existing_userdata_clean(self):
        """ this tests that handle user data returns the expected output when existing
        """

        ctx = self.mock_ctx('test_with_existing_userdata_clean')
        ctx.agent.init_script = lambda: 'EXISTING'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        expected_userdata = 'EXISTING'
        self.assertIn(expected_userdata,
                      handle_userdata_output.get('user_data'))
    def test_with_both_userdata_clean(self):
        """ this tests that handle user data returns the expected output when merging
        """

        ctx = self.mock_ctx('test_with_existing_userdata_clean')
        ctx.agent.init_script = lambda: '#! SCRIPT'
        ctx.node.properties['agent_config']['install_method'] = 'init_script'
        ctx.node.properties['parameters']['user_data'] = '#! EXISTING'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        self.assertTrue(handle_userdata_output['user_data'].startswith(
            'Content-Type: multi'))
    def test_with_userdata_clean(self):
        """ this tests that handle user data returns the expected output
        """

        ctx = self.mock_ctx('test_with_userdata_clean')
        ctx.agent.init_script = lambda: 'SCRIPT'
        ctx.node.properties['agent_config']['install_method'] = 'init_script'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        expected_userdata = 'SCRIPT'
        self.assertIn(expected_userdata,
                      handle_userdata_output.get('user_data'))
    def test_with_both_userdata_clean(self):
        """ this tests that handle user data returns the expected output when merging
        """

        ctx = self.mock_ctx('test_with_existing_userdata_clean')
        ctx.agent.init_script = lambda: '#! SCRIPT'
        ctx.node.properties['agent_config']['install_method'] = 'init_script'
        ctx.node.properties['parameters']['user_data'] = '#! EXISTING'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        self.assertTrue(handle_userdata_output['user_data'].startswith(
            'Content-Type: multi'))
    def test_with_userdata_clean(self):
        """ this tests that handle user data returns the expected output
        """

        ctx = self.mock_ctx('test_with_userdata_clean')
        ctx.agent.init_script = lambda: 'SCRIPT'
        ctx.node.properties['agent_config']['install_method'] = 'init_script'
        current_ctx.set(ctx=ctx)
        handle_userdata_output = \
            instance._handle_userdata(ctx.node.properties['parameters'])
        expected_userdata = 'SCRIPT'
        self.assertIn(expected_userdata,
                      handle_userdata_output.get('user_data'))