debian-forge-composer/internal/remotefile/resolver_test.go
Gianluca Zuccarelli b7e7bafb2e internal/remotefile: create a remote file resolver
Create a resolver to fetch the contents of a
remote file which can be used at build time.
The initial usecase for this resolver is to
resolve remote gpgkeys but the resolver has
been made more generic for general files.
2023-03-16 09:55:39 +00:00

102 lines
2 KiB
Go

package remotefile
import (
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSingleInputResolver(t *testing.T) {
server := makeTestServer()
url := server.URL + "/key1"
resolver := NewResolver()
expectedOutput := Spec{
URL: url,
Content: []byte("key1\n"),
ResolutionError: nil,
}
resolver.Add(url)
resultItems := resolver.Finish()
assert.Contains(t, resultItems, expectedOutput)
for _, item := range resultItems {
assert.Nil(t, item.ResolutionError)
}
}
func TestMultiInputResolver(t *testing.T) {
server := makeTestServer()
urlOne := server.URL + "/key1"
urlTwo := server.URL + "/key2"
expectedOutputOne := Spec{
URL: urlOne,
Content: []byte("key1\n"),
ResolutionError: nil,
}
expectedOutputTwo := Spec{
URL: urlTwo,
Content: []byte("key2\n"),
ResolutionError: nil,
}
resolver := NewResolver()
resolver.Add(urlOne)
resolver.Add(urlTwo)
resultItems := resolver.Finish()
assert.Contains(t, resultItems, expectedOutputOne)
assert.Contains(t, resultItems, expectedOutputTwo)
for _, item := range resultItems {
assert.Nil(t, item.ResolutionError)
}
}
func TestInvalidInputResolver(t *testing.T) {
url := ""
resolver := NewResolver()
resolver.Add(url)
expectedErr := fmt.Errorf("File resolver: url is required")
resultItems := resolver.Finish()
for _, item := range resultItems {
assert.Equal(t, item.ResolutionError.Reason, expectedErr.Error())
}
}
func TestMultiInvalidInputResolver(t *testing.T) {
urlOne := ""
urlTwo := "hello"
resolver := NewResolver()
resolver.Add(urlOne)
resolver.Add(urlTwo)
expectedErrMessageOne := "File resolver: url is required"
expectedErrMessageTwo := fmt.Sprintf("File resolver: invalid url %s", urlTwo)
resultItems := resolver.Finish()
errs := []string{}
for _, item := range resultItems {
errs = append(errs, item.ResolutionError.Reason)
}
assert.Contains(t, errs, expectedErrMessageOne)
assert.Contains(t, errs, expectedErrMessageTwo)
}