Files
Loki/internal/ajean/sys_update_asset_test.go
T
nathaninline 2455d9f402 Purge du code de compatibilite jean, base bbolt et arborescence ajean
- suppression des migrations d'agencement, d'unites et de dossier de donnees
- store bbolt unique (ajean.db) : config, prefs, conversation, cles, drapeaux
- arborescence backends/ bin/ presets/ memory/ models/ workspace/
- plus aucune variable, unite ou asset nomme jean
2026-08-07 16:51:36 +02:00

64 lines
2.1 KiB
Go

package ajean
import "testing"
// relWith fabrique une release ne contenant que les assets nommés.
func relWith(names ...string) *ghRelease {
rel := &ghRelease{TagName: "v9.9.9"}
for _, n := range names {
rel.Assets = append(rel.Assets, struct {
Name string `json:"name"`
BrowserDownloadURL string `json:"browser_download_url"`
Size int64 `json:"size"`
}{Name: n, BrowserDownloadURL: "https://example.invalid/" + n, Size: 42})
}
return rel
}
// Une release de transition publie les deux noms : on doit préférer ajean-*.
func TestPickAssetPrefersAjean(t *testing.T) {
names := updateAssetNames()
got, url, _ := pickAsset(relWith(names[1], names[0]))
if got != names[0] {
t.Fatalf("got %q, attendu la préférence %q", got, names[0])
}
if url == "" {
t.Fatal("URL vide")
}
}
// Release future, purgée des anciens noms : ajean-* seul suffit.
func TestPickAssetAjeanOnly(t *testing.T) {
names := updateAssetNames()
if got, _, _ := pickAsset(relWith(names[0])); got != names[0] {
t.Fatalf("got %q, attendu %q", got, names[0])
}
}
// Ancienne release, antérieure au renommage : le repli sur ajean-* doit marcher,
// sinon un client neuf ne pourrait pas s'installer depuis une release existante.
func TestPickAssetFallsBackToLegacy(t *testing.T) {
names := updateAssetNames()
got, _, _ := pickAsset(relWith(names[1]))
if got != names[1] {
t.Fatalf("got %q, attendu le repli %q", got, names[1])
}
}
// Le nom renvoyé sert à vérifier le SHA-256 : il doit être celui réellement
// choisi, pas le nom préféré, sinon la vérification échoue sur un repli.
func TestPickAssetReturnsCheckedName(t *testing.T) {
names := updateAssetNames()
got, url, size := pickAsset(relWith(names[1]))
if got != names[1] || url != "https://example.invalid/"+names[1] || size != 42 {
t.Fatalf("incohérence nom/URL/taille: %q %q %d", got, url, size)
}
}
// Aucun asset pour cette plateforme → pas d'URL, l'appelant doit pouvoir le voir.
func TestPickAssetNoMatch(t *testing.T) {
if _, url, _ := pickAsset(relWith("ajean-plan9-386", "SHA256SUMS")); url != "" {
t.Fatalf("URL inattendue: %q", url)
}
}