Skip to content

Commit 7d27829

Browse files
committed
validation for invalid event type
1 parent c879cee commit 7d27829

File tree

4 files changed

+83
-24
lines changed

4 files changed

+83
-24
lines changed

api/turing/api/routers_api_test.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,7 @@ func TestCreateRouter(t *testing.T) {
240240
routerVersionSvc.On("Save", routerVersion).Return(routerVersion, nil)
241241

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

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

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

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

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

768768
// Define tests
@@ -914,7 +914,7 @@ func TestUndeployRouter(t *testing.T) {
914914
Return(nil)
915915

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

920920
// Define tests

api/turing/webhook/constant.go

+34-19
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,41 @@
11
package webhook
22

3-
import "github.com/caraml-dev/mlp/api/pkg/webhooks"
3+
import (
4+
"errors"
5+
6+
"github.com/caraml-dev/mlp/api/pkg/webhooks"
7+
)
8+
9+
var (
10+
OnRouterCreated = webhooks.EventType("OnRouterCreated")
11+
OnRouterUpdated = webhooks.EventType("OnRouterUpdated")
12+
OnRouterDeleted = webhooks.EventType("OnRouterDeleted")
13+
OnRouterDeployed = webhooks.EventType("OnRouterDeployed")
14+
OnRouterUndeployed = webhooks.EventType("OnRouterUndeployed")
15+
16+
OnEnsemblerCreated = webhooks.EventType("OnEnsemblerCreated")
17+
OnEnsemblerUpdated = webhooks.EventType("OnEnsemblerUpdated")
18+
OnEnsemblerDeleted = webhooks.EventType("OnEnsemblerDeleted")
19+
)
420

521
var (
6-
OnRouterCreated = webhooks.EventType("on-router-created")
7-
OnRouterUpdated = webhooks.EventType("on-router-updated")
8-
OnRouterDeleted = webhooks.EventType("on-router-deleted")
9-
OnRouterDeployed = webhooks.EventType("on-router-deployed")
10-
OnRouterUndeployed = webhooks.EventType("on-router-undeployed")
22+
// event list for router event
23+
eventListRouter = map[webhooks.EventType]bool{
24+
OnRouterCreated: true,
25+
OnRouterUpdated: true,
26+
OnRouterDeleted: true,
27+
OnRouterDeployed: true,
28+
OnRouterUndeployed: true,
29+
}
1130

12-
OnEnsemblerCreated = webhooks.EventType("on-ensembler-created")
13-
OnEnsemblerUpdated = webhooks.EventType("on-ensembler-updated")
14-
OnEnsemblerDeleted = webhooks.EventType("on-ensembler-deleted")
31+
// event list for ensembler event
32+
eventListEnsembler = map[webhooks.EventType]bool{
33+
OnEnsemblerCreated: true,
34+
OnEnsemblerUpdated: true,
35+
OnEnsemblerDeleted: true,
36+
}
1537
)
1638

17-
var eventList = []webhooks.EventType{
18-
OnRouterCreated,
19-
OnRouterUpdated,
20-
OnRouterDeleted,
21-
OnRouterDeployed,
22-
OnRouterUndeployed,
23-
OnEnsemblerCreated,
24-
OnEnsemblerUpdated,
25-
OnEnsemblerDeleted,
26-
}
39+
var (
40+
ErrInvalidEventType = errors.New("invalid event type")
41+
)

api/turing/webhook/webhook.go

+19-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,17 @@ type Client interface {
1414
}
1515

1616
func NewWebhook(cfg *webhooks.Config) (Client, error) {
17-
webhookManager, err := webhooks.InitializeWebhooks(cfg, eventList)
17+
var eventTypeList []webhooks.EventType
18+
19+
for eventType := range eventListRouter {
20+
eventTypeList = append(eventTypeList, eventType)
21+
}
22+
23+
for eventType := range eventListEnsembler {
24+
eventTypeList = append(eventTypeList, eventType)
25+
}
26+
27+
webhookManager, err := webhooks.InitializeWebhooks(cfg, eventTypeList)
1828
if err != nil {
1929
return nil, err
2030
}
@@ -51,6 +61,10 @@ func (w *webhook) isEventConfigured(eventType webhooks.EventType) bool {
5161
}
5262

5363
func (w *webhook) TriggerRouterEvent(ctx context.Context, eventType webhooks.EventType, router *models.Router) error {
64+
if isValid := eventListRouter[eventType]; !isValid {
65+
return ErrInvalidEventType
66+
}
67+
5468
body := &routerRequest{
5569
EventType: eventType,
5670
Router: router,
@@ -64,6 +78,10 @@ func (w *webhook) TriggerEnsemblerEvent(
6478
eventType webhooks.EventType,
6579
ensembler models.EnsemblerLike,
6680
) error {
81+
if isValid := eventListEnsembler[eventType]; !isValid {
82+
return ErrInvalidEventType
83+
}
84+
6785
body := &ensemblerRequest{
6886
EventType: eventType,
6987
Ensembler: ensembler,

api/turing/webhook/webhook_test.go

+26
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,19 @@ func Test_webhook_TriggerRouterEvent(t *testing.T) {
190190
).Once().Return(nil)
191191
},
192192
},
193+
{
194+
name: "negative - invalid event type",
195+
fields: fields{
196+
manager: mockWebhookManager,
197+
},
198+
args: args{
199+
ctx: context.TODO(),
200+
eventType: OnEnsemblerCreated,
201+
router: &models.Router{},
202+
},
203+
mockFunc: func(_ args) {},
204+
wantErr: true,
205+
},
193206
}
194207
for _, tt := range tests {
195208
t.Run(tt.name, func(t *testing.T) {
@@ -245,6 +258,19 @@ func Test_webhook_TriggerEnsemblerEvent(t *testing.T) {
245258
).Once().Return(nil)
246259
},
247260
},
261+
{
262+
name: "negative - invalid event type",
263+
fields: fields{
264+
manager: mockWebhookManager,
265+
},
266+
args: args{
267+
ctx: context.TODO(),
268+
eventType: OnRouterCreated,
269+
ensembler: &models.GenericEnsembler{},
270+
},
271+
mockFunc: func(_ args) {},
272+
wantErr: true,
273+
},
248274
}
249275
for _, tt := range tests {
250276
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)