You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

metadata_test.go 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. )
  11. func TestParseImageConfig(t *testing.T) {
  12. description := "Image Description"
  13. author := "Gitea"
  14. license := "MIT"
  15. projectURL := "https://gitea.com"
  16. repositoryURL := "https://gitea.com/gitea"
  17. documentationURL := "https://docs.gitea.com"
  18. 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"}]}`
  19. metadata, err := ParseImageConfig(oci.MediaTypeImageManifest, strings.NewReader(configOCI))
  20. assert.NoError(t, err)
  21. assert.Equal(t, TypeOCI, metadata.Type)
  22. assert.Equal(t, description, metadata.Description)
  23. assert.ElementsMatch(t, []string{author}, metadata.Authors)
  24. assert.Equal(t, license, metadata.Licenses)
  25. assert.Equal(t, projectURL, metadata.ProjectURL)
  26. assert.Equal(t, repositoryURL, metadata.RepositoryURL)
  27. assert.Equal(t, documentationURL, metadata.DocumentationURL)
  28. assert.ElementsMatch(t, []string{"do it 1", "do it 2"}, metadata.ImageLayers)
  29. assert.Equal(
  30. t,
  31. map[string]string{
  32. labelAuthors: author,
  33. labelLicenses: license,
  34. labelURL: projectURL,
  35. labelSource: repositoryURL,
  36. labelDocumentation: documentationURL,
  37. labelDescription: description,
  38. },
  39. metadata.Labels,
  40. )
  41. assert.Empty(t, metadata.Manifests)
  42. configHelm := `{"description":"` + description + `", "home": "` + projectURL + `", "sources": ["` + repositoryURL + `"], "maintainers":[{"name":"` + author + `"}]}`
  43. metadata, err = ParseImageConfig(helm.ConfigMediaType, strings.NewReader(configHelm))
  44. assert.NoError(t, err)
  45. assert.Equal(t, TypeHelm, metadata.Type)
  46. assert.Equal(t, description, metadata.Description)
  47. assert.ElementsMatch(t, []string{author}, metadata.Authors)
  48. assert.Equal(t, projectURL, metadata.ProjectURL)
  49. assert.Equal(t, repositoryURL, metadata.RepositoryURL)
  50. }