influxdb/dbrp/http_client_dbrp_test.go

112 lines
2.8 KiB
Go
Raw Normal View History

package dbrp_test
import (
"context"
"net/http/httptest"
"testing"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/dbrp"
"github.com/influxdata/influxdb/v2/http"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/mock"
"github.com/influxdata/influxdb/v2/pkg/httpc"
"go.uber.org/zap/zaptest"
)
func setup(t *testing.T) (*dbrp.Client, func()) {
t.Helper()
dbrpSvc := &mock.DBRPMappingService{
CreateFn: func(ctx context.Context, dbrp *influxdb.DBRPMapping) error {
dbrp.ID = 1
return nil
},
FindByIDFn: func(ctx context.Context, orgID, id platform.ID) (*influxdb.DBRPMapping, error) {
return &influxdb.DBRPMapping{
ID: id,
Database: "db",
RetentionPolicy: "rp",
Default: false,
OrganizationID: id,
BucketID: 1,
}, nil
},
FindManyFn: func(ctx context.Context, dbrp influxdb.DBRPMappingFilter, opts ...influxdb.FindOptions) ([]*influxdb.DBRPMapping, int, error) {
return []*influxdb.DBRPMapping{}, 0, nil
},
}
orgSvc := &mock.OrganizationService{
FindOrganizationF: func(ctx context.Context, filter influxdb.OrganizationFilter) (*influxdb.Organization, error) {
return &influxdb.Organization{
ID: *filter.ID,
Name: "org",
}, nil
},
}
server := httptest.NewServer(dbrp.NewHTTPHandler(zaptest.NewLogger(t), dbrpSvc, orgSvc))
client, err := httpc.New(httpc.WithAddr(server.URL), httpc.WithStatusFn(http.CheckError))
if err != nil {
t.Fatal(err)
}
dbrpClient := dbrp.NewClient(client)
dbrpClient.Prefix = ""
return dbrpClient, func() {
server.Close()
}
}
func TestClient(t *testing.T) {
t.Run("can create", func(t *testing.T) {
client, shutdown := setup(t)
defer shutdown()
if err := client.Create(context.Background(), &influxdb.DBRPMapping{
Database: "db",
RetentionPolicy: "rp",
Default: false,
OrganizationID: 1,
BucketID: 1,
}); err != nil {
t.Error(err)
}
})
t.Run("can read", func(t *testing.T) {
client, shutdown := setup(t)
defer shutdown()
if _, err := client.FindByID(context.Background(), 1, 1); err != nil {
t.Error(err)
}
oid := platform.ID(1)
if _, _, err := client.FindMany(context.Background(), influxdb.DBRPMappingFilter{OrgID: &oid}); err != nil {
t.Error(err)
}
})
t.Run("can update", func(t *testing.T) {
client, shutdown := setup(t)
defer shutdown()
if err := client.Update(context.Background(), &influxdb.DBRPMapping{
ID: 1,
Database: "db",
RetentionPolicy: "rp",
Default: false,
OrganizationID: 1,
BucketID: 1,
}); err != nil {
t.Error(err)
}
})
t.Run("can delete", func(t *testing.T) {
client, shutdown := setup(t)
defer shutdown()
if err := client.Delete(context.Background(), 1, 1); err != nil {
t.Error(err)
}
})
}