You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

218 lines
6.4 KiB

package container
import (
"fmt"
"testing"
)
func TestDefaultSessionManager_New(t *testing.T) {
informationManager := NewInformationManager()
defaultSessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
if defaultSessionManager == nil {
t.Fatalf("创建失败!")
}
if defaultSessionManager.informationManager == nil {
t.Fatalf("组件信息管理器不能为空!")
}
if defaultSessionManager.transactionHandlerFactory == nil {
t.Fatalf("事务句柄工厂不能为空!")
}
if len(defaultSessionManager.user2SessionMapping) != 0 {
t.Fatalf("用户会话映射量错误!")
}
if len(defaultSessionManager.sessionMapping) != 0 {
t.Fatalf("会话映射数量错误!")
}
}
func TestDefaultSessionManager_New_NullInformationManager(t *testing.T) {
defer func() {
if err := recover(); err != "组件信息管理器不能为空!" {
t.Fatalf("意外错误:%s", err)
}
}()
_ = NewDefaultSessionManager(nil, transactionHandlerFactoryMock)
t.Fatalf("意外的没有错误!")
}
func TestDefaultSessionManager_New_NullTransactionHandlerFactoryMock(t *testing.T) {
defer func() {
if err := recover(); err != "事务句柄工厂不能为空!" {
t.Fatalf("意外错误:%s", err)
}
}()
informationManager := NewInformationManager()
_ = NewDefaultSessionManager(informationManager, nil)
t.Fatalf("意外的没有错误!")
}
func TestDefaultSessionManager_GetSession(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId"
userId := "userId"
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err != nil {
t.Fatalf("意外错误:%s", err.Error())
}
session, ok := sessionManager.sessionMapping[sessionId]
if !ok {
t.Fatalf("没有找到会话!")
}
if session.user.Userid != userId {
t.Fatalf("会话的用户标识不正确!")
}
session, ok = sessionManager.user2SessionMapping[userId]
if !ok {
t.Fatalf("没有找到与人员关联的会话!")
}
if session.sessionId != sessionId {
t.Fatalf("会话的会话标识不正确!")
}
}
func TestDefaultSessionManager_GetSession_Repeated(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId1"
userId := "userId"
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err != nil {
t.Fatalf("意外错误:%s", err.Error())
}
sessionId = "sessionId2"
_, err = sessionManager.GetSession(sessionId, user)
if err != nil {
t.Fatalf("意外错误:%s", err.Error())
}
if len(sessionManager.sessionMapping) != 1 {
t.Fatalf("会话映射射数量错误!")
}
if len(sessionManager.user2SessionMapping) != 1 {
t.Fatalf("用户会话映射数量错误!")
}
session, ok := sessionManager.sessionMapping[sessionId]
if !ok {
t.Fatalf("没有找到会话!")
}
if session.user.Userid != userId {
t.Fatalf("会话的用户标识不正确!")
}
session, ok = sessionManager.user2SessionMapping[userId]
if !ok {
t.Fatalf("没有找到与人员关联的会话!")
}
if session.sessionId != sessionId {
t.Fatalf("会话的会话标识不正确!")
}
}
func TestDefaultSessionManager_GetSession_EmptySessionId(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := ""
userId := "userId"
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err == nil {
t.Fatalf("意外的没有错误!")
}
if err.Error() != fmt.Sprintf("会话标识不能为空!") {
t.Fatalf("意外错误:%s", err.Error())
}
}
func TestDefaultSessionManager_GetSession_NullUser(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId"
_, err := sessionManager.GetSession(sessionId, nil)
if err == nil {
t.Fatalf("意外的没有错误!")
}
if err.Error() != fmt.Sprintf("用户信息不能为空!") {
t.Fatalf("意外错误:%s", err.Error())
}
}
func TestDefaultSessionManager_GetSession_EmptyUserId(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId"
userId := ""
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err == nil {
t.Fatalf("意外的没有错误!")
}
if err.Error() != fmt.Sprintf("用户标识不能为空!") {
t.Fatalf("意外错误:%s", err.Error())
}
}
func TestDefaultSessionManager_ClearSession(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId"
userId := "userId"
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err != nil {
t.Fatalf("意外错误:%s", err.Error())
}
sessionManager.ClearSession(sessionId)
if len(sessionManager.sessionMapping) != 0 {
t.Fatalf("会话映射射数量错误!")
}
if len(sessionManager.user2SessionMapping) != 0 {
t.Fatalf("用户会话映射数量错误!")
}
_, ok := sessionManager.user2SessionMapping[userId]
if ok {
t.Fatalf("清理用户会话映射失败!")
}
_, ok = sessionManager.sessionMapping[sessionId]
if ok {
t.Fatalf("清理会话映射失败!")
}
}
func TestDefaultSessionManager_ClearSession_Repeated(t *testing.T) {
informationManager := NewInformationManager()
sessionManager := NewDefaultSessionManager(informationManager, transactionHandlerFactoryMock)
sessionId := "sessionId"
userId := "userId"
user := &UserInfo{Userid: userId}
_, err := sessionManager.GetSession(sessionId, user)
if err != nil {
t.Fatalf("意外错误:%s", err.Error())
}
sessionManager.ClearSession(sessionId)
sessionManager.ClearSession(sessionId)
if len(sessionManager.sessionMapping) != 0 {
t.Fatalf("会话映射射数量错误!")
}
if len(sessionManager.user2SessionMapping) != 0 {
t.Fatalf("用户会话映射数量错误!")
}
_, ok := sessionManager.user2SessionMapping[userId]
if ok {
t.Fatalf("清理用户会话映射失败!")
}
_, ok = sessionManager.sessionMapping[sessionId]
if ok {
t.Fatalf("清理会话映射失败!")
}
}