package container import ( "fmt" "leit.com/LAPP_CHEERSSON_BACKEND/global" "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 := &global.User{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 := &global.User{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 := &global.User{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 := &global.User{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 := &global.User{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 := &global.User{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("清理会话映射失败!") } }