chore: move notebook service interface to root (#21570)

pull/20885/head
William Baker 2021-05-26 12:27:56 -04:00 committed by GitHub
parent 46fe0ee9d1
commit c267b31232
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 121 additions and 128 deletions

View File

@ -5,26 +5,25 @@ import (
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/platform"
notebooks "github.com/influxdata/influxdb/v2/notebooks/service"
)
var _ notebooks.NotebookService = (*NotebookService)(nil)
var _ influxdb.NotebookService = (*NotebookService)(nil)
// NotebookService wraps a notebooks.NotebookService and authorizes actions
// NotebookService wraps an influxdb.NotebookService and authorizes actions
// against it appropriately.
type NotebookService struct {
s notebooks.NotebookService
s influxdb.NotebookService
}
// NewNotebookService constructs an instance of an authorizing check service.
func NewNotebookService(s notebooks.NotebookService) *NotebookService {
func NewNotebookService(s influxdb.NotebookService) *NotebookService {
return &NotebookService{
s: s,
}
}
// GetNotebook checks to see if the authorizer on context has read access to the id provided.
func (s *NotebookService) GetNotebook(ctx context.Context, id platform.ID) (*notebooks.Notebook, error) {
func (s *NotebookService) GetNotebook(ctx context.Context, id platform.ID) (*influxdb.Notebook, error) {
nb, err := s.s.GetNotebook(ctx, id)
if err != nil {
return nil, err
@ -36,7 +35,7 @@ func (s *NotebookService) GetNotebook(ctx context.Context, id platform.ID) (*not
}
// CreateNotebook checks to see if the authorizer on context has write access for notebooks for organization id provided in the notebook body.
func (s *NotebookService) CreateNotebook(ctx context.Context, create *notebooks.NotebookReqBody) (*notebooks.Notebook, error) {
func (s *NotebookService) CreateNotebook(ctx context.Context, create *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
if _, _, err := AuthorizeCreate(ctx, influxdb.NotebooksResourceType, create.OrgID); err != nil {
return nil, err
}
@ -45,7 +44,7 @@ func (s *NotebookService) CreateNotebook(ctx context.Context, create *notebooks.
}
// UpdateNotebook checks to see if the authorizer on context has write access to the notebook provided.
func (s *NotebookService) UpdateNotebook(ctx context.Context, id platform.ID, update *notebooks.NotebookReqBody) (*notebooks.Notebook, error) {
func (s *NotebookService) UpdateNotebook(ctx context.Context, id platform.ID, update *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
nb, err := s.s.GetNotebook(ctx, id)
if err != nil {
return nil, err
@ -69,7 +68,7 @@ func (s *NotebookService) DeleteNotebook(ctx context.Context, id platform.ID) er
}
// ListNotebooks checks to see if the requesting user has read access to the provided org and returns a list of notebooks for that org if so.
func (s *NotebookService) ListNotebooks(ctx context.Context, filter notebooks.NotebookListFilter) ([]*notebooks.Notebook, error) {
func (s *NotebookService) ListNotebooks(ctx context.Context, filter influxdb.NotebookListFilter) ([]*influxdb.Notebook, error) {
if _, _, err := AuthorizeOrgReadResource(ctx, influxdb.NotebooksResourceType, filter.OrgID); err != nil {
return nil, err
}

View File

@ -12,8 +12,6 @@ import (
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
"github.com/influxdata/influxdb/v2/mock"
notebookSvc "github.com/influxdata/influxdb/v2/notebooks/service"
notebookMocks "github.com/influxdata/influxdb/v2/notebooks/service/mocks"
influxdbtesting "github.com/influxdata/influxdb/v2/testing"
"github.com/stretchr/testify/require"
)
@ -31,7 +29,7 @@ func Test_GetNotebook(t *testing.T) {
name string
notebookOrg *platform.ID
permissionOrg *platform.ID
wantRet *notebookSvc.Notebook
wantRet *influxdb.Notebook
wantErr error
}{
{
@ -56,7 +54,7 @@ func Test_GetNotebook(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrlr := gomock.NewController(t)
svc := notebookMocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
s := authorizer.NewNotebookService(svc)
svc.EXPECT().
@ -81,7 +79,7 @@ func Test_CreateNotebook(t *testing.T) {
name string
notebookOrg *platform.ID
permissionOrg *platform.ID
wantRet *notebookSvc.Notebook
wantRet *influxdb.Notebook
wantErr error
}{
{
@ -106,7 +104,7 @@ func Test_CreateNotebook(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrlr := gomock.NewController(t)
svc := notebookMocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
s := authorizer.NewNotebookService(svc)
perm := newTestPermission(influxdb.WriteAction, tt.permissionOrg)
@ -133,7 +131,7 @@ func Test_UpdateNotebook(t *testing.T) {
name string
notebookOrg *platform.ID
permissionOrg *platform.ID
wantRet *notebookSvc.Notebook
wantRet *influxdb.Notebook
wantErr error
}{
{
@ -158,7 +156,7 @@ func Test_UpdateNotebook(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrlr := gomock.NewController(t)
svc := notebookMocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
s := authorizer.NewNotebookService(svc)
svc.EXPECT().
@ -211,7 +209,7 @@ func Test_DeleteNotebook(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrlr := gomock.NewController(t)
svc := notebookMocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
s := authorizer.NewNotebookService(svc)
svc.EXPECT().
@ -240,14 +238,14 @@ func Test_ListNotebooks(t *testing.T) {
name string
notebookOrg *platform.ID
permissionOrg *platform.ID
wantRet []*notebookSvc.Notebook
wantRet []*influxdb.Notebook
wantErr error
}{
{
"authorized to list notebooks for the specified org",
orgID1,
orgID1,
[]*notebookSvc.Notebook{},
[]*influxdb.Notebook{},
nil,
},
{
@ -265,11 +263,11 @@ func Test_ListNotebooks(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
ctrlr := gomock.NewController(t)
svc := notebookMocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
s := authorizer.NewNotebookService(svc)
perm := newTestPermission(influxdb.ReadAction, tt.permissionOrg)
filter := notebookSvc.NotebookListFilter{OrgID: *tt.notebookOrg}
filter := influxdb.NotebookListFilter{OrgID: *tt.notebookOrg}
if tt.wantErr == nil {
svc.EXPECT().
@ -285,22 +283,22 @@ func Test_ListNotebooks(t *testing.T) {
}
}
func newTestNotebook(orgID platform.ID) *notebookSvc.Notebook {
return &notebookSvc.Notebook{
func newTestNotebook(orgID platform.ID) *influxdb.Notebook {
return &influxdb.Notebook{
OrgID: orgID,
ID: *nbID,
Name: "test notebook",
Spec: notebookSvc.NotebookSpec{
Spec: influxdb.NotebookSpec{
"hello": "goodbye",
},
}
}
func newTestReqBody(orgID platform.ID) *notebookSvc.NotebookReqBody {
return &notebookSvc.NotebookReqBody{
func newTestReqBody(orgID platform.ID) *influxdb.NotebookReqBody {
return &influxdb.NotebookReqBody{
OrgID: orgID,
Name: "testing",
Spec: notebookSvc.NotebookSpec{
Spec: influxdb.NotebookSpec{
"hello": "goodbye",
},
}

View File

@ -43,7 +43,7 @@ import (
"github.com/influxdata/influxdb/v2/kv/migration/all"
"github.com/influxdata/influxdb/v2/label"
"github.com/influxdata/influxdb/v2/nats"
notebookSvc "github.com/influxdata/influxdb/v2/notebooks/service"
"github.com/influxdata/influxdb/v2/notebooks"
notebookTransport "github.com/influxdata/influxdb/v2/notebooks/transport"
endpointservice "github.com/influxdata/influxdb/v2/notification/endpoint/service"
ruleservice "github.com/influxdata/influxdb/v2/notification/rule/service"
@ -940,7 +940,7 @@ func (m *Launcher) run(ctx context.Context, opts *InfluxdOpts) (err error) {
)
}
notebookSvc, err := notebookSvc.NewService()
notebookSvc, err := notebooks.NewService()
if err != nil {
m.log.Error("Failed to initialize notebook service", zap.Error(err))
return err

View File

@ -1,16 +1,16 @@
// Code generated by MockGen. DO NOT EDIT.
// Source: github.com/influxdata/influxdb/v2/notebooks/service (interfaces: NotebookService)
// Source: notebook.go
// Package mocks is a generated GoMock package.
package mocks
// Package mock is a generated GoMock package.
package mock
import (
context "context"
reflect "reflect"
gomock "github.com/golang/mock/gomock"
influxdb "github.com/influxdata/influxdb/v2"
platform "github.com/influxdata/influxdb/v2/kit/platform"
service "github.com/influxdata/influxdb/v2/notebooks/service"
)
// MockNotebookService is a mock of NotebookService interface.
@ -37,75 +37,75 @@ func (m *MockNotebookService) EXPECT() *MockNotebookServiceMockRecorder {
}
// CreateNotebook mocks base method.
func (m *MockNotebookService) CreateNotebook(arg0 context.Context, arg1 *service.NotebookReqBody) (*service.Notebook, error) {
func (m *MockNotebookService) CreateNotebook(ctx context.Context, create *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "CreateNotebook", arg0, arg1)
ret0, _ := ret[0].(*service.Notebook)
ret := m.ctrl.Call(m, "CreateNotebook", ctx, create)
ret0, _ := ret[0].(*influxdb.Notebook)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CreateNotebook indicates an expected call of CreateNotebook.
func (mr *MockNotebookServiceMockRecorder) CreateNotebook(arg0, arg1 interface{}) *gomock.Call {
func (mr *MockNotebookServiceMockRecorder) CreateNotebook(ctx, create interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNotebook", reflect.TypeOf((*MockNotebookService)(nil).CreateNotebook), arg0, arg1)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateNotebook", reflect.TypeOf((*MockNotebookService)(nil).CreateNotebook), ctx, create)
}
// DeleteNotebook mocks base method.
func (m *MockNotebookService) DeleteNotebook(arg0 context.Context, arg1 platform.ID) error {
func (m *MockNotebookService) DeleteNotebook(ctx context.Context, id platform.ID) error {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "DeleteNotebook", arg0, arg1)
ret := m.ctrl.Call(m, "DeleteNotebook", ctx, id)
ret0, _ := ret[0].(error)
return ret0
}
// DeleteNotebook indicates an expected call of DeleteNotebook.
func (mr *MockNotebookServiceMockRecorder) DeleteNotebook(arg0, arg1 interface{}) *gomock.Call {
func (mr *MockNotebookServiceMockRecorder) DeleteNotebook(ctx, id interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNotebook", reflect.TypeOf((*MockNotebookService)(nil).DeleteNotebook), arg0, arg1)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteNotebook", reflect.TypeOf((*MockNotebookService)(nil).DeleteNotebook), ctx, id)
}
// GetNotebook mocks base method.
func (m *MockNotebookService) GetNotebook(arg0 context.Context, arg1 platform.ID) (*service.Notebook, error) {
func (m *MockNotebookService) GetNotebook(ctx context.Context, id platform.ID) (*influxdb.Notebook, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "GetNotebook", arg0, arg1)
ret0, _ := ret[0].(*service.Notebook)
ret := m.ctrl.Call(m, "GetNotebook", ctx, id)
ret0, _ := ret[0].(*influxdb.Notebook)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetNotebook indicates an expected call of GetNotebook.
func (mr *MockNotebookServiceMockRecorder) GetNotebook(arg0, arg1 interface{}) *gomock.Call {
func (mr *MockNotebookServiceMockRecorder) GetNotebook(ctx, id interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotebook", reflect.TypeOf((*MockNotebookService)(nil).GetNotebook), arg0, arg1)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetNotebook", reflect.TypeOf((*MockNotebookService)(nil).GetNotebook), ctx, id)
}
// ListNotebooks mocks base method.
func (m *MockNotebookService) ListNotebooks(arg0 context.Context, arg1 service.NotebookListFilter) ([]*service.Notebook, error) {
func (m *MockNotebookService) ListNotebooks(ctx context.Context, filter influxdb.NotebookListFilter) ([]*influxdb.Notebook, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "ListNotebooks", arg0, arg1)
ret0, _ := ret[0].([]*service.Notebook)
ret := m.ctrl.Call(m, "ListNotebooks", ctx, filter)
ret0, _ := ret[0].([]*influxdb.Notebook)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// ListNotebooks indicates an expected call of ListNotebooks.
func (mr *MockNotebookServiceMockRecorder) ListNotebooks(arg0, arg1 interface{}) *gomock.Call {
func (mr *MockNotebookServiceMockRecorder) ListNotebooks(ctx, filter interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNotebooks", reflect.TypeOf((*MockNotebookService)(nil).ListNotebooks), arg0, arg1)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ListNotebooks", reflect.TypeOf((*MockNotebookService)(nil).ListNotebooks), ctx, filter)
}
// UpdateNotebook mocks base method.
func (m *MockNotebookService) UpdateNotebook(arg0 context.Context, arg1 platform.ID, arg2 *service.NotebookReqBody) (*service.Notebook, error) {
func (m *MockNotebookService) UpdateNotebook(ctx context.Context, id platform.ID, update *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
m.ctrl.T.Helper()
ret := m.ctrl.Call(m, "UpdateNotebook", arg0, arg1, arg2)
ret0, _ := ret[0].(*service.Notebook)
ret := m.ctrl.Call(m, "UpdateNotebook", ctx, id, update)
ret0, _ := ret[0].(*influxdb.Notebook)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// UpdateNotebook indicates an expected call of UpdateNotebook.
func (mr *MockNotebookServiceMockRecorder) UpdateNotebook(arg0, arg1, arg2 interface{}) *gomock.Call {
func (mr *MockNotebookServiceMockRecorder) UpdateNotebook(ctx, id, update interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNotebook", reflect.TypeOf((*MockNotebookService)(nil).UpdateNotebook), arg0, arg1, arg2)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateNotebook", reflect.TypeOf((*MockNotebookService)(nil).UpdateNotebook), ctx, id, update)
}

View File

@ -1,12 +1,39 @@
package service
package influxdb
import (
"context"
"fmt"
"time"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
)
var (
ErrOrgIDRequired = fieldRequiredError("OrgID")
ErrNameRequired = fieldRequiredError("Name")
ErrSpecRequired = fieldRequiredError("Spec")
ErrOffsetNegative = &errors.Error{
Code: errors.EInvalid,
Msg: "offset cannot be negative",
}
ErrLimitLTEZero = &errors.Error{
Code: errors.EInvalid,
Msg: "limit cannot be less-than or equal-to zero",
}
ErrNotebookNotFound = &errors.Error{
Code: errors.ENotFound,
Msg: "notebook not found",
}
)
func fieldRequiredError(field string) error {
return &errors.Error{
Code: errors.EInvalid,
Msg: fmt.Sprintf("%s required", field),
}
}
// Notebook represents all visual and query data for a notebook.
type Notebook struct {
OrgID platform.ID `json:"orgID"`

View File

@ -1,4 +1,4 @@
package service
package influxdb
import (
"testing"

View File

@ -2,30 +2,31 @@
// For now it enables user experimentation with the UI in front of the notebooks
// backend server.
package service
package notebooks
import (
"context"
"time"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/snowflake"
)
var _ NotebookService = (*FakeStore)(nil)
var _ influxdb.NotebookService = (*FakeStore)(nil)
type FakeStore struct {
list map[string][]*Notebook
list map[string][]*influxdb.Notebook
}
func NewService() (*FakeStore, error) {
return &FakeStore{
list: make(map[string][]*Notebook),
list: make(map[string][]*influxdb.Notebook),
}, nil
}
func (s *FakeStore) GetNotebook(ctx context.Context, id platform.ID) (*Notebook, error) {
ns := []*Notebook{}
func (s *FakeStore) GetNotebook(ctx context.Context, id platform.ID) (*influxdb.Notebook, error) {
ns := []*influxdb.Notebook{}
for _, nList := range s.list {
ns = append(ns, nList...)
@ -37,22 +38,22 @@ func (s *FakeStore) GetNotebook(ctx context.Context, id platform.ID) (*Notebook,
}
}
return nil, ErrNotebookNotFound
return nil, influxdb.ErrNotebookNotFound
}
func (s *FakeStore) ListNotebooks(ctx context.Context, filter NotebookListFilter) ([]*Notebook, error) {
func (s *FakeStore) ListNotebooks(ctx context.Context, filter influxdb.NotebookListFilter) ([]*influxdb.Notebook, error) {
o := filter.OrgID
ns, ok := s.list[o.String()]
if !ok {
return []*Notebook{}, nil
return []*influxdb.Notebook{}, nil
}
return ns, nil
}
func (s *FakeStore) CreateNotebook(ctx context.Context, create *NotebookReqBody) (*Notebook, error) {
n := &Notebook{
func (s *FakeStore) CreateNotebook(ctx context.Context, create *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
n := &influxdb.Notebook{
OrgID: create.OrgID,
Name: create.Name,
Spec: create.Spec,
@ -81,10 +82,10 @@ func (s *FakeStore) DeleteNotebook(ctx context.Context, id platform.ID) error {
}
if foundOrg == "" {
return ErrNotebookNotFound
return influxdb.ErrNotebookNotFound
}
newNs := []*Notebook{}
newNs := []*influxdb.Notebook{}
for _, b := range s.list[foundOrg] {
if b.ID != id {
@ -96,7 +97,7 @@ func (s *FakeStore) DeleteNotebook(ctx context.Context, id platform.ID) error {
return nil
}
func (s *FakeStore) UpdateNotebook(ctx context.Context, id platform.ID, update *NotebookReqBody) (*Notebook, error) {
func (s *FakeStore) UpdateNotebook(ctx context.Context, id platform.ID, update *influxdb.NotebookReqBody) (*influxdb.Notebook, error) {
n, err := s.GetNotebook(ctx, id)
if err != nil {
return nil, err

View File

@ -1,32 +0,0 @@
package service
import (
"fmt"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
)
var (
ErrOrgIDRequired = fieldRequiredError("OrgID")
ErrNameRequired = fieldRequiredError("Name")
ErrSpecRequired = fieldRequiredError("Spec")
ErrOffsetNegative = &errors.Error{
Code: errors.EInvalid,
Msg: "offset cannot be negative",
}
ErrLimitLTEZero = &errors.Error{
Code: errors.EInvalid,
Msg: "limit cannot be less-than or equal-to zero",
}
ErrNotebookNotFound = &errors.Error{
Code: errors.ENotFound,
Msg: "notebook not found",
}
)
func fieldRequiredError(field string) error {
return &errors.Error{
Code: errors.EInvalid,
Msg: fmt.Sprintf("%s required", field),
}
}

View File

@ -5,11 +5,11 @@ import (
"github.com/go-chi/chi"
"github.com/go-chi/chi/middleware"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/feature"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/kit/platform/errors"
kithttp "github.com/influxdata/influxdb/v2/kit/transport/http"
"github.com/influxdata/influxdb/v2/notebooks/service"
"go.uber.org/zap"
)
@ -36,12 +36,12 @@ type NotebookHandler struct {
log *zap.Logger
api *kithttp.API
notebookService service.NotebookService
notebookService influxdb.NotebookService
}
func NewNotebookHandler(
log *zap.Logger,
notebookService service.NotebookService,
notebookService influxdb.NotebookService,
) *NotebookHandler {
h := &NotebookHandler{
log: log,
@ -101,7 +101,7 @@ func (h *NotebookHandler) handleGetNotebooks(w http.ResponseWriter, r *http.Requ
return
}
l, err := h.notebookService.ListNotebooks(ctx, service.NotebookListFilter{OrgID: *o})
l, err := h.notebookService.ListNotebooks(ctx, influxdb.NotebookListFilter{OrgID: *o})
if err != nil {
h.api.Err(w, r, err)
return
@ -187,8 +187,8 @@ func (h *NotebookHandler) handleUpdateNotebook(w http.ResponseWriter, r *http.Re
h.api.Respond(w, r, http.StatusOK, u)
}
func (h *NotebookHandler) decodeNotebookReqBody(r *http.Request) (*service.NotebookReqBody, error) {
b := &service.NotebookReqBody{}
func (h *NotebookHandler) decodeNotebookReqBody(r *http.Request) (*influxdb.NotebookReqBody, error) {
b := &influxdb.NotebookReqBody{}
if err := h.api.DecodeJSON(r.Body, b); err != nil {
return nil, err
}

View File

@ -8,10 +8,10 @@ import (
"testing"
"github.com/golang/mock/gomock"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/feature"
"github.com/influxdata/influxdb/v2/kit/platform"
"github.com/influxdata/influxdb/v2/notebooks/service"
"github.com/influxdata/influxdb/v2/notebooks/service/mocks"
"github.com/influxdata/influxdb/v2/mock"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
"go.uber.org/zap/zaptest"
@ -22,18 +22,18 @@ var (
orgID, _ = platform.IDFromString(orgStr)
idStr = "4321432143214321"
id, _ = platform.IDFromString(idStr)
testNotebook = &service.Notebook{
testNotebook = &influxdb.Notebook{
OrgID: *orgID,
ID: *id,
Name: "test notebook",
Spec: service.NotebookSpec{
Spec: influxdb.NotebookSpec{
"hello": "goodbye",
},
}
testReqBody = &service.NotebookReqBody{
testReqBody = &influxdb.NotebookReqBody{
OrgID: *orgID,
Name: "Test notebook",
Spec: service.NotebookSpec{
Spec: influxdb.NotebookSpec{
"hello": "goodbye",
},
}
@ -53,15 +53,15 @@ func TestNotebookHandler(t *testing.T) {
req.URL.RawQuery = q.Encode()
svc.EXPECT().
ListNotebooks(gomock.Any(), service.NotebookListFilter{OrgID: *orgID}).
Return([]*service.Notebook{testNotebook}, nil)
ListNotebooks(gomock.Any(), influxdb.NotebookListFilter{OrgID: *orgID}).
Return([]*influxdb.Notebook{testNotebook}, nil)
res := doTestRequest(t, req, http.StatusOK, true)
got := []*service.Notebook{}
got := []*influxdb.Notebook{}
err := json.NewDecoder(res.Body).Decode(&got)
require.NoError(t, err)
require.Equal(t, got, []*service.Notebook{testNotebook})
require.Equal(t, got, []*influxdb.Notebook{testNotebook})
})
t.Run("create notebook happy path", func(t *testing.T) {
@ -76,7 +76,7 @@ func TestNotebookHandler(t *testing.T) {
res := doTestRequest(t, req, http.StatusOK, true)
got := &service.Notebook{}
got := &influxdb.Notebook{}
err := json.NewDecoder(res.Body).Decode(got)
require.NoError(t, err)
require.Equal(t, got, testNotebook)
@ -94,7 +94,7 @@ func TestNotebookHandler(t *testing.T) {
res := doTestRequest(t, req, http.StatusOK, true)
got := &service.Notebook{}
got := &influxdb.Notebook{}
err := json.NewDecoder(res.Body).Decode(got)
require.NoError(t, err)
require.Equal(t, got, testNotebook)
@ -125,7 +125,7 @@ func TestNotebookHandler(t *testing.T) {
res := doTestRequest(t, req, http.StatusOK, true)
got := &service.Notebook{}
got := &influxdb.Notebook{}
err := json.NewDecoder(res.Body).Decode(got)
require.NoError(t, err)
require.Equal(t, got, testNotebook)
@ -170,7 +170,7 @@ func TestNotebookHandler(t *testing.T) {
})
t.Run("invalid request body returns 400", func(t *testing.T) {
badBady := &service.NotebookReqBody{
badBady := &influxdb.NotebookReqBody{
OrgID: *orgID,
}
@ -197,9 +197,9 @@ func TestNotebookHandler(t *testing.T) {
// The svc generated is returned so that the caller can specify the expected
// use of the mock service.
func newTestServer(t *testing.T) (*httptest.Server, *mocks.MockNotebookService) {
func newTestServer(t *testing.T) (*httptest.Server, *mock.MockNotebookService) {
ctrlr := gomock.NewController(t)
svc := mocks.NewMockNotebookService(ctrlr)
svc := mock.NewMockNotebookService(ctrlr)
// server needs to have a middleware to annotate the request context with the
// appropriate feature flags while notebooks is still behind a feature flag
server := annotatedTestServer(NewNotebookHandler(zaptest.NewLogger(t), svc))