mirror of
https://github.com/hauler-dev/hauler.git
synced 2026-04-06 10:47:19 +00:00
* improved test coverage Signed-off-by: Adam Martin <adam.martin@ranchergovernment.com> * adjusted mapper_test for oddball oci files Signed-off-by: Adam Martin <adam.martin@ranchergovernment.com> --------- Signed-off-by: Adam Martin <adam.martin@ranchergovernment.com>
91 lines
2.0 KiB
Go
91 lines
2.0 KiB
Go
package server
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
|
|
// Register the filesystem storage driver for the distribution registry.
|
|
_ "github.com/distribution/distribution/v3/registry/storage/driver/filesystem"
|
|
|
|
"hauler.dev/go/hauler/internal/flags"
|
|
)
|
|
|
|
func TestNewTempRegistry_StartStop(t *testing.T) {
|
|
ctx := context.Background()
|
|
srv := NewTempRegistry(ctx, t.TempDir())
|
|
|
|
// Start the httptest server directly to avoid the Start() method's
|
|
// retry logic which only accepts HTTP 200, while /v2 returns 401
|
|
// from the distribution registry.
|
|
srv.Server.Start()
|
|
t.Cleanup(func() { srv.Stop() })
|
|
|
|
resp, err := http.Get(srv.Server.URL + "/v2")
|
|
if err != nil {
|
|
t.Fatalf("expected GET /v2 to succeed, got error: %v", err)
|
|
}
|
|
resp.Body.Close()
|
|
|
|
if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusUnauthorized {
|
|
t.Fatalf("expected status 200 or 401, got %d", resp.StatusCode)
|
|
}
|
|
|
|
// Stop and verify unreachable.
|
|
srv.Stop()
|
|
|
|
_, err = http.Get(srv.Server.URL + "/v2")
|
|
if err == nil {
|
|
t.Fatal("expected error after stopping server, got nil")
|
|
}
|
|
}
|
|
|
|
func TestNewTempRegistry_Registry(t *testing.T) {
|
|
ctx := context.Background()
|
|
srv := NewTempRegistry(ctx, t.TempDir())
|
|
|
|
srv.Server.Start()
|
|
t.Cleanup(func() { srv.Stop() })
|
|
|
|
host := srv.Registry()
|
|
if host == "" {
|
|
t.Fatal("expected non-empty registry host")
|
|
}
|
|
if strings.Contains(host, "http://") {
|
|
t.Fatalf("registry host should not contain protocol prefix, got %q", host)
|
|
}
|
|
}
|
|
|
|
func TestNewFile_Configuration(t *testing.T) {
|
|
ctx := context.Background()
|
|
opts := flags.ServeFilesOpts{
|
|
RootDir: t.TempDir(),
|
|
Port: 0,
|
|
Timeout: 0,
|
|
}
|
|
|
|
srv, err := NewFile(ctx, opts)
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got: %v", err)
|
|
}
|
|
if srv == nil {
|
|
t.Fatal("expected non-nil server")
|
|
}
|
|
}
|
|
|
|
func TestNewFile_DefaultPort(t *testing.T) {
|
|
ctx := context.Background()
|
|
opts := flags.ServeFilesOpts{
|
|
RootDir: t.TempDir(),
|
|
}
|
|
|
|
srv, err := NewFile(ctx, opts)
|
|
if err != nil {
|
|
t.Fatalf("expected no error, got: %v", err)
|
|
}
|
|
if srv == nil {
|
|
t.Fatal("expected non-nil server")
|
|
}
|
|
}
|