diff --git a/internal/trace/context_test.go b/internal/trace/context_test.go
new file mode 100644
index 000000000..3d640b968
--- /dev/null
+++ b/internal/trace/context_test.go
@@ -0,0 +1,51 @@
+// Copied and adapted from oras (https://github.com/oras-project/oras)
+/*
+Copyright The ORAS Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package trace
+
+import (
+	"context"
+	"testing"
+
+	"github.com/notaryproject/notation-go/log"
+	"github.com/sirupsen/logrus"
+)
+
+func TestWithLoggerLevel(t *testing.T) {
+	t.Run("debug level log", func(t *testing.T) {
+		ctx := WithLoggerLevel(context.Background(), logrus.DebugLevel)
+		logger := log.GetLogger(ctx)
+		if logrusLogger, ok := logger.(*logrus.Logger); ok {
+			if logrusLogger.Level != logrus.DebugLevel {
+				t.Errorf("log level want = %v, got %v", logrus.DebugLevel, logrusLogger.Level)
+			}
+		} else {
+			t.Fatal("should log with logrus")
+		}
+	})
+
+	t.Run("info level log", func(t *testing.T) {
+		ctx := WithLoggerLevel(context.Background(), logrus.InfoLevel)
+		logger := log.GetLogger(ctx)
+		if logrusLogger, ok := logger.(*logrus.Logger); ok {
+			if logrusLogger.Level != logrus.InfoLevel {
+				t.Errorf("log level want = %v, got %v", logrus.InfoLevel, logrusLogger.Level)
+			}
+		} else {
+			t.Fatal("should log with logrus")
+		}
+	})
+}
diff --git a/internal/trace/transport_test.go b/internal/trace/transport_test.go
new file mode 100644
index 000000000..601f93072
--- /dev/null
+++ b/internal/trace/transport_test.go
@@ -0,0 +1,76 @@
+// Copied and adapted from oras (https://github.com/oras-project/oras)
+/*
+Copyright The ORAS Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package trace
+
+import (
+	"errors"
+	"net/http"
+	"testing"
+)
+
+type TransportMock struct {
+	resp    *http.Response
+	respErr error
+}
+
+// RoundTrip calls base roundtrip while keeping track of the current request.
+func (t *TransportMock) RoundTrip(req *http.Request) (resp *http.Response, err error) {
+	resp = t.resp
+	err = t.respErr
+	return
+}
+
+func TestTransport_RoundTrip(t *testing.T) {
+	t.Run("nil response", func(t *testing.T) {
+		req := &http.Request{}
+		transport := NewTransport(&TransportMock{})
+		_, err := transport.RoundTrip(req)
+		if err != nil {
+			t.Fatal("should have no error")
+		}
+	})
+
+	t.Run("error response", func(t *testing.T) {
+		errMsg := "response error"
+		req := &http.Request{}
+		transport := NewTransport(&TransportMock{respErr: errors.New(errMsg)})
+		_, err := transport.RoundTrip(req)
+		if err.Error() != errMsg {
+			t.Fatalf("want err = %s, got %s", errMsg, err)
+		}
+	})
+
+	t.Run("valid response", func(t *testing.T) {
+		req := &http.Request{}
+		transport := NewTransport(&TransportMock{resp: &http.Response{}})
+		_, err := transport.RoundTrip(req)
+		if err != nil {
+			t.Fatal("should have no error")
+		}
+	})
+
+	t.Run("request header with Authorization", func(t *testing.T) {
+		header := http.Header{}
+		header.Add("Authorization", "abc")
+		req := &http.Request{Header: header}
+		transport := NewTransport(&TransportMock{resp: &http.Response{}})
+		_, err := transport.RoundTrip(req)
+		if err != nil {
+			t.Fatal("should have no error")
+		}
+	})
+}
diff --git a/internal/version/version_test.go b/internal/version/version_test.go
new file mode 100644
index 000000000..01d2f7971
--- /dev/null
+++ b/internal/version/version_test.go
@@ -0,0 +1,24 @@
+package version
+
+import "testing"
+
+func TestGetVersion(t *testing.T) {
+	t.Run("BuildMetadata is empty", func(t *testing.T) {
+		Version = "1.0"
+		BuildMetadata = ""
+		v := GetVersion()
+		if Version != v {
+			t.Errorf("Should return Version = %s, got %s", Version, v)
+		}
+	})
+
+	t.Run("BuildMetadata is not empty", func(t *testing.T) {
+		Version = "1.0"
+		BuildMetadata = "unreleased"
+		v := GetVersion()
+		want := "1.0+unreleased"
+		if want != v {
+			t.Errorf("Should return Version = %s, got %s", want, v)
+		}
+	})
+}
