added tests
diff --git a/hooks/sentry/sentry.go b/hooks/sentry/sentry.go
index 5c07eb2..74e8bbe 100644
--- a/hooks/sentry/sentry.go
+++ b/hooks/sentry/sentry.go
@@ -1,4 +1,4 @@
-package sentry_hook
+package logrus_sentry
import (
"github.com/Sirupsen/logrus"
diff --git a/hooks/sentry/sentry_test.go b/hooks/sentry/sentry_test.go
new file mode 100644
index 0000000..747d75f
--- /dev/null
+++ b/hooks/sentry/sentry_test.go
@@ -0,0 +1,93 @@
+package logrus_sentry
+
+import (
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "net/http/httptest"
+ "strings"
+ "testing"
+
+ "github.com/Sirupsen/logrus"
+ "github.com/getsentry/raven-go"
+)
+
+const (
+ message = "error message"
+ server_name = "testserver.internal"
+ logger_name = "test.logger"
+)
+
+func getTestLogger() *logrus.Logger {
+ l := logrus.New()
+ l.Out = ioutil.Discard
+ return l
+}
+
+func getTestDSN(t *testing.T) (string, <-chan *raven.Packet, func()) {
+ pch := make(chan *raven.Packet, 1)
+ s := httptest.NewServer(http.HandlerFunc(func(rw http.ResponseWriter, req *http.Request) {
+ defer req.Body.Close()
+ d := json.NewDecoder(req.Body)
+ p := &raven.Packet{}
+ err := d.Decode(p)
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+
+ pch <- p
+ }))
+
+ fragments := strings.SplitN(s.URL, "://", 2)
+ dsn := "%s://public:secret@%s/sentry/project-id"
+
+ return fmt.Sprintf(dsn, fragments[0], fragments[1]), pch, s.Close
+}
+
+func TestSpecialFields(t *testing.T) {
+ logger := getTestLogger()
+ dsn, pch, closeFn := getTestDSN(t)
+ defer closeFn()
+
+ hook, err := NewSentryHook(dsn, []logrus.Level{
+ logrus.ErrorLevel,
+ })
+
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ logger.Hooks.Add(hook)
+ logger.WithFields(logrus.Fields{
+ "server_name": server_name,
+ "logger": logger_name,
+ }).Error(message)
+
+ packet := <-pch
+ if packet.Logger != logger_name {
+ t.Errorf("logger should have been %s, was %s", logger_name, packet.Logger)
+ }
+
+ if packet.ServerName != server_name {
+ t.Errorf("server_name should have been %s, was %s", server_name, packet.ServerName)
+ }
+}
+
+func TestSentryHandler(t *testing.T) {
+ logger := getTestLogger()
+ dsn, pch, closeFn := getTestDSN(t)
+ defer closeFn()
+ hook, err := NewSentryHook(dsn, []logrus.Level{
+ logrus.ErrorLevel,
+ })
+ if err != nil {
+ t.Fatal(err.Error())
+ }
+ logger.Hooks.Add(hook)
+
+ logger.Error(message)
+ packet := <-pch
+ if packet.Message != message {
+ t.Errorf("message should have been %s, was %s", message, packet.Message)
+ }
+}