package sessdata

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	"github.com/bjdgyc/anylink/base"
)

// func TestCheckUser(t *testing.T) {
// 	user["user1"] = User{Password: "7c4a8d09ca3762af61e59520943dc26494f8941b"}
// 	user["user2"] = User{Password: "7c4a8d09ca3762af61e59520943dc26494f8941c"}
//
// 	var res bool
// 	res = CheckUser("user1", "123456", "")
// 	AssertTrue(t, res == true)
//
// 	res = CheckUser("user2", "123457", "")
// 	AssertTrue(t, res == false)
// }

func TestLimitClient(t *testing.T) {
	assert := assert.New(t)
	base.Cfg.MaxClient = 2
	base.Cfg.MaxUserClient = 1

	res1 := LimitClient("user1", false)
	res2 := LimitClient("user1", false)
	res3 := LimitClient("user2", false)
	res4 := LimitClient("user3", false)
	res5 := LimitClient("user1", true)

	assert.True(res1)
	assert.False(res2)
	assert.True(res3)
	assert.False(res4)
	assert.True(res5)

}

func TestLimitWait(t *testing.T) {
	assert := assert.New(t)
	limit := NewLimitRater(1, 2)
	err := limit.Wait(2)
	assert.Nil(err)
	start := time.Now()
	err = limit.Wait(2)
	assert.Nil(err)
	err = limit.Wait(1)
	assert.Nil(err)
	end := time.Now()
	sub := end.Sub(start)
	assert.Equal(3, int(sub.Seconds()))
}