39 lines
1.5 KiB
Go
39 lines
1.5 KiB
Go
package internal
|
|
|
|
import (
|
|
"github.com/influxdata/influxdb/v2/models"
|
|
"github.com/influxdata/influxql"
|
|
)
|
|
|
|
// AuthorizerMock is a mockable implementation of a query.Authorizer.
|
|
type AuthorizerMock struct {
|
|
AuthorizeDatabaseFn func(influxql.Privilege, string) bool
|
|
AuthorizeQueryFn func(database string, query *influxql.Query) error
|
|
AuthorizeSeriesReadFn func(database string, measurement []byte, tags models.Tags) bool
|
|
AuthorizeSeriesWriteFn func(database string, measurement []byte, tags models.Tags) bool
|
|
}
|
|
|
|
// AuthorizeDatabase determines if the provided privilege is sufficient to
|
|
// authorise access to the database.
|
|
func (a *AuthorizerMock) AuthorizeDatabase(p influxql.Privilege, name string) bool {
|
|
return a.AuthorizeDatabaseFn(p, name)
|
|
}
|
|
|
|
// AuthorizeQuery determines if the query can be executed against the provided
|
|
// database.
|
|
func (a *AuthorizerMock) AuthorizeQuery(database string, query *influxql.Query) error {
|
|
return a.AuthorizeQueryFn(database, query)
|
|
}
|
|
|
|
// AuthorizeSeriesRead determines if the series comprising measurement and tags
|
|
// can be read on the provided database.
|
|
func (a *AuthorizerMock) AuthorizeSeriesRead(database string, measurement []byte, tags models.Tags) bool {
|
|
return a.AuthorizeSeriesReadFn(database, measurement, tags)
|
|
}
|
|
|
|
// AuthorizeSeriesWrite determines if the series comprising measurement and tags
|
|
// can be written to, on the provided database.
|
|
func (a *AuthorizerMock) AuthorizeSeriesWrite(database string, measurement []byte, tags models.Tags) bool {
|
|
return a.AuthorizeSeriesWriteFn(database, measurement, tags)
|
|
}
|