54 lines
2.1 KiB
Go
54 lines
2.1 KiB
Go
package releasekit_test
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
releasekit "go.maximumdirect.net/releasekit"
|
|
)
|
|
|
|
func TestInvalidDestinationFailsStandaloneAndAutomaticPreflight(t *testing.T) {
|
|
repository := newTaggedDeliveryConsumer(t)
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
t.Errorf("invalid destination made a hosted request: %s", r.URL.Path)
|
|
http.Error(w, "unexpected request", http.StatusInternalServerError)
|
|
}))
|
|
defer server.Close()
|
|
for _, test := range []struct {
|
|
name, setting string
|
|
change func(*releasekit.DeliveryDestination)
|
|
}{
|
|
{"URL", "base URL", func(d *releasekit.DeliveryDestination) { d.BaseURL = "ssh://forge.example" }},
|
|
{"owner", "owner", func(d *releasekit.DeliveryDestination) { d.Owner = "owner/child" }},
|
|
{"repository", "repository", func(d *releasekit.DeliveryDestination) { d.Repository = "repo/child" }},
|
|
} {
|
|
t.Run(test.name, func(t *testing.T) {
|
|
destination := facadeDeliveryDestination(server.URL)
|
|
test.change(&destination)
|
|
assertFailure := func(err error) {
|
|
t.Helper()
|
|
var preflight *releasekit.DeliveryPreflightError
|
|
if !errors.As(err, &preflight) || preflight.Kind != releasekit.DeliveryPreflightInvalidDestination || preflight.Err == nil {
|
|
t.Fatalf("error = %#v, want invalid destination with cause", err)
|
|
}
|
|
if !strings.Contains(err.Error(), test.setting) {
|
|
t.Fatalf("error = %v, want invalid setting %q", err, test.setting)
|
|
}
|
|
}
|
|
assertFailure(releasekit.PreflightDelivery(context.Background(), destination))
|
|
result, err := releasekit.Deliver(context.Background(), releasekit.DeliveryRequest{
|
|
RepositoryDir: repository, Product: "Fixture", Version: "v1.2.3", Destination: destination,
|
|
Build: &releasekit.BuildSpec{MainPackage: "./missing", BinaryName: "fixture", Targets: []releasekit.Target{{OS: "linux", Arch: "amd64"}}},
|
|
})
|
|
assertFailure(err)
|
|
if result.State != releasekit.DeliveryNotAttempted {
|
|
t.Fatalf("delivery state = %s, want not attempted", result.State)
|
|
}
|
|
})
|
|
}
|
|
}
|