Change to select by username because that makes more sense
This commit is contained in:
parent
f59593e9e8
commit
c8b8f87f6c
@ -36,7 +36,7 @@ func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action,
|
|||||||
return nil, e.error
|
return nil, e.error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *errorStore) SelectUserByID(id int) (*models.User, error) {
|
func (e *errorStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||||
return nil, e.error
|
return nil, e.error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ type Store interface {
|
|||||||
SelectPlanByID(id int) (*Plan, error)
|
SelectPlanByID(id int) (*Plan, error)
|
||||||
InsertPlan(plan *Plan) (int, error)
|
InsertPlan(plan *Plan) (int, error)
|
||||||
SelectActionsByPlanID(plan *Plan) ([]*Action, error)
|
SelectActionsByPlanID(plan *Plan) ([]*Action, error)
|
||||||
SelectUserByID(id int) (*User, error)
|
SelectUserByUsername(username string) (*User, error)
|
||||||
InsertUser(user *User) (int, error)
|
InsertUser(user *User) (int, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,8 +43,8 @@ func (ms *multiStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action
|
|||||||
return ms.actions, nil
|
return ms.actions, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *multiStore) SelectUserByID(id int) (*models.User, error) {
|
func (ms *multiStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||||
return &models.User{UserID: int64(id), Username: "test", DisplayName: "Ted Est", Password: []byte("oh no")}, nil
|
return &models.User{UserID: int64(1), Username: username, DisplayName: "Ted Est", Password: []byte("oh no")}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *multiStore) InsertUser(user *models.User) (int, error) {
|
func (ms *multiStore) InsertUser(user *models.User) (int, error) {
|
||||||
|
@ -22,9 +22,9 @@ type UserNoPassword struct {
|
|||||||
DisplayName string `json:"display_name"`
|
DisplayName string `json:"display_name"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// User returns a single plan from the store by plan_id.
|
// UserByUsername returns a single user by the unique username.
|
||||||
func (m *Model) User(id int) (*UserNoPassword, error) {
|
func (m *Model) UserByUsername(username string) (*UserNoPassword, error) {
|
||||||
user, err := m.SelectUserByID(id)
|
user, err := m.SelectUserByUsername(username)
|
||||||
if user == nil {
|
if user == nil {
|
||||||
return nil, wrapNotFound(err)
|
return nil, wrapNotFound(err)
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ func TestModelUsers(t *testing.T) {
|
|||||||
[]*models.Plan{p}}
|
[]*models.Plan{p}}
|
||||||
m := models.New(ss)
|
m := models.New(ss)
|
||||||
|
|
||||||
user, err := m.User(3)
|
user, err := m.UserByUsername("test")
|
||||||
assert.Nil(err)
|
assert.Nil(err)
|
||||||
assert.NotNil(user)
|
assert.NotNil(user)
|
||||||
}
|
}
|
||||||
@ -26,7 +26,7 @@ func TestErrorUsers(t *testing.T) {
|
|||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
m := getErrorModel(fmt.Errorf("err"))
|
m := getErrorModel(fmt.Errorf("err"))
|
||||||
|
|
||||||
user, err := m.User(3)
|
user, err := m.UserByUsername("snth")
|
||||||
assert.Nil(user)
|
assert.Nil(user)
|
||||||
assert.NotNil(err)
|
assert.NotNil(err)
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ func (ms *multiStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action
|
|||||||
return ms.actions, nil
|
return ms.actions, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *multiStore) SelectUserByID(id int) (*models.User, error) {
|
func (ms *multiStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,7 +119,7 @@ func (e *errorStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Action,
|
|||||||
return nil, e.error
|
return nil, e.error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *errorStore) SelectUserByID(id int) (*models.User, error) {
|
func (e *errorStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||||
return nil, e.error
|
return nil, e.error
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +172,7 @@ func (e *onlyCreateStore) SelectActionsByPlanID(plan *models.Plan) ([]*models.Ac
|
|||||||
return nil, e.error
|
return nil, e.error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *onlyCreateStore) SelectUserByID(id int) (*models.User, error) {
|
func (e *onlyCreateStore) SelectUserByUsername(name string) (*models.User, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,24 +5,20 @@ import (
|
|||||||
"gitea.deepak.science/deepak/gogmagog/models"
|
"gitea.deepak.science/deepak/gogmagog/models"
|
||||||
"github.com/go-chi/chi"
|
"github.com/go-chi/chi"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func newUserRouter(m *models.Model) http.Handler {
|
func newUserRouter(m *models.Model) http.Handler {
|
||||||
router := chi.NewRouter()
|
router := chi.NewRouter()
|
||||||
// router.Post("/", postUserFunc(m))
|
// router.Post("/", postUserFunc(m))
|
||||||
router.Get("/{userid}", getUserByIDFunc(m))
|
router.Get("/{username}", getUserByUsernameFunc(m))
|
||||||
return router
|
return router
|
||||||
}
|
}
|
||||||
|
|
||||||
func getUserByIDFunc(m *models.Model) http.HandlerFunc {
|
func getUserByUsernameFunc(m *models.Model) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
id, err := strconv.Atoi(chi.URLParam(r, "userid"))
|
username := chi.URLParam(r, "username")
|
||||||
if err != nil {
|
|
||||||
notFoundHandler(w, r)
|
user, err := m.UserByUsername(username)
|
||||||
return
|
|
||||||
}
|
|
||||||
user, err := m.User(id)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if models.IsNotFoundError(err) {
|
if models.IsNotFoundError(err) {
|
||||||
notFoundHandler(w, r)
|
notFoundHandler(w, r)
|
||||||
|
@ -18,7 +18,7 @@ CREATE TABLE IF NOT EXISTS actions(
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS users(
|
CREATE TABLE IF NOT EXISTS users(
|
||||||
user_id serial PRIMARY KEY,
|
user_id serial PRIMARY KEY,
|
||||||
username VARCHAR(50) NOT NULL,
|
username VARCHAR(50) NOT NULL UNIQUE,
|
||||||
display_name VARCHAR (100) NOT NULL,
|
display_name VARCHAR (100) NOT NULL,
|
||||||
password bytea,
|
password bytea,
|
||||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
||||||
|
@ -135,9 +135,9 @@ func (store *postgresStore) ConnectionLive() error {
|
|||||||
return store.db.Ping()
|
return store.db.Ping()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (store *postgresStore) SelectUserByID(id int) (*models.User, error) {
|
func (store *postgresStore) SelectUserByUsername(username string) (*models.User, error) {
|
||||||
user := models.User{}
|
user := models.User{}
|
||||||
err := store.db.Get(&user, store.db.Rebind("SELECT user_id, username, display_name, password FROM users WHERE user_id = ?"), id)
|
err := store.db.Get(&user, store.db.Rebind("SELECT user_id, username, display_name, password FROM users WHERE username = ?"), username)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSelectUserById(t *testing.T) {
|
func TestSelectUserByUsername(t *testing.T) {
|
||||||
// set up test
|
// set up test
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
@ -27,12 +27,12 @@ func TestSelectUserById(t *testing.T) {
|
|||||||
}).
|
}).
|
||||||
AddRow(id, username, displayName, password)
|
AddRow(id, username, displayName, password)
|
||||||
|
|
||||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE user_id = \$1`).
|
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE username = \$1`).
|
||||||
WithArgs(id).
|
WithArgs(username).
|
||||||
WillReturnRows(rows)
|
WillReturnRows(rows)
|
||||||
|
|
||||||
// function under test
|
// function under test
|
||||||
user, err := str.SelectUserByID(1)
|
user, err := str.SelectUserByUsername(username)
|
||||||
|
|
||||||
// test results
|
// test results
|
||||||
assert.Nil(err)
|
assert.Nil(err)
|
||||||
@ -49,13 +49,11 @@ func TestSelectUserById(t *testing.T) {
|
|||||||
func TestErrUserByID(t *testing.T) {
|
func TestErrUserByID(t *testing.T) {
|
||||||
assert := assert.New(t)
|
assert := assert.New(t)
|
||||||
|
|
||||||
idToUse := 1
|
|
||||||
|
|
||||||
str, mock := getDbMock(t)
|
str, mock := getDbMock(t)
|
||||||
|
username := "snth"
|
||||||
|
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE username = \$1`).WithArgs(username).WillReturnError(fmt.Errorf("example error"))
|
||||||
|
|
||||||
mock.ExpectQuery(`^SELECT user_id, username, display_name, password FROM users WHERE user_id = \$1`).WithArgs(idToUse).WillReturnError(fmt.Errorf("example error"))
|
user, err := str.SelectUserByUsername(username)
|
||||||
|
|
||||||
user, err := str.SelectUserByID(idToUse)
|
|
||||||
assert.NotNil(err)
|
assert.NotNil(err)
|
||||||
assert.Nil(user)
|
assert.Nil(user)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user