Skip to content

Commit 3709683

Browse files
Added session management test where we log in and out repeatedly 3 times
1 parent 2599211 commit 3709683

3 files changed

Lines changed: 127 additions & 1 deletion

File tree

Plugins/SequenceTests/Source/SequenceTests/Private/SessionManagementEndToEndTests/FederateAuthTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include "Tests/AutomationCommon.h"
44
#include "Tests/AutomationEditorCommon.h"
55

6-
IMPLEMENT_COMPLEX_AUTOMATION_TEST(FWaaSFederatedAuthTests, "SequencePlugin.EndToEnd.WaaSFederatedAuthTests.FederateAuthTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter | EAutomationTestFlags::ClientContext)
6+
IMPLEMENT_COMPLEX_AUTOMATION_TEST(FWaaSFederatedAuthTests, "SequencePlugin.EndToEnd.SessionManagement.FederateAuthTest", EAutomationTestFlags::EditorContext | EAutomationTestFlags::EngineFilter | EAutomationTestFlags::ClientContext)
77

88
void FWaaSFederatedAuthTests::GetTests(TArray<FString>& OutBeautifiedNames, TArray<FString>& OutTestCommands) const
99
{
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
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+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
#pragma once
2+
3+
#include "CoreMinimal.h"
4+
#include "Misc/AutomationTest.h"
5+
#include "SequencePlugin/Public/Authenticator.h"
6+
#include "SignInOutRepeatedlyTest.generated.h"
7+
8+
class FSignInOutRepeatedlyTest;
9+
10+
UCLASS()
11+
class USignInOutRepeatedlyTestHelper : public UObject
12+
{
13+
GENERATED_BODY()
14+
15+
public:
16+
UFUNCTION()
17+
void OnAuthSuccess();
18+
19+
UFUNCTION()
20+
void OnAuthFailure(const FString& Error);
21+
22+
void RunTest();
23+
bool IsTestComplete() const { return bTestComplete; }
24+
25+
FSignInOutRepeatedlyTest* ParentTest;
26+
27+
private:
28+
bool bTestComplete = false;
29+
UAuthenticator* Authenticator = nullptr;
30+
int32 Repetitions = 0;
31+
static const int32 MaxRepetitions = 3;
32+
33+
void ConnectAsGuest();
34+
};
35+
36+
DEFINE_LATENT_AUTOMATION_COMMAND_ONE_PARAMETER(FWaitForSignInOutCompletion, USignInOutRepeatedlyTestHelper*, TestHelper);

0 commit comments

Comments
 (0)