def test__cannot_connect(self, module_patch, import_patch):
        mock_module = self.setup_module(module_patch)
        self.setup_session_root(import_patch)

        self.mock_session.start.side_effect = Exception("cannot connect")

        main()

        import_patch.assert_called_once_with("vspk.v5_0")
        mock_module.fail_json.assert_called_once_with(
            msg="Could not establish connection to VSD cannot connect")
    def test__cannot_import(self, module_patch, import_patch):
        mock_module = self.setup_module(module_patch)

        import_patch.side_effect = ImportError("cannot import")

        main()

        import_patch.assert_called_once_with("vspk.v5_0")
        mock_module.fail_json.assert_called_once_with(
            msg="vspk is required for this module, or "
            "API version specified does not exist.")
    def test_get__exception(self, module_patch, import_patch):
        params = dict(TEST_PARAMS)
        params['get_gateway_purge_time'] = True
        mock_module = self.setup_module(module_patch, params)
        mock_root = self.setup_session_root(import_patch)

        mock_root.system_configs = MagicMock()
        mock_root.system_configs.get_first.side_effect = Exception("Test")

        main()

        self.validate_session(import_patch)
        mock_module.fail_json.assert_called_once_with(
            msg="Could not retrieve gateway purge timer : Test")
    def test_get__success(self, module_patch, import_patch):
        params = dict(TEST_PARAMS)
        params['get_gateway_purge_time'] = True
        mock_module = self.setup_module(module_patch, params)
        mock_root = self.setup_session_root(import_patch)

        mock_sys_config = self.setup_sys_config(mock_root)
        mock_sys_config.ad_gateway_purge_time = 12345

        main()

        self.validate_session(import_patch)
        mock_module.fail_json.assert_not_called()
        mock_module.exit_json.assert_called_once_with(changed=True,
                                                      result=12345)
    def test_set__update_error(self, module_patch, import_patch):
        mock_module = self.setup_module(module_patch)
        mock_root = self.setup_session_root(import_patch)

        mock_sys_config = self.setup_sys_config(mock_root)
        mock_sys_config.save.side_effect = Exception("Test")

        main()

        gw_purge = TEST_PARAMS['gateway_purge_time']

        self.validate_session(import_patch)
        assert mock_sys_config.ad_gateway_purge_time == gw_purge
        mock_sys_config.save.assert_called_once_with()
        mock_module.fail_json.assert_called_once_with(
            msg="Could not update gateway purge timer : Test")
    def test_set__success(self, module_patch, import_patch):
        mock_module = self.setup_module(module_patch)
        mock_root = self.setup_session_root(import_patch)

        mock_sys_config = self.setup_sys_config(mock_root)

        main()

        gw_purge = TEST_PARAMS['gateway_purge_time']

        self.validate_session(import_patch)
        assert mock_sys_config.ad_gateway_purge_time == gw_purge
        mock_sys_config.save.assert_called_once_with()
        mock_module.fail_json.assert_not_called()
        mock_module.exit_json.assert_called_once_with(
            changed=True, result="Gateway purge time set to %ssec" % gw_purge)
    def test_set__already_set(self, module_patch, import_patch):
        mock_module = self.setup_module(module_patch)
        mock_root = self.setup_session_root(import_patch)

        mock_sys_config = self.setup_sys_config(mock_root)
        mock_sys_config.save.side_effect = self.get_mock_bambou_error(
            400, "There are no attribute changes")

        main()

        gw_purge = TEST_PARAMS['gateway_purge_time']

        self.validate_session(import_patch)
        assert mock_sys_config.ad_gateway_purge_time == gw_purge
        mock_sys_config.save.assert_called_once_with()
        mock_module.fail_json.assert_not_called()
        mock_module.exit_json.assert_called_once_with(
            changed=True,
            result="Gateway time is already updated to %s" % gw_purge)