diff --git a/routes/currentUser.go b/routes/currentUser.go index dc4cdad..e65ce13 100644 --- a/routes/currentUser.go +++ b/routes/currentUser.go @@ -33,6 +33,10 @@ func getMeFunc(m *models.Model) http.HandlerFunc { user, err := m.UserByUsername(username, userID) if err != nil { + if models.IsNotFoundError(err) { + notFoundHandler(w, r) + return + } serverError(w, err) return } diff --git a/routes/currentUser_test.go b/routes/currentUser_test.go new file mode 100644 index 0000000..31486df --- /dev/null +++ b/routes/currentUser_test.go @@ -0,0 +1,62 @@ +package routes_test + +import ( + "gitea.deepak.science/deepak/gogmagog/models" + "gitea.deepak.science/deepak/gogmagog/routes" + "gitea.deepak.science/deepak/gogmagog/tokens" + "github.com/stretchr/testify/assert" + "net/http" + "net/http/httptest" + "testing" +) + +func TestEmptyCurrentUser(t *testing.T) { + // set up + assert := assert.New(t) + m := getEmptyModel() + router := routes.NewCurrentUserRouter(m) + req, _ := http.NewRequestWithContext(tokens.GetContextForUserValues(3, "testing"), "GET", "/", nil) + + rr := httptest.NewRecorder() + + // function under test + router.ServeHTTP(rr, req) + + // check results + status := rr.Code + assert.Equal(http.StatusNotFound, status) + +} + +func TestSingleUser(t *testing.T) { + // set up + assert := assert.New(t) + m := getEmptyModel() + + idToUse := 1 + username := "testing_username" + displayName := "testing_name" + password := "pass" + m.CreateUser(&models.CreateUserRequest{Username: username, DisplayName: displayName, Password: password}) + + router := routes.NewCurrentUserRouter(m) + req, _ := http.NewRequestWithContext(tokens.GetContextForUserValues(idToUse, username), "GET", "/", nil) + + rr := httptest.NewRecorder() + + // function under test + router.ServeHTTP(rr, req) + + // check results + status := rr.Code + assert.Equal(http.StatusOK, status) + expected := `{ + "user_id": 1, + "username": "testing_username", + "display_name": "testing_name" + }` + assert.JSONEq(expected, rr.Body.String()) + contentType := rr.Header().Get("Content-Type") + assert.Equal("application/json", contentType) + +}