123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- // Copyright 2022 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package vagrant
-
- import (
- "archive/tar"
- "bytes"
- "compress/gzip"
- "io"
- "testing"
-
- "code.gitea.io/gitea/modules/json"
-
- "github.com/stretchr/testify/assert"
- )
-
- const (
- author = "gitea"
- description = "Package Description"
- projectURL = "https://gitea.io"
- repositoryURL = "https://gitea.io/gitea/gitea"
- )
-
- func TestParseMetadataFromBox(t *testing.T) {
- createArchive := func(files map[string][]byte) io.Reader {
- var buf bytes.Buffer
- zw := gzip.NewWriter(&buf)
- tw := tar.NewWriter(zw)
- for filename, content := range files {
- hdr := &tar.Header{
- Name: filename,
- Mode: 0o600,
- Size: int64(len(content)),
- }
- tw.WriteHeader(hdr)
- tw.Write(content)
- }
- tw.Close()
- zw.Close()
- return &buf
- }
-
- t.Run("MissingInfoFile", func(t *testing.T) {
- data := createArchive(map[string][]byte{"dummy.txt": {}})
-
- metadata, err := ParseMetadataFromBox(data)
- assert.NotNil(t, metadata)
- assert.NoError(t, err)
- })
-
- t.Run("Valid", func(t *testing.T) {
- content, err := json.Marshal(map[string]string{
- "description": description,
- "author": author,
- "website": projectURL,
- "repository": repositoryURL,
- })
- assert.NoError(t, err)
-
- data := createArchive(map[string][]byte{"info.json": content})
-
- metadata, err := ParseMetadataFromBox(data)
- assert.NotNil(t, metadata)
- assert.NoError(t, err)
-
- assert.Equal(t, author, metadata.Author)
- assert.Equal(t, description, metadata.Description)
- assert.Equal(t, projectURL, metadata.ProjectURL)
- assert.Equal(t, repositoryURL, metadata.RepositoryURL)
- })
- }
-
- func TestParseInfoFile(t *testing.T) {
- t.Run("UnknownKeys", func(t *testing.T) {
- content, err := json.Marshal(map[string]string{
- "package": "",
- "dummy": "",
- })
- assert.NoError(t, err)
-
- metadata, err := ParseInfoFile(bytes.NewReader(content))
- assert.NotNil(t, metadata)
- assert.NoError(t, err)
-
- assert.Empty(t, metadata.Author)
- assert.Empty(t, metadata.Description)
- assert.Empty(t, metadata.ProjectURL)
- assert.Empty(t, metadata.RepositoryURL)
- })
-
- t.Run("Valid", func(t *testing.T) {
- content, err := json.Marshal(map[string]string{
- "description": description,
- "author": author,
- "website": projectURL,
- "repository": repositoryURL,
- })
- assert.NoError(t, err)
-
- metadata, err := ParseInfoFile(bytes.NewReader(content))
- assert.NotNil(t, metadata)
- assert.NoError(t, err)
-
- assert.Equal(t, author, metadata.Author)
- assert.Equal(t, description, metadata.Description)
- assert.Equal(t, projectURL, metadata.ProjectURL)
- assert.Equal(t, repositoryURL, metadata.RepositoryURL)
- })
- }
|