go-scm/marketplace/indexer_test.go
Virgil 89925a0e83
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Successful in 2m8s
feat(marketplace): emit clone URLs in indexes
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:24:22 +00:00

73 lines
1.7 KiB
Go

// SPDX-License-Identifier: EUPL-1.2
package marketplace
import (
"testing"
"dappco.re/go/core/io"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestBuildIndex_Good_CategoriesAndRepoURLs_Good(t *testing.T) {
medium := io.NewMockMedium()
require.NoError(t, medium.Write("/repos/a/.core/manifest.yaml", `
code: a
name: Alpha
version: 1.0.0
sign: key-a
`))
require.NoError(t, medium.Write("/repos/b/.core/manifest.yaml", `
code: b
name: Beta
version: 1.0.0
sign: key-b
`))
require.NoError(t, medium.Write("/repos/c/.core/manifest.yaml", `
code: c
name: Gamma
version: 1.0.0
sign: key-c
`))
idx, err := BuildIndex(medium, []string{"/repos/a", "/repos/b", "/repos/c"}, IndexOptions{
ForgeURL: "https://forge.example.com",
Org: "core",
CategoryFn: func(code string) string {
switch code {
case "a", "b":
return "tools"
default:
return "products"
}
},
})
require.NoError(t, err)
require.Len(t, idx.Modules, 3)
assert.Equal(t, "a", idx.Modules[0].Code)
assert.Equal(t, "https://forge.example.com/core/a.git", idx.Modules[0].Repo)
assert.Equal(t, "tools", idx.Modules[0].Category)
assert.Equal(t, "key-a", idx.Modules[0].SignKey)
assert.Equal(t, []string{"products", "tools"}, idx.Categories)
}
func TestBuildIndex_Good_SkipsMissingManifest_Good(t *testing.T) {
medium := io.NewMockMedium()
require.NoError(t, medium.Write("/repos/one/.core/manifest.yaml", `
code: one
name: One
version: 1.0.0
sign: key-one
`))
idx, err := BuildIndex(medium, []string{"/repos/one", "/repos/missing"}, IndexOptions{})
require.NoError(t, err)
require.Len(t, idx.Modules, 1)
assert.Equal(t, "one", idx.Modules[0].Code)
assert.Empty(t, idx.Categories)
}