/
InstanceAuthTests.cs
154 lines (129 loc) · 7.22 KB
/
InstanceAuthTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#if !DISABLE_PLAYFABCLIENT_API && !DISABLE_PLAYFABENTITY_API
using PlayFab.ClientModels;
namespace PlayFab.UUnit
{
public class InstanceAuthTests : UUnitTestCase
{
private TestTitleDataLoader.TestTitleData titleData;
private PlayFabAuthenticationContext player1 = new PlayFabAuthenticationContext();
private PlayFabAuthenticationContext player2 = new PlayFabAuthenticationContext();
private PlayFabClientInstanceAPI client1;
private PlayFabClientInstanceAPI client2;
private PlayFabAuthenticationInstanceAPI auth1;
private PlayFabAuthenticationInstanceAPI auth2;
public override void ClassSetUp()
{
titleData = TestTitleDataLoader.LoadTestTitleData();
PlayFabSettings.staticSettings.TitleId = titleData.titleId;
client1 = new PlayFabClientInstanceAPI(player1);
client2 = new PlayFabClientInstanceAPI(player2);
auth1 = new PlayFabAuthenticationInstanceAPI(player1);
auth2 = new PlayFabAuthenticationInstanceAPI(player2);
PlayFabSettings.staticPlayer.ForgetAllCredentials();
}
public override void SetUp(UUnitTestContext testContext)
{
maxRetry = 1;
VerifyCleanCreds(testContext);
}
public override void Tick(UUnitTestContext testContext)
{
// Tests are all async, no need to tick
}
public override void TearDown(UUnitTestContext testContext)
{
player1.ForgetAllCredentials();
player2.ForgetAllCredentials();
VerifyCleanCreds(testContext);
}
private void VerifyCleanCreds(UUnitTestContext testContext)
{
testContext.False(client1.IsClientLoggedIn(), "Client1 login did not clean up properly.");
testContext.False(client2.IsClientLoggedIn(), "Client2 login did not clean up properly.");
testContext.False(auth1.IsEntityLoggedIn(), "Entity1 login did not clean up properly.");
testContext.False(auth2.IsEntityLoggedIn(), "Entity2 login did not clean up properly.");
testContext.False(PlayFabSettings.staticPlayer.IsClientLoggedIn(), "Static client login did not clean up properly.");
testContext.False(PlayFabSettings.staticPlayer.IsEntityLoggedIn(), "Static entity login did not clean up properly.");
}
private void SharedErrorCallback(PlayFabError error)
{
// This error was not expected. Report it and fail.
((UUnitTestContext)error.CustomData).Fail(error.GenerateErrorReport());
}
[UUnitTest]
public void Instance1Login(UUnitTestContext testContext)
{
var loginRequest = new LoginWithCustomIDRequest
{
CustomId = PlayFabSettings.BuildIdentifier,
CreateAccount = true,
};
client1.LoginWithCustomID(loginRequest, PlayFabUUnitUtils.ApiActionWrapper<LoginResult>(testContext, Instance1Callback), PlayFabUUnitUtils.ApiActionWrapper<PlayFabError>(testContext, SharedErrorCallback), testContext);
}
private void Instance1Callback(LoginResult result)
{
var testContext = (UUnitTestContext)result.CustomData;
testContext.True(player1.IsClientLoggedIn(), "player1 client login failed, ");
testContext.True(client1.IsClientLoggedIn(), "client1 client login failed");
testContext.True(player1.IsEntityLoggedIn(), "player1 entity login failed");
testContext.True(auth1.IsEntityLoggedIn(), "auth1 entity login failed");
testContext.False(PlayFabSettings.staticPlayer.IsClientLoggedIn(), "p1 client context leaked to static context");
testContext.False(PlayFabSettings.staticPlayer.IsEntityLoggedIn(), "p1 entity context leaked to static context");
// Verify useful player information
testContext.NotNull(player1.PlayFabId);
testContext.NotNull(player1.EntityId);
testContext.NotNull(player1.EntityType);
testContext.EndTest(UUnitFinishState.PASSED, PlayFabSettings.staticSettings.TitleId + ", " + result.PlayFabId);
}
[UUnitTest]
public void Instance2Login(UUnitTestContext testContext)
{
var loginRequest = new LoginWithCustomIDRequest
{
CustomId = PlayFabSettings.BuildIdentifier,
CreateAccount = true,
};
client2.LoginWithCustomID(loginRequest, PlayFabUUnitUtils.ApiActionWrapper<LoginResult>(testContext, Instance2Callback), PlayFabUUnitUtils.ApiActionWrapper<PlayFabError>(testContext, SharedErrorCallback), testContext);
}
private void Instance2Callback(LoginResult result)
{
var testContext = (UUnitTestContext)result.CustomData;
testContext.True(player2.IsClientLoggedIn(), "player2 client login failed, ");
testContext.True(client2.IsClientLoggedIn(), "client2 client login failed");
testContext.True(player2.IsEntityLoggedIn(), "player2 entity login failed");
testContext.True(auth2.IsEntityLoggedIn(), "auth2 entity login failed");
testContext.False(PlayFabSettings.staticPlayer.IsClientLoggedIn(), "p2 client context leaked to static context");
testContext.False(PlayFabSettings.staticPlayer.IsEntityLoggedIn(), "p2 entity context leaked to static context");
// Verify useful player information
testContext.NotNull(player2.PlayFabId);
testContext.NotNull(player2.EntityId);
testContext.NotNull(player2.EntityType);
testContext.EndTest(UUnitFinishState.PASSED, PlayFabSettings.staticSettings.TitleId + ", " + result.PlayFabId);
}
#if !DISABLE_PLAYFAB_STATIC_API
[UUnitTest]
public void StaticLogin(UUnitTestContext testContext)
{
var loginRequest = new LoginWithCustomIDRequest
{
CustomId = PlayFabSettings.BuildIdentifier,
CreateAccount = true,
};
PlayFabClientAPI.LoginWithCustomID(loginRequest, PlayFabUUnitUtils.ApiActionWrapper<LoginResult>(testContext, StaticCallback), PlayFabUUnitUtils.ApiActionWrapper<PlayFabError>(testContext, SharedErrorCallback), testContext);
}
private void StaticCallback(LoginResult result)
{
var testContext = (UUnitTestContext)result.CustomData;
testContext.True(PlayFabSettings.staticPlayer.IsClientLoggedIn(), "p2 client context leaked to static context");
testContext.True(PlayFabSettings.staticPlayer.IsEntityLoggedIn(), "p2 entity context leaked to static context");
testContext.False(client1.IsClientLoggedIn(), "Static login leaked to Client1");
testContext.False(client2.IsClientLoggedIn(), "tatic login leaked to Client2");
testContext.False(auth1.IsEntityLoggedIn(), "Static login leaked to Auth1");
testContext.False(auth2.IsEntityLoggedIn(), "Static login leaked to Auth2");
PlayFabSettings.staticPlayer.ForgetAllCredentials();
testContext.EndTest(UUnitFinishState.PASSED, PlayFabSettings.staticSettings.TitleId + ", " + result.PlayFabId);
}
#endif
}
}
#endif