func (_m *TableauClient) RevokeWorkbookAccess(resource *tableau.Workbook, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Workbook, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
RevokeWorkbookAccess provides a mock function with given fields: resource, user, role
package mocks
import (
	tableau "github.com/odpf/guardian/provider/tableau"
	mock "github.com/stretchr/testify/mock"
)
type TableauClient struct {
	mock.Mock
}
func (_m *TableauClient) GetDataSources() ([]*tableau.DataSource, error) {
	ret := _m.Called()
	var r0 []*tableau.DataSource
	if rf, ok := ret.Get(0).(func() []*tableau.DataSource); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*tableau.DataSource)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func() error); ok {
		r1 = rf()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *TableauClient) GetFlows() ([]*tableau.Flow, error) {
	ret := _m.Called()
	var r0 []*tableau.Flow
	if rf, ok := ret.Get(0).(func() []*tableau.Flow); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*tableau.Flow)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func() error); ok {
		r1 = rf()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *TableauClient) GetMetrics() ([]*tableau.Metric, error) {
	ret := _m.Called()
	var r0 []*tableau.Metric
	if rf, ok := ret.Get(0).(func() []*tableau.Metric); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*tableau.Metric)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func() error); ok {
		r1 = rf()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *TableauClient) GetViews() ([]*tableau.View, error) {
	ret := _m.Called()
	var r0 []*tableau.View
	if rf, ok := ret.Get(0).(func() []*tableau.View); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*tableau.View)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func() error); ok {
		r1 = rf()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *TableauClient) GetWorkbooks() ([]*tableau.Workbook, error) {
	ret := _m.Called()
	var r0 []*tableau.Workbook
	if rf, ok := ret.Get(0).(func() []*tableau.Workbook); ok {
		r0 = rf()
	} else {
		if ret.Get(0) != nil {
			r0 = ret.Get(0).([]*tableau.Workbook)
		}
	}
	var r1 error
	if rf, ok := ret.Get(1).(func() error); ok {
		r1 = rf()
	} else {
		r1 = ret.Error(1)
	}
	return r0, r1
}
func (_m *TableauClient) GrantDataSourceAccess(resource *tableau.DataSource, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.DataSource, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) GrantFlowAccess(resource *tableau.Flow, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Flow, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) GrantMetricAccess(resource *tableau.Metric, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Metric, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) GrantViewAccess(resource *tableau.View, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.View, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) GrantWorkbookAccess(resource *tableau.Workbook, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Workbook, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) RevokeDataSourceAccess(resource *tableau.DataSource, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.DataSource, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) RevokeFlowAccess(resource *tableau.Flow, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Flow, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) RevokeMetricAccess(resource *tableau.Metric, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.Metric, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}
func (_m *TableauClient) RevokeViewAccess(resource *tableau.View, user string, role string) error {
	ret := _m.Called(resource, user, role)
	var r0 error
	if rf, ok := ret.Get(0).(func(*tableau.View, string, string) error); ok {
		r0 = rf(resource, user, role)
	} else {
		r0 = ret.Error(0)
	}
	return r0
}