diff --git a/pkg/api/index.go b/pkg/api/index.go index 87e2993200381976458a09ccc3335089eb3abac7..0b5fdb07db48e963f703ec39fda18022a8d66bf9 100644 --- a/pkg/api/index.go +++ b/pkg/api/index.go @@ -53,7 +53,7 @@ func SearchIndexHandler(params index.SearchIndexParams) middleware.Responder { } if params.Query.PublicKey != nil { af := pki.NewArtifactFactory(swag.StringValue(params.Query.PublicKey.Format)) - keyReader, err := util.FileOrURLReadCloser(httpReqCtx, params.Query.PublicKey.URL.String(), params.Query.PublicKey.Content, true) + keyReader, err := util.FileOrURLReadCloser(httpReqCtx, params.Query.PublicKey.URL.String(), params.Query.PublicKey.Content) if err != nil { return handleRekorAPIError(params, http.StatusBadRequest, err, malformedPublicKey) } diff --git a/pkg/types/rekord/v0.0.1/entry.go b/pkg/types/rekord/v0.0.1/entry.go index 1957829576186bbc4032e9fc74e7ea7daed9a2f8..277a331f0aebf11232a420f4d1ff6dff6ac75fee 100644 --- a/pkg/types/rekord/v0.0.1/entry.go +++ b/pkg/types/rekord/v0.0.1/entry.go @@ -195,7 +195,7 @@ func (v *V001Entry) FetchExternalEntities(ctx context.Context) error { defer hashW.Close() defer sigW.Close() - dataReadCloser, err := util.FileOrURLReadCloser(ctx, v.RekordObj.Data.URL.String(), v.RekordObj.Data.Content, false) + dataReadCloser, err := util.FileOrURLReadCloser(ctx, v.RekordObj.Data.URL.String(), v.RekordObj.Data.Content) if err != nil { return closePipesOnError(err) } @@ -237,7 +237,7 @@ func (v *V001Entry) FetchExternalEntities(ctx context.Context) error { defer close(sigResult) sigReadCloser, err := util.FileOrURLReadCloser(ctx, v.RekordObj.Signature.URL.String(), - v.RekordObj.Signature.Content, false) + v.RekordObj.Signature.Content) if err != nil { return closePipesOnError(err) } @@ -262,7 +262,7 @@ func (v *V001Entry) FetchExternalEntities(ctx context.Context) error { defer close(keyResult) keyReadCloser, err := util.FileOrURLReadCloser(ctx, v.RekordObj.Signature.PublicKey.URL.String(), - v.RekordObj.Signature.PublicKey.Content, false) + v.RekordObj.Signature.PublicKey.Content) if err != nil { return closePipesOnError(err) } diff --git a/pkg/types/rpm/v0.0.1/entry.go b/pkg/types/rpm/v0.0.1/entry.go index 88ded536e45da11d413e94d948f6b1db80b1cf8f..62024dc225188fcd649f9761f5b4f3a0f2f40bbf 100644 --- a/pkg/types/rpm/v0.0.1/entry.go +++ b/pkg/types/rpm/v0.0.1/entry.go @@ -198,7 +198,7 @@ func (v *V001Entry) FetchExternalEntities(ctx context.Context) error { defer sigW.Close() defer rpmW.Close() - dataReadCloser, err := util.FileOrURLReadCloser(ctx, v.RPMModel.Package.URL.String(), v.RPMModel.Package.Content, true) + dataReadCloser, err := util.FileOrURLReadCloser(ctx, v.RPMModel.Package.URL.String(), v.RPMModel.Package.Content) if err != nil { return closePipesOnError(err) } @@ -236,7 +236,7 @@ func (v *V001Entry) FetchExternalEntities(ctx context.Context) error { g.Go(func() error { keyReadCloser, err := util.FileOrURLReadCloser(ctx, v.RPMModel.PublicKey.URL.String(), - v.RPMModel.PublicKey.Content, false) + v.RPMModel.PublicKey.Content) if err != nil { return closePipesOnError(err) } diff --git a/pkg/util/fetch.go b/pkg/util/fetch.go index 5b9a00f118e67e9dfb0e2143c1dba9149ac2bfc3..b1862a69269e6a75797f445c4ecc40f678b3ac4f 100644 --- a/pkg/util/fetch.go +++ b/pkg/util/fetch.go @@ -16,9 +16,7 @@ limitations under the License. package util import ( - "bufio" "bytes" - "compress/gzip" "context" "fmt" "io" @@ -27,7 +25,7 @@ import ( ) // FileOrURLReadCloser Note: caller is responsible for closing ReadCloser returned from method! -func FileOrURLReadCloser(ctx context.Context, url string, content []byte, checkGZIP bool) (io.ReadCloser, error) { +func FileOrURLReadCloser(ctx context.Context, url string, content []byte) (io.ReadCloser, error) { var dataReader io.ReadCloser if url != "" { //TODO: set timeout here, SSL settings? @@ -44,22 +42,7 @@ func FileOrURLReadCloser(ctx context.Context, url string, content []byte, checkG return nil, fmt.Errorf("error received while fetching artifact: %v", resp.Status) } - if checkGZIP { - // read first 512 bytes to determine if content is gzip compressed - bufReader := bufio.NewReaderSize(resp.Body, 512) - ctBuf, err := bufReader.Peek(512) - if err != nil && err != bufio.ErrBufferFull && err != io.EOF { - return nil, err - } - - if http.DetectContentType(ctBuf) == "application/x-gzip" { - dataReader, _ = gzip.NewReader(io.MultiReader(bufReader, resp.Body)) - } else { - dataReader = ioutil.NopCloser(io.MultiReader(bufReader, resp.Body)) - } - } else { - dataReader = resp.Body - } + dataReader = resp.Body } else { dataReader = ioutil.NopCloser(bytes.NewReader(content)) } diff --git a/tests/e2e-test.sh b/tests/e2e-test.sh index 389bdeebc9b943ab53e69c2c659cd56008c3a8ea..773281af7777a6668eadf5a6d567f088102a5ec8 100755 --- a/tests/e2e-test.sh +++ b/tests/e2e-test.sh @@ -1,5 +1,5 @@ #!/bin/bash -#set -ex +set -e testdir=$(dirname "$0") echo "starting services" @@ -26,7 +26,7 @@ done echo echo "running tests" -TMPDIR="$(mktemp -d -t rekor_test)" +TMPDIR="$(mktemp -d -t rekor_test.XXXXXX)" touch $TMPDIR.rekor.yaml trap "rm -rf $TMPDIR" EXIT -TMPDIR=$TMPDIR go test -tags=e2e ./tests/ \ No newline at end of file +TMPDIR=$TMPDIR go test -tags=e2e ./tests/ diff --git a/tests/e2e_test.go b/tests/e2e_test.go index 54d88144fdeef9aae65c1d8c94ba383e6b94f004..e15ccfd34c4ae07352cd68ffcc1603ae701fd80a 100644 --- a/tests/e2e_test.go +++ b/tests/e2e_test.go @@ -303,8 +303,10 @@ func TestWatch(t *testing.T) { go func() { b, err := cmd.CombinedOutput() t.Log(string(b)) - if err != nil { - t.Fatal(err) + if cmd.ProcessState.Exited() && cmd.ProcessState.ExitCode() != 0 { + if err != nil { + t.Fatal(err) + } } }()