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 e9718f5
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 20 deletions.
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 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 args) {},
wantErr: true,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit e9718f5

Please sign in to comment.