photoprism/internal/entity/auth_session_login_test.go
Michael Mayer 6abbc39017 Security: Add http rate limiter and auto tls mode #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-10-11 22:44:11 +02:00

77 lines
1.6 KiB
Go

package entity
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
"github.com/photoprism/photoprism/internal/form"
)
func TestSessionLogIn(t *testing.T) {
const clientIp = "1.2.3.4"
rec := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(rec)
t.Run("Admin", func(t *testing.T) {
m := NewSession(UnixDay, UnixHour*6)
m.SetClientIP(clientIp)
// Create login form.
frm := form.Login{
UserName: "admin",
Password: "photoprism",
}
// Create HTTP request.
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
ctx.Request.RemoteAddr = "1.2.3.4"
// Try to log in.
if err := m.LogIn(frm, ctx); err != nil {
t.Fatal(err)
}
})
t.Run("WrongPassword", func(t *testing.T) {
m := NewSession(UnixDay, UnixHour*6)
m.SetClientIP(clientIp)
// Create login form.
frm := form.Login{
UserName: "admin",
Password: "wrong",
}
// Create HTTP request.
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
ctx.Request.RemoteAddr = "1.2.3.4"
// Try to log in.
if err := m.LogIn(frm, ctx); err == nil {
t.Fatal("login should fail")
}
})
t.Run("InvalidUser", func(t *testing.T) {
m := NewSession(UnixDay, UnixHour*6)
m.SetClientIP(clientIp)
// Create login form.
frm := form.Login{
UserName: "foo",
Password: "password",
}
// Create HTTP request.
ctx.Request = httptest.NewRequest(http.MethodPost, "/api/v1/session", form.AsReader(frm))
ctx.Request.RemoteAddr = "1.2.3.4"
// Try to log in.
if err := m.LogIn(frm, ctx); err == nil {
t.Fatal("login should fail")
}
})
}