Skip to content

Commit e9884c1

Browse files
authored
Improve stdio transport validation and function naming (#365)
## Summary - Add validation that URL must be empty for stdio transport types - Rename `validateTransport` to `validateRemoteTransport` for better clarity - Update corresponding test case to expect error when stdio transport has URL ## Context This addresses two specific feedback comments from @domdomegg on PR #345: 1. "do we want to validate the the url _is_ empty?" - Now validates URL is empty for stdio 2. "maybe rename validateRemoteTransport or something?" - Renamed function for clarity The changes enforce stricter validation while improving code readability through better naming.
1 parent fb64e7d commit e9884c1

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

internal/validators/validators.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func ValidateServerJSON(serverJSON *apiv0.ServerJSON) error {
3434

3535
// Validate all remotes
3636
for _, remote := range serverJSON.Remotes {
37-
if err := validateTransport(&remote); err != nil {
37+
if err := validateRemoteTransport(&remote); err != nil {
3838
return err
3939
}
4040
}
@@ -178,7 +178,10 @@ func validatePackageTransport(transport *model.Transport, availableVariables []s
178178
// Validate transport type is supported
179179
switch transport.Type {
180180
case model.TransportTypeStdio:
181-
// No additional validation needed for stdio - URL should be empty
181+
// Validate that URL is empty for stdio transport
182+
if transport.URL != "" {
183+
return fmt.Errorf("url must be empty for %s transport type, got: %s", transport.Type, transport.URL)
184+
}
182185
return nil
183186
case model.TransportTypeStreamableHTTP, model.TransportTypeSSE:
184187
// URL is required for streamable-http and sse
@@ -201,8 +204,8 @@ func validatePackageTransport(transport *model.Transport, availableVariables []s
201204
}
202205
}
203206

204-
// validateTransport validates a remote transport (no templating allowed)
205-
func validateTransport(obj *model.Transport) error {
207+
// validateRemoteTransport validates a remote transport (no templating allowed)
208+
func validateRemoteTransport(obj *model.Transport) error {
206209
// Validate transport type is supported - remotes only support streamable-http and sse
207210
switch obj.Type {
208211
case model.TransportTypeStreamableHTTP, model.TransportTypeSSE:

internal/validators/validators_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ func TestValidate_TransportValidation(t *testing.T) {
832832
}{
833833
// Package transport tests - stdio (no URL required)
834834
{
835-
name: "package transport stdio without URL",
835+
name: "package transport stdio without URL should pass",
836836
serverDetail: apiv0.ServerJSON{
837837
Name: "com.example/test-server",
838838
Description: "A test server",
@@ -852,7 +852,7 @@ func TestValidate_TransportValidation(t *testing.T) {
852852
expectedError: "",
853853
},
854854
{
855-
name: "package transport stdio with URL (should still work)",
855+
name: "package transport stdio with URL (should fail)",
856856
serverDetail: apiv0.ServerJSON{
857857
Name: "com.example/test-server",
858858
Description: "A test server",
@@ -870,7 +870,7 @@ func TestValidate_TransportValidation(t *testing.T) {
870870
},
871871
},
872872
},
873-
expectedError: "",
873+
expectedError: "url must be empty for stdio transport type",
874874
},
875875
// Package transport tests - streamable-http (URL required)
876876
{
@@ -1270,9 +1270,9 @@ func createValidServerWithArgument(arg model.Argument) apiv0.ServerJSON {
12701270
},
12711271
Packages: []model.Package{
12721272
{
1273-
Identifier: "test-package",
1274-
RegistryType: "npm",
1275-
RegistryBaseURL: "https://registry.npmjs.org",
1273+
Identifier: "test-package",
1274+
RegistryType: "npm",
1275+
RegistryBaseURL: "https://registry.npmjs.org",
12761276
Transport: model.Transport{
12771277
Type: "stdio",
12781278
},

0 commit comments

Comments
 (0)