Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions cmd/thv-operator/pkg/sources/testutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,16 @@ func (b *TestRegistryBuilder) WithServer(name string) *TestRegistryBuilder {
}
case mcpv1alpha1.RegistryFormatUpstream:
b.upstreamData = append(b.upstreamData, registry.UpstreamServerDetail{
Server: registry.UpstreamServer{
Name: name,
Description: fmt.Sprintf("Test server description for %s", name),
Packages: []registry.UpstreamPackage{
{
RegistryName: "docker",
Name: "test/image",
Version: "latest",
Name: name,
Description: fmt.Sprintf("Test server description for %s", name),
Version: "1.0.0",
Packages: []registry.UpstreamPackage{
{
RegistryType: "oci",
Identifier: "test/image",
Version: "latest",
Transport: registry.UpstreamTransport{
Type: registry.UpstreamTransportTypeStdio,
},
},
},
Expand Down
12 changes: 6 additions & 6 deletions cmd/thv-operator/pkg/sources/testutils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,12 +128,12 @@ func TestTestRegistryBuilder_WithServer(t *testing.T) {
case mcpv1alpha1.RegistryFormatUpstream:
assert.Len(t, builder.upstreamData, 1)
serverDetail := builder.upstreamData[0]
assert.Equal(t, tt.expectedName, serverDetail.Server.Name)
assert.NotEmpty(t, serverDetail.Server.Description)
assert.Len(t, serverDetail.Server.Packages, 1)
pkg := serverDetail.Server.Packages[0]
assert.Equal(t, "docker", pkg.RegistryName)
assert.Equal(t, "test/image", pkg.Name)
assert.Equal(t, tt.expectedName, serverDetail.Name)
assert.NotEmpty(t, serverDetail.Description)
assert.Len(t, serverDetail.Packages, 1)
pkg := serverDetail.Packages[0]
assert.Equal(t, "oci", pkg.RegistryType)
assert.Equal(t, "test/image", pkg.Identifier)
assert.Equal(t, "latest", pkg.Version)
}
})
Expand Down
14 changes: 7 additions & 7 deletions cmd/thv-operator/pkg/sources/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,11 +117,11 @@ func validateUpstreamFormatAndParse(data []byte) (*registry.Registry, error) {
}

for i, server := range upstreamServers {
if server.Server.Name == "" {
if server.Name == "" {
return nil, fmt.Errorf("server at index %d: name is required", i)
}
if server.Server.Description == "" {
return nil, fmt.Errorf("server at index %d (%s): description is required", i, server.Server.Name)
if server.Description == "" {
return nil, fmt.Errorf("server at index %d (%s): description is required", i, server.Name)
}
}

Expand All @@ -136,17 +136,17 @@ func validateUpstreamFormatAndParse(data []byte) (*registry.Registry, error) {
for _, upstreamServer := range upstreamServers {
serverMetadata, err := registry.ConvertUpstreamToToolhive(&upstreamServer)
if err != nil {
return nil, fmt.Errorf("failed to convert server %s: %w", upstreamServer.Server.Name, err)
return nil, fmt.Errorf("failed to convert server %s: %w", upstreamServer.Name, err)
}

// Add to appropriate map based on server type
switch server := serverMetadata.(type) {
case *registry.ImageMetadata:
toolhiveRegistry.Servers[upstreamServer.Server.Name] = server
toolhiveRegistry.Servers[upstreamServer.Name] = server
case *registry.RemoteServerMetadata:
toolhiveRegistry.RemoteServers[upstreamServer.Server.Name] = server
toolhiveRegistry.RemoteServers[upstreamServer.Name] = server
default:
return nil, fmt.Errorf("unknown server type for %s", upstreamServer.Server.Name)
return nil, fmt.Errorf("unknown server type for %s", upstreamServer.Name)
}
}

Expand Down
39 changes: 17 additions & 22 deletions cmd/thv-operator/pkg/sources/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -159,23 +159,20 @@ func TestDefaultSourceDataValidator_ValidateData(t *testing.T) {
}`)

validUpstreamData := []byte(`[{
"server": {
"name": "test-server",
"description": "A test server for validation",
"status": "Active",
"version_detail": {
"version": "1.0.0"
},
"packages": [{
"registry_name": "docker",
"name": "test/image",
"version": "latest"
}]
},
"x-publisher": {
"x-dev.toolhive": {
"name": "test-server",
"description": "A test server for validation",
"version": "1.0.0",
"packages": [{
"registryType": "oci",
"identifier": "test/image",
"version": "latest",
"transport": {
"type": "stdio"
}
}],
"_meta": {
"dev.toolhive": {
"tier": "Community",
"transport": "stdio",
"tools": ["test_tool"]
}
}
Expand Down Expand Up @@ -238,9 +235,8 @@ func TestDefaultSourceDataValidator_ValidateData(t *testing.T) {
{
name: "upstream server missing name",
data: []byte(`[{
"server": {
"description": "Test server"
}
"description": "Test server",
"version": "1.0.0"
}]`),
format: mcpv1alpha1.RegistryFormatUpstream,
expectError: true,
Expand All @@ -249,9 +245,8 @@ func TestDefaultSourceDataValidator_ValidateData(t *testing.T) {
{
name: "upstream server missing description",
data: []byte(`[{
"server": {
"name": "test-server"
}
"name": "test-server",
"version": "1.0.0"
}]`),
format: mcpv1alpha1.RegistryFormatUpstream,
expectError: true,
Expand Down
Loading
Loading