2
0
forked from sim0n00ps/OF-DL
OF-DL/OF DL.Tests/Services/AuthServiceTests.cs

84 lines
2.6 KiB
C#

using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
using OF_DL.Models;
using OF_DL.Services;
namespace OF_DL.Tests.Services;
[Collection("NonParallel")]
public class AuthServiceTests
{
[Fact]
public async Task LoadFromFileAsync_ReturnsFalseWhenMissing()
{
using TempFolder temp = new();
using CurrentDirectoryScope _ = new(temp.Path);
AuthService service = CreateService();
bool result = await service.LoadFromFileAsync();
Assert.False(result);
Assert.Null(service.CurrentAuth);
}
[Fact]
public async Task SaveToFileAsync_WritesAuthFile()
{
using TempFolder temp = new();
using CurrentDirectoryScope _ = new(temp.Path);
AuthService service = CreateService();
service.CurrentAuth = new Auth
{
UserId = "123", UserAgent = "agent", XBc = "xbc", Cookie = "auth_id=123; sess=abc;"
};
await service.SaveToFileAsync();
Assert.True(File.Exists("auth.json"));
string json = await File.ReadAllTextAsync("auth.json");
Auth? saved = JsonConvert.DeserializeObject<Auth>(json);
Assert.NotNull(saved);
Assert.Equal("123", saved.UserId);
Assert.Equal("agent", saved.UserAgent);
Assert.Equal("xbc", saved.XBc);
Assert.Equal("auth_id=123; sess=abc;", saved.Cookie);
}
[Fact]
public void ValidateCookieString_NormalizesAndPersists()
{
using TempFolder temp = new();
using CurrentDirectoryScope _ = new(temp.Path);
AuthService service = CreateService();
service.CurrentAuth = new Auth { Cookie = "auth_id=123; other=1; sess=abc" };
service.ValidateCookieString();
Assert.Equal("auth_id=123; sess=abc;", service.CurrentAuth.Cookie);
Assert.True(File.Exists("auth.json"));
string json = File.ReadAllText("auth.json");
Auth? saved = JsonConvert.DeserializeObject<Auth>(json);
Assert.NotNull(saved);
Assert.Equal("auth_id=123; sess=abc;", saved.Cookie);
}
[Fact]
public void Logout_DeletesAuthAndChromeData()
{
using TempFolder temp = new();
using CurrentDirectoryScope _ = new(temp.Path);
AuthService service = CreateService();
Directory.CreateDirectory("chromium-data");
File.WriteAllText("chromium-data/test.txt", "x");
File.WriteAllText("auth.json", "{}");
service.Logout();
Assert.False(Directory.Exists("chromium-data"));
Assert.False(File.Exists("auth.json"));
}
private static AuthService CreateService() =>
new(new ServiceCollection().BuildServiceProvider());
}