don't execute fs check if the user has recent activity

The check could be expensive with some backends and is generally
only required the first time that a user logs in

Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
Nicola Murino
2022-02-24 16:11:35 +01:00
parent 670018f05e
commit f5a0559be6
16 changed files with 355 additions and 156 deletions

View File

@@ -881,6 +881,39 @@ func TestGetTLSVersion(t *testing.T) {
assert.Equal(t, uint16(tls.VersionTLS13), tlsVer)
}
func TestCleanPath(t *testing.T) {
assert.Equal(t, "/", util.CleanPath("/"))
assert.Equal(t, "/", util.CleanPath("."))
assert.Equal(t, "/", util.CleanPath("/."))
assert.Equal(t, "/", util.CleanPath("/a/.."))
assert.Equal(t, "/a", util.CleanPath("/a/"))
assert.Equal(t, "/a", util.CleanPath("a/"))
// filepath.ToSlash does not touch \ as char on unix systems
// so os.PathSeparator is used for windows compatible tests
bslash := string(os.PathSeparator)
assert.Equal(t, "/", util.CleanPath(bslash))
assert.Equal(t, "/", util.CleanPath(bslash+bslash))
assert.Equal(t, "/a", util.CleanPath(bslash+"a"+bslash))
assert.Equal(t, "/a", util.CleanPath("a"+bslash))
assert.Equal(t, "/a/b/c", util.CleanPath(bslash+"a"+bslash+bslash+"b"+bslash+bslash+"c"+bslash))
assert.Equal(t, "/C:/a", util.CleanPath("C:"+bslash+"a"))
}
func TestUserRecentActivity(t *testing.T) {
u := dataprovider.User{}
res := u.HasRecentActivity()
assert.False(t, res)
u.LastLogin = util.GetTimeAsMsSinceEpoch(time.Now())
res = u.HasRecentActivity()
assert.True(t, res)
u.LastLogin = util.GetTimeAsMsSinceEpoch(time.Now().Add(1 * time.Minute))
res = u.HasRecentActivity()
assert.False(t, res)
u.LastLogin = util.GetTimeAsMsSinceEpoch(time.Now().Add(1 * time.Second))
res = u.HasRecentActivity()
assert.True(t, res)
}
func BenchmarkBcryptHashing(b *testing.B) {
bcryptPassword := "bcryptpassword"
for i := 0; i < b.N; i++ {