@ -3,14 +3,9 @@
package sqlstore
import (
"context"
"fmt"
"testing"
"time"
"github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@ -21,89 +16,3 @@ func TestIntegration_GetAdminStats(t *testing.T) {
err := GetAdminStats ( & query )
require . NoError ( t , err )
}
func TestIntegration_GetUserStats ( t * testing . T ) {
InitTestDB ( t )
cmd := & models . CreateUserCommand {
Email : "admin@test.com" ,
Name : "Admin" ,
Login : "admin" ,
OrgName : MainOrgName ,
IsAdmin : true ,
}
err := CreateUser ( context . Background ( ) , cmd )
require . NoError ( t , err )
firstUser := cmd . Result
{
defaultAutoAssign := setting . AutoAssignOrg
defaultOrgID := setting . AutoAssignOrgId
defaultRole := setting . AutoAssignOrgRole
setting . AutoAssignOrg = true
setting . AutoAssignOrgId = int ( firstUser . OrgId )
setting . AutoAssignOrgRole = "Editor"
defer func ( ) {
setting . AutoAssignOrg = defaultAutoAssign
setting . AutoAssignOrgId = defaultOrgID
setting . AutoAssignOrgRole = defaultRole
} ( )
}
const nUsers = 100
users := make ( [ ] models . User , nUsers )
for i := range users {
cmd := & models . CreateUserCommand {
Email : fmt . Sprintf ( "usertest%v@test.com" , i ) ,
Name : fmt . Sprintf ( "user name %v" , i ) ,
Login : fmt . Sprintf ( "user_test_%v_login" , i ) ,
OrgId : firstUser . OrgId ,
}
err := CreateUser ( context . Background ( ) , cmd )
require . NoError ( t , err )
users [ i ] = cmd . Result
}
orgs := make ( [ ] models . Org , 10 )
for i := range orgs {
cmd := & models . CreateOrgCommand {
Name : fmt . Sprintf ( "org %d" , i ) ,
UserId : firstUser . Id ,
}
err := CreateOrg ( cmd )
require . NoError ( t , err )
orgs [ i ] = cmd . Result
}
for _ , u := range users {
for _ , o := range orgs {
cmd := & models . AddOrgUserCommand {
Role : "Viewer" ,
UserId : u . Id ,
OrgId : o . Id ,
}
err := AddOrgUser ( cmd )
require . NoErrorf ( t , err , "uID %d oID %d" , u . Id , o . Id )
}
}
query := models . GetUserStatsQuery {
MustUpdate : true ,
}
ctx , cancel := context . WithTimeout ( context . Background ( ) , 10 * time . Second )
defer cancel ( )
err = GetUserStats ( ctx , & query )
require . NoError ( t , err )
assert . EqualValues ( t , models . UserStats {
Users : nUsers + 1 ,
Admins : 1 ,
Editors : nUsers ,
Viewers : 0 ,
} , query . Result )
}