Files
ft/CodexOutput/upserver/network-http-401-unity.cs

28 lines
1.8 KiB
C#

using asap.core;
using System;
using System.Threading.Tasks;
using game.Account;
var liveApi = GContext.container.Resolve<ICustomServerMgr>();
var liveUser = GContext.container.Resolve<game.IUserService>();
if (liveApi.ApiBaseUri.AbsoluteUri != "http://s101.local:18080/" || liveUser.ApiPlayerId != "101") return "Refused: baseline changed";
var endpoint = new Uri("http://127.0.0.1:62848/");
using var session = new S101AccountSession(endpoint);
var output = new System.Text.StringBuilder();
foreach (var mode in new [] { "401" })
{
var start = DateTime.UtcNow;
var failed = await session.LoginAsync("102");
var elapsed = (DateTime.UtcNow - start).TotalSeconds;
var expected = mode == "401" ? AccountLoginError.Http : mode == "reset" ? AccountLoginError.Network : AccountLoginError.Timeout;
if (failed.Error != expected || session.IsAuthenticated || session.InternalId != 0 || session.PlayerId != null)
throw new Exception("Failure isolation mismatch: " + mode + "/" + failed.Error);
if (mode == "401" && failed.StatusCode != 401) throw new Exception("Missing real 401");
if (mode == "timeout" && elapsed < 14) throw new Exception("Timeout was not real production duration");
var retried = await session.LoginAsync("102");
if (!retried.Success || !session.IsAuthenticated || session.PlayerId != "102") throw new Exception("Recovery failed: " + retried.Error);
var read = await session.CheckAuthorizationAsync();
if (!read.Success) throw new Exception("Server rejected recovered Cookie: " + read.Error);
output.AppendLine(mode + ": " + failed.Error + "; seconds=" + elapsed.ToString("F1") + "; Retry=OK; AuthorizedRead=OK");
}
return output.ToString() + "Live101Unchanged=" + (liveUser.IsAuthorized && liveUser.ApiPlayerId == "101" && liveApi.ApiBaseUri.AbsoluteUri == "http://s101.local:18080/");