auth api work
This commit is contained in:
parent
5a23f5ecfe
commit
d295c13e78
@ -12,3 +12,17 @@ func MockAuthMiddleware(user db.User) gin.HandlerFunc {
|
|||||||
c.Set("session", session)
|
c.Set("session", session)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func InitUser(username string, password string) (*db.User, error) {
|
||||||
|
user := users.GetUser(username)
|
||||||
|
if user == nil {
|
||||||
|
user, _ = users.CreateUser(username)
|
||||||
|
}
|
||||||
|
passHash, _ := users.HashPassword(password)
|
||||||
|
user.PasswordHash = &passHash
|
||||||
|
res := db.Connection.Save(&user)
|
||||||
|
if res.Error != nil {
|
||||||
|
return nil, res.Error
|
||||||
|
}
|
||||||
|
return user, nil
|
||||||
|
}
|
||||||
|
|||||||
@ -55,6 +55,6 @@ func getMe(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
c.JSON(200, gin.H{
|
c.JSON(200, gin.H{
|
||||||
"loggedIn": true,
|
"loggedIn": true,
|
||||||
"user": session.(db.UserSession).User,
|
"user": session.(*db.UserSession).User,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,6 +15,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
|
// Set up test database file
|
||||||
|
os.Setenv("CLORTHO_DB_FILE", "test_clortho.db")
|
||||||
// Global setup
|
// Global setup
|
||||||
fmt.Println("Setting up resources...")
|
fmt.Println("Setting up resources...")
|
||||||
|
|
||||||
@ -50,21 +52,18 @@ func TestInitAuthEndpoints_authLogin(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestInitAuthEndpoints_getMe(t *testing.T) {
|
func TestInitAuthEndpoints_getMe(t *testing.T) {
|
||||||
_, err := users.InitAdminUser()
|
user, err := InitUser("admin", "password")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
admin := users.GetUser("admin")
|
|
||||||
r := gin.Default()
|
r := gin.Default()
|
||||||
SetupRouter(r, MockAuthMiddleware(*admin))
|
SetupRouter(r, MockAuthMiddleware(*user))
|
||||||
|
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
req, _ := http.NewRequest("GET", "/private/auth/me", nil)
|
req, _ := http.NewRequest("GET", "/private/auth/me", nil)
|
||||||
r.ServeHTTP(w, req)
|
r.ServeHTTP(w, req)
|
||||||
|
|
||||||
user := admin
|
|
||||||
strUser, _ := json.Marshal(user)
|
strUser, _ := json.Marshal(user)
|
||||||
assert.Equal(t, 200, w.Code)
|
assert.Equal(t, 200, w.Code)
|
||||||
assert.JSONEq(t, fmt.Sprintf(`{"valid": true, "user": %s}`, strUser), w.Body.String())
|
assert.JSONEq(t, fmt.Sprintf(`{"loggedIn": true, "user": %s}`, strUser), w.Body.String())
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ func main() {
|
|||||||
log.Fatal("Could not initialize connection to the DB", err)
|
log.Fatal("Could not initialize connection to the DB", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
adminPass, err := users.InitAdminUser()
|
adminPass, err := users.InitAdminUser(nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -46,6 +46,15 @@ func GetUser(username string) *db.User {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CreateUser(username string) (*db.User, error) {
|
||||||
|
user := db.User{Username: username}
|
||||||
|
result := db.Connection.Create(&user)
|
||||||
|
if result.Error != nil {
|
||||||
|
return nil, result.Error
|
||||||
|
}
|
||||||
|
return &user, nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetUsers() []db.User {
|
func GetUsers() []db.User {
|
||||||
var users []db.User
|
var users []db.User
|
||||||
db.Connection.Find(&users)
|
db.Connection.Find(&users)
|
||||||
@ -136,7 +145,7 @@ func GenerateJwt(sessionId uint) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func NewSession(user db.User) *db.UserSession {
|
func NewSession(user db.User) *db.UserSession {
|
||||||
session := db.UserSession{UserID: user.ID}
|
session := db.UserSession{User: user}
|
||||||
db.Connection.Create(&session)
|
db.Connection.Create(&session)
|
||||||
return &session
|
return &session
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user