84 lines
2.6 KiB
C#
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());
|
|
}
|