1+ #include " SignInOutRepeatedlyTest.h"
2+ #include " Engine/World.h"
3+ #include " Sequence/SequenceAPI.h"
4+ #include " Tests/AutomationCommon.h"
5+ #include " Tests/AutomationEditorCommon.h"
6+
7+ IMPLEMENT_COMPLEX_AUTOMATION_TEST (FSignInOutRepeatedlyTest, " SequencePlugin.EndToEnd.SessionManagement.SignInOutRepeatedlyTest" , EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter | EAutomationTestFlags::ClientContext)
8+
9+ void FSignInOutRepeatedlyTest::GetTests(TArray<FString>& OutBeautifiedNames, TArray<FString>& OutTestCommands) const
10+ {
11+ OutBeautifiedNames.Add (TEXT (" Sign In and Out Repeatedly Test" ));
12+ OutTestCommands.Add (TEXT (" " ));
13+ }
14+
15+ bool FSignInOutRepeatedlyTest::RunTest (const FString& Parameters)
16+ {
17+ AddInfo (TEXT (" Starting Sign In and Out Repeatedly Test" ));
18+
19+ ADD_LATENT_AUTOMATION_COMMAND (FStartPIECommand (true ));
20+ ADD_LATENT_AUTOMATION_COMMAND (FEngineWaitLatentCommand (1 .0f ));
21+
22+ ADD_LATENT_AUTOMATION_COMMAND (FFunctionLatentCommand ([this ]()
23+ {
24+ USignInOutRepeatedlyTestHelper* TestHelper = NewObject<USignInOutRepeatedlyTestHelper>();
25+ TestHelper->ParentTest = this ;
26+ TestHelper->RunTest ();
27+
28+ ADD_LATENT_AUTOMATION_COMMAND (FWaitForSignInOutCompletion (TestHelper));
29+ return true ;
30+ }));
31+
32+ return true ;
33+ }
34+
35+ void USignInOutRepeatedlyTestHelper::RunTest ()
36+ {
37+
38+ Authenticator = NewObject<UAuthenticator>();
39+ if (!Authenticator)
40+ {
41+ ParentTest->AddError (TEXT (" Error creating authenticator" ));
42+ bTestComplete = true ;
43+ return ;
44+ }
45+
46+ Authenticator->AuthSuccess .AddDynamic (this , &USignInOutRepeatedlyTestHelper::OnAuthSuccess);
47+ Authenticator->AuthFailure .AddDynamic (this , &USignInOutRepeatedlyTestHelper::OnAuthFailure);
48+
49+ ConnectAsGuest ();
50+ }
51+
52+ void USignInOutRepeatedlyTestHelper::ConnectAsGuest ()
53+ {
54+ Authenticator->GuestLogin (false );
55+ }
56+
57+ void USignInOutRepeatedlyTestHelper::OnAuthSuccess ()
58+ {
59+ if (Repetitions < MaxRepetitions)
60+ {
61+ Repetitions++;
62+ if (TOptional<USequenceWallet*> OptionalSequenceWallet = USequenceWallet::Get (); OptionalSequenceWallet.IsSet () && OptionalSequenceWallet.GetValue ())
63+ {
64+ OptionalSequenceWallet.GetValue ()->SignOut ();
65+ }
66+ else
67+ {
68+ bTestComplete = true ;
69+ ParentTest->AddError (TEXT (" Failed to get SequenceWallet" ));
70+ return ;
71+ }
72+ ConnectAsGuest ();
73+ }
74+ else
75+ {
76+ bTestComplete = true ;
77+ ParentTest->AddInfo (FString::Printf (TEXT (" Successfully signed in and out %d times" ), MaxRepetitions));
78+ }
79+ }
80+
81+ void USignInOutRepeatedlyTestHelper::OnAuthFailure (const FString& Error)
82+ {
83+ bTestComplete = true ;
84+ ParentTest->AddError (FString::Printf (TEXT (" Authentication failed: %s" ), *Error));
85+ }
86+
87+ bool FWaitForSignInOutCompletion::Update ()
88+ {
89+ return TestHelper->IsTestComplete ();
90+ }
0 commit comments