Change module path from forge.lthn.ai/core/go-scm to dappco.re/go/core/scm. Update all Go source imports for migrated packages: - go-log -> dappco.re/go/core/log - go-io -> dappco.re/go/core/io - go-i18n -> dappco.re/go/core/i18n - go-ws -> dappco.re/go/core/ws - api -> dappco.re/go/core/api Non-migrated packages (cli, config) left on forge.lthn.ai paths. Replace directives use local paths (../go, ../go-io, etc.) until the dappco.re vanity URL server resolves these modules. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
package manifest
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
"testing"
|
|
|
|
"dappco.re/go/core/io"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestLoad_Good(t *testing.T) {
|
|
fs := io.NewMockMedium()
|
|
fs.Files[".core/manifest.yaml"] = `
|
|
code: test-app
|
|
name: Test App
|
|
version: 1.0.0
|
|
layout: HLCRF
|
|
slots:
|
|
C: main-content
|
|
`
|
|
m, err := Load(fs, ".")
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "test-app", m.Code)
|
|
assert.Equal(t, "main-content", m.Slots["C"])
|
|
}
|
|
|
|
func TestLoad_Bad_NoManifest(t *testing.T) {
|
|
fs := io.NewMockMedium()
|
|
_, err := Load(fs, ".")
|
|
assert.Error(t, err)
|
|
}
|
|
|
|
func TestLoadVerified_Good(t *testing.T) {
|
|
pub, priv, _ := ed25519.GenerateKey(nil)
|
|
m := &Manifest{
|
|
Code: "signed-app", Name: "Signed", Version: "1.0.0",
|
|
Layout: "HLCRF", Slots: map[string]string{"C": "main"},
|
|
}
|
|
_ = Sign(m, priv)
|
|
|
|
raw, _ := MarshalYAML(m)
|
|
fs := io.NewMockMedium()
|
|
fs.Files[".core/manifest.yaml"] = string(raw)
|
|
|
|
loaded, err := LoadVerified(fs, ".", pub)
|
|
require.NoError(t, err)
|
|
assert.Equal(t, "signed-app", loaded.Code)
|
|
}
|
|
|
|
func TestLoadVerified_Bad_Tampered(t *testing.T) {
|
|
pub, priv, _ := ed25519.GenerateKey(nil)
|
|
m := &Manifest{Code: "app", Version: "1.0.0"}
|
|
_ = Sign(m, priv)
|
|
|
|
raw, _ := MarshalYAML(m)
|
|
tampered := "code: evil\n" + string(raw)[6:]
|
|
fs := io.NewMockMedium()
|
|
fs.Files[".core/manifest.yaml"] = tampered
|
|
|
|
_, err := LoadVerified(fs, ".", pub)
|
|
assert.Error(t, err)
|
|
}
|