Skip to content

Commit

Permalink
validation for invalid event type
Browse files Browse the repository at this point in the history
  • Loading branch information
bayu-aditya committed Oct 10, 2024
1 parent c879cee commit 7d27829
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 24 deletions.
8 changes: 4 additions & 4 deletions api/turing/api/routers_api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ func TestCreateRouter(t *testing.T) {
routerVersionSvc.On("Save", routerVersion).Return(routerVersion, nil)

// Webhook service
webhookSvc := webhookMock.NewClient(t)
webhookSvc := &webhookMock.Client{}
webhookSvc.On("TriggerRouterEvent", mock.Anything, webhook.OnRouterCreated, mock.Anything).Return(nil)

// Define tests
Expand Down Expand Up @@ -592,7 +592,7 @@ func TestDeleteRouter(t *testing.T) {
Return([]*models.RouterVersion{}, nil)

// Webhook service
webhookSvc := webhookMock.NewClient(t)
webhookSvc := &webhookMock.Client{}
webhookSvc.On("TriggerRouterEvent", mock.Anything, webhook.OnRouterDeleted, mock.Anything).Return(nil)

// Define tests
Expand Down Expand Up @@ -762,7 +762,7 @@ func TestDeployRouter(t *testing.T) {
routerVersionSvc.On("FindByID", models.ID(2)).Return(routerVersion, nil)

// Webhook service
webhookSvc := webhookMock.NewClient(t)
webhookSvc := &webhookMock.Client{}
webhookSvc.On("TriggerRouterEvent", mock.Anything, webhook.OnRouterDeployed, mock.Anything).Return(nil)

// Define tests
Expand Down Expand Up @@ -914,7 +914,7 @@ func TestUndeployRouter(t *testing.T) {
Return(nil)

// Webhook service
webhookSvc := webhookMock.NewClient(t)
webhookSvc := &webhookMock.Client{}
webhookSvc.On("TriggerRouterEvent", mock.Anything, webhook.OnRouterUndeployed, mock.Anything).Return(nil)

// Define tests
Expand Down
53 changes: 34 additions & 19 deletions api/turing/webhook/constant.go
Original file line number Diff line number Diff line change
@@ -1,26 +1,41 @@
package webhook

import "github.com/caraml-dev/mlp/api/pkg/webhooks"
import (
"errors"

"github.com/caraml-dev/mlp/api/pkg/webhooks"
)

var (
OnRouterCreated = webhooks.EventType("OnRouterCreated")
OnRouterUpdated = webhooks.EventType("OnRouterUpdated")
OnRouterDeleted = webhooks.EventType("OnRouterDeleted")
OnRouterDeployed = webhooks.EventType("OnRouterDeployed")
OnRouterUndeployed = webhooks.EventType("OnRouterUndeployed")

OnEnsemblerCreated = webhooks.EventType("OnEnsemblerCreated")
OnEnsemblerUpdated = webhooks.EventType("OnEnsemblerUpdated")
OnEnsemblerDeleted = webhooks.EventType("OnEnsemblerDeleted")
)

var (
OnRouterCreated = webhooks.EventType("on-router-created")
OnRouterUpdated = webhooks.EventType("on-router-updated")
OnRouterDeleted = webhooks.EventType("on-router-deleted")
OnRouterDeployed = webhooks.EventType("on-router-deployed")
OnRouterUndeployed = webhooks.EventType("on-router-undeployed")
// event list for router event
eventListRouter = map[webhooks.EventType]bool{
OnRouterCreated: true,
OnRouterUpdated: true,
OnRouterDeleted: true,
OnRouterDeployed: true,
OnRouterUndeployed: true,
}

OnEnsemblerCreated = webhooks.EventType("on-ensembler-created")
OnEnsemblerUpdated = webhooks.EventType("on-ensembler-updated")
OnEnsemblerDeleted = webhooks.EventType("on-ensembler-deleted")
// event list for ensembler event
eventListEnsembler = map[webhooks.EventType]bool{
OnEnsemblerCreated: true,
OnEnsemblerUpdated: true,
OnEnsemblerDeleted: true,
}
)

var eventList = []webhooks.EventType{
OnRouterCreated,
OnRouterUpdated,
OnRouterDeleted,
OnRouterDeployed,
OnRouterUndeployed,
OnEnsemblerCreated,
OnEnsemblerUpdated,
OnEnsemblerDeleted,
}
var (
ErrInvalidEventType = errors.New("invalid event type")
)
20 changes: 19 additions & 1 deletion api/turing/webhook/webhook.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,17 @@ type Client interface {
}

func NewWebhook(cfg *webhooks.Config) (Client, error) {
webhookManager, err := webhooks.InitializeWebhooks(cfg, eventList)
var eventTypeList []webhooks.EventType

for eventType := range eventListRouter {
eventTypeList = append(eventTypeList, eventType)
}

for eventType := range eventListEnsembler {
eventTypeList = append(eventTypeList, eventType)
}

webhookManager, err := webhooks.InitializeWebhooks(cfg, eventTypeList)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -51,6 +61,10 @@ func (w *webhook) isEventConfigured(eventType webhooks.EventType) bool {
}

func (w *webhook) TriggerRouterEvent(ctx context.Context, eventType webhooks.EventType, router *models.Router) error {
if isValid := eventListRouter[eventType]; !isValid {
return ErrInvalidEventType
}

body := &routerRequest{
EventType: eventType,
Router: router,
Expand All @@ -64,6 +78,10 @@ func (w *webhook) TriggerEnsemblerEvent(
eventType webhooks.EventType,
ensembler models.EnsemblerLike,
) error {
if isValid := eventListEnsembler[eventType]; !isValid {
return ErrInvalidEventType
}

body := &ensemblerRequest{
EventType: eventType,
Ensembler: ensembler,
Expand Down
26 changes: 26 additions & 0 deletions api/turing/webhook/webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,19 @@ func Test_webhook_TriggerRouterEvent(t *testing.T) {
).Once().Return(nil)
},
},
{
name: "negative - invalid event type",
fields: fields{
manager: mockWebhookManager,
},
args: args{
ctx: context.TODO(),
eventType: OnEnsemblerCreated,
router: &models.Router{},
},
mockFunc: func(_ args) {},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down Expand Up @@ -245,6 +258,19 @@ func Test_webhook_TriggerEnsemblerEvent(t *testing.T) {
).Once().Return(nil)
},
},
{
name: "negative - invalid event type",
fields: fields{
manager: mockWebhookManager,
},
args: args{
ctx: context.TODO(),
eventType: OnRouterCreated,
ensembler: &models.GenericEnsembler{},
},
mockFunc: func(_ args) {},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit 7d27829

Please sign in to comment.