diff --git a/internal/ostree/ostree_test.go b/internal/ostree/ostree_test.go new file mode 100644 index 000000000..d6eabc17f --- /dev/null +++ b/internal/ostree/ostree_test.go @@ -0,0 +1,62 @@ +package ostree + +import ( + "fmt" + "net/http" + "net/http/httptest" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestOstreeResolveRef(t *testing.T) { + goodRef := "5330bb1b8820944567f519de66ad6354c729b6b490dea1c5a7ba320c9f147c58" + badRef := "not a ref" + + handler := http.NewServeMux() + handler.HandleFunc("/refs/heads/rhel/8/x86_64/edge", func(w http.ResponseWriter, r *http.Request) { + http.NotFound(w, r) + }) + handler.HandleFunc("/refs/heads/test_forbidden", func(w http.ResponseWriter, r *http.Request) { + http.Error(w, "", http.StatusForbidden) + }) + handler.HandleFunc("/refs/heads/get_bad_ref", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, badRef) + }) + + handler.HandleFunc("/refs/heads/test_redir", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, "/refs/heads/valid/ostree/ref", http.StatusFound) + }) + handler.HandleFunc("/refs/heads/valid/ostree/ref", func(w http.ResponseWriter, r *http.Request) { + fmt.Fprint(w, goodRef) + }) + + srv := httptest.NewServer(handler) + defer srv.Close() + + type input struct { + location string + ref string + } + validCases := map[input]string{ + {srv.URL, "test_redir"}: goodRef, + {srv.URL, "valid/ostree/ref"}: goodRef, + } + for in, expOut := range validCases { + out, err := ResolveRef(in.location, in.ref) + assert.NoError(t, err) + assert.Equal(t, expOut, out) + } + + errCases := map[input]string{ + {"not-a-url", "a-bad-ref"}: "Get \"not-a-url/refs/heads/a-bad-ref\": unsupported protocol scheme \"\"", + {"http://0.0.0.0:10/repo", "whatever"}: "Get \"http://0.0.0.0:10/repo/refs/heads/whatever\": dial tcp 0.0.0.0:10: connect: connection refused", + {srv.URL, "rhel/8/x86_64/edge"}: fmt.Sprintf("ostree repository \"%s/refs/heads/rhel/8/x86_64/edge\" returned status: 404 Not Found", srv.URL), + {srv.URL, "test_forbidden"}: fmt.Sprintf("ostree repository \"%s/refs/heads/test_forbidden\" returned status: 403 Forbidden", srv.URL), + {srv.URL, "get_bad_ref"}: fmt.Sprintf("ostree repository \"%s/refs/heads/get_bad_ref\" returned invalid reference", srv.URL), + } + for in, expMsg := range errCases { + _, err := ResolveRef(in.location, in.ref) + assert.EqualError(t, err, expMsg) + } +} diff --git a/internal/weldr/api_test.go b/internal/weldr/api_test.go index 82c7a6b47..b8c07403c 100644 --- a/internal/weldr/api_test.go +++ b/internal/weldr/api_test.go @@ -28,7 +28,6 @@ import ( "github.com/BurntSushi/toml" "github.com/google/go-cmp/cmp" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -1357,55 +1356,3 @@ func TestModulesList(t *testing.T) { test.TestRoute(t, api, true, "GET", c.Path, ``, c.ExpectedStatus, c.ExpectedJSON) } } - -func TestOstreeResolveRef(t *testing.T) { - goodRef := "5330bb1b8820944567f519de66ad6354c729b6b490dea1c5a7ba320c9f147c58" - badRef := "not a ref" - - handler := http.NewServeMux() - handler.HandleFunc("/refs/heads/rhel/8/x86_64/edge", func(w http.ResponseWriter, r *http.Request) { - http.NotFound(w, r) - }) - handler.HandleFunc("/refs/heads/test_forbidden", func(w http.ResponseWriter, r *http.Request) { - http.Error(w, "", http.StatusForbidden) - }) - handler.HandleFunc("/refs/heads/get_bad_ref", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, badRef) - }) - - handler.HandleFunc("/refs/heads/test_redir", func(w http.ResponseWriter, r *http.Request) { - http.Redirect(w, r, "/refs/heads/valid/ostree/ref", http.StatusFound) - }) - handler.HandleFunc("/refs/heads/valid/ostree/ref", func(w http.ResponseWriter, r *http.Request) { - fmt.Fprint(w, goodRef) - }) - - srv := httptest.NewServer(handler) - defer srv.Close() - - type input struct { - location string - ref string - } - validCases := map[input]string{ - {srv.URL, "test_redir"}: goodRef, - {srv.URL, "valid/ostree/ref"}: goodRef, - } - for in, expOut := range validCases { - out, err := ostreeResolveRef(in.location, in.ref) - assert.NoError(t, err) - assert.Equal(t, expOut, out) - } - - errCases := map[input]string{ - {"not-a-url", "a-bad-ref"}: "Get \"not-a-url/refs/heads/a-bad-ref\": unsupported protocol scheme \"\"", - {"http://0.0.0.0:10/repo", "whatever"}: "Get \"http://0.0.0.0:10/repo/refs/heads/whatever\": dial tcp 0.0.0.0:10: connect: connection refused", - {srv.URL, "rhel/8/x86_64/edge"}: fmt.Sprintf("ostree repository \"%s/refs/heads/rhel/8/x86_64/edge\" returned status: 404 Not Found", srv.URL), - {srv.URL, "test_forbidden"}: fmt.Sprintf("ostree repository \"%s/refs/heads/test_forbidden\" returned status: 403 Forbidden", srv.URL), - {srv.URL, "get_bad_ref"}: fmt.Sprintf("ostree repository \"%s/refs/heads/get_bad_ref\" returned invalid reference", srv.URL), - } - for in, expMsg := range errCases { - _, err := ostreeResolveRef(in.location, in.ref) - assert.EqualError(t, err, expMsg) - } -}