mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-05-15 14:12:27 +00:00
Fix tests
This commit is contained in:
parent
474556b8a6
commit
4208513978
4 changed files with 14 additions and 15 deletions
|
@ -22,13 +22,9 @@ namespace LBPUnion.ProjectLighthouse.Tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<HttpResponseMessage> AuthenticateResponse(int number = 0) {
|
public async Task<HttpResponseMessage> AuthenticateResponse(int number = 0) {
|
||||||
const char nullChar = (char)0x00;
|
|
||||||
const string username = "unitTestUser";
|
const string username = "unitTestUser";
|
||||||
|
|
||||||
string nullString = "";
|
string stringContent = $"{LoginData.UsernamePrefix}{username}{number}{(char)0x00}";
|
||||||
for(int i = 0; i < 80; i++) nullString += nullChar;
|
|
||||||
|
|
||||||
string stringContent = $"{nullString}{username}{number}{nullChar}";
|
|
||||||
|
|
||||||
HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new StringContent(stringContent));
|
HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new StringContent(stringContent));
|
||||||
return response;
|
return response;
|
||||||
|
|
|
@ -16,9 +16,9 @@ namespace LBPUnion.ProjectLighthouse.Tests {
|
||||||
await semaphore.WaitAsync();
|
await semaphore.WaitAsync();
|
||||||
|
|
||||||
HttpResponseMessage result = await this.AuthenticatedUploadDataRequest("LITTLEBIGPLANETPS3_XML/match", Array.Empty<byte>(), loginResult.AuthTicket);
|
HttpResponseMessage result = await this.AuthenticatedUploadDataRequest("LITTLEBIGPLANETPS3_XML/match", Array.Empty<byte>(), loginResult.AuthTicket);
|
||||||
Assert.False(result.IsSuccessStatusCode);
|
|
||||||
|
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
|
Assert.False(result.IsSuccessStatusCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
[DatabaseFact]
|
[DatabaseFact]
|
||||||
|
@ -32,9 +32,9 @@ namespace LBPUnion.ProjectLighthouse.Tests {
|
||||||
loginResult.AuthTicket
|
loginResult.AuthTicket
|
||||||
);
|
);
|
||||||
|
|
||||||
Assert.True(result.IsSuccessStatusCode);
|
|
||||||
|
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
|
Assert.True(result.IsSuccessStatusCode);
|
||||||
}
|
}
|
||||||
public async Task<int> GetPlayerCount() => Convert.ToInt32(await this.Client.GetStringAsync("LITTLEBIGPLANETPS3_XML/totalPlayerCount"));
|
public async Task<int> GetPlayerCount() => Convert.ToInt32(await this.Client.GetStringAsync("LITTLEBIGPLANETPS3_XML/totalPlayerCount"));
|
||||||
|
|
||||||
|
|
|
@ -20,14 +20,16 @@ namespace LBPUnion.ProjectLighthouse.Controllers {
|
||||||
public async Task<IActionResult> Login() {
|
public async Task<IActionResult> Login() {
|
||||||
string body = await new StreamReader(this.Request.Body).ReadToEndAsync();
|
string body = await new StreamReader(this.Request.Body).ReadToEndAsync();
|
||||||
|
|
||||||
LoginData loginData;
|
LoginData? loginData;
|
||||||
try {
|
try {
|
||||||
loginData = LoginData.CreateFromString(body);
|
loginData = LoginData.CreateFromString(body);
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
return this.BadRequest();
|
loginData = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(loginData == null) return this.BadRequest();
|
||||||
|
|
||||||
Token? token = await this.database.AuthenticateUser(loginData);
|
Token? token = await this.database.AuthenticateUser(loginData);
|
||||||
|
|
||||||
if(token == null) return this.StatusCode(403, "");
|
if(token == null) return this.StatusCode(403, "");
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#nullable enable
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
@ -8,25 +9,25 @@ namespace LBPUnion.ProjectLighthouse.Types {
|
||||||
/// The data sent from POST /LOGIN.
|
/// The data sent from POST /LOGIN.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class LoginData {
|
public class LoginData {
|
||||||
public string Username { get; set; }
|
public string Username { get; set; } = null!;
|
||||||
// public string GameVersion { get; set; }
|
|
||||||
// public int UnknownNumber { get; set; } // Seems to increment by 1000 every login attempt
|
public static readonly string UsernamePrefix = Encoding.ASCII.GetString(new byte[] { 0x04, 0x00, 0x20 });
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Converts a X-I-5 Ticket into `LoginData`.
|
/// Converts a X-I-5 Ticket into `LoginData`.
|
||||||
/// https://www.psdevwiki.com/ps3/X-I-5-Ticket
|
/// https://www.psdevwiki.com/ps3/X-I-5-Ticket
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static LoginData CreateFromString(string str) {
|
public static LoginData? CreateFromString(string str) {
|
||||||
str = str.Replace("\b", ""); // Remove backspace characters
|
str = str.Replace("\b", ""); // Remove backspace characters
|
||||||
|
|
||||||
using MemoryStream ms = new(Encoding.ASCII.GetBytes(str));
|
using MemoryStream ms = new(Encoding.ASCII.GetBytes(str));
|
||||||
using BinaryReader reader = new(ms);
|
using BinaryReader reader = new(ms);
|
||||||
|
|
||||||
string usernamePrefix = Encoding.ASCII.GetString(new byte[] { 0x04, 0x00, 0x20 });
|
if(!str.Contains(UsernamePrefix)) return null;
|
||||||
|
|
||||||
LoginData loginData = new();
|
LoginData loginData = new();
|
||||||
|
|
||||||
reader.BaseStream.Position = str.IndexOf(usernamePrefix, StringComparison.Ordinal) + usernamePrefix.Length;
|
reader.BaseStream.Position = str.IndexOf(UsernamePrefix, StringComparison.Ordinal) + UsernamePrefix.Length;
|
||||||
loginData.Username = BinaryHelper.ReadString(reader).Replace("\0", string.Empty);
|
loginData.Username = BinaryHelper.ReadString(reader).Replace("\0", string.Empty);
|
||||||
|
|
||||||
return loginData;
|
return loginData;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue