gitea源码

metadata_test.go 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package container
  4. import (
  5. "strings"
  6. "testing"
  7. "code.gitea.io/gitea/modules/packages/container/helm"
  8. oci "github.com/opencontainers/image-spec/specs-go/v1"
  9. "github.com/stretchr/testify/assert"
  10. "github.com/stretchr/testify/require"
  11. )
  12. func TestParseImageConfig(t *testing.T) {
  13. description := "Image Description"
  14. author := "Gitea"
  15. license := "MIT"
  16. projectURL := "https://gitea.com"
  17. repositoryURL := "https://gitea.com/gitea"
  18. documentationURL := "https://docs.gitea.com"
  19. configOCI := `{"config": {"labels": {"` + labelAuthors + `": "` + author + `", "` + labelLicenses + `": "` + license + `", "` + labelURL + `": "` + projectURL + `", "` + labelSource + `": "` + repositoryURL + `", "` + labelDocumentation + `": "` + documentationURL + `", "` + labelDescription + `": "` + description + `"}}, "history": [{"created_by": "do it 1"}, {"created_by": "dummy #(nop) do it 2"}]}`
  20. metadata, err := ParseImageConfig(oci.MediaTypeImageManifest, strings.NewReader(configOCI))
  21. assert.NoError(t, err)
  22. assert.Equal(t, TypeOCI, metadata.Type)
  23. assert.Equal(t, description, metadata.Description)
  24. assert.ElementsMatch(t, []string{author}, metadata.Authors)
  25. assert.Equal(t, license, metadata.Licenses)
  26. assert.Equal(t, projectURL, metadata.ProjectURL)
  27. assert.Equal(t, repositoryURL, metadata.RepositoryURL)
  28. assert.Equal(t, documentationURL, metadata.DocumentationURL)
  29. assert.ElementsMatch(t, []string{"do it 1", "do it 2"}, metadata.ImageLayers)
  30. assert.Equal(
  31. t,
  32. map[string]string{
  33. labelAuthors: author,
  34. labelLicenses: license,
  35. labelURL: projectURL,
  36. labelSource: repositoryURL,
  37. labelDocumentation: documentationURL,
  38. labelDescription: description,
  39. },
  40. metadata.Labels,
  41. )
  42. assert.Empty(t, metadata.Manifests)
  43. configHelm := `{"description":"` + description + `", "home": "` + projectURL + `", "sources": ["` + repositoryURL + `"], "maintainers":[{"name":"` + author + `"}]}`
  44. metadata, err = ParseImageConfig(helm.ConfigMediaType, strings.NewReader(configHelm))
  45. assert.NoError(t, err)
  46. assert.Equal(t, TypeHelm, metadata.Type)
  47. assert.Equal(t, description, metadata.Description)
  48. assert.ElementsMatch(t, []string{author}, metadata.Authors)
  49. assert.Equal(t, projectURL, metadata.ProjectURL)
  50. assert.Equal(t, repositoryURL, metadata.RepositoryURL)
  51. metadata, err = ParseImageConfig("anything-unknown", strings.NewReader(""))
  52. require.NoError(t, err)
  53. assert.Equal(t, &Metadata{Platform: "unknown/unknown"}, metadata)
  54. }