mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-21 08:04:26 +08:00
fix.在线安装器,启动器
This commit is contained in:
118
LanMountainDesktop.Tests/OobeSessionCommitServiceTests.cs
Normal file
118
LanMountainDesktop.Tests/OobeSessionCommitServiceTests.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
using LanMountainDesktop.Launcher;
|
||||
using LanMountainDesktop.Launcher.Models;
|
||||
using Xunit;
|
||||
|
||||
namespace LanMountainDesktop.Tests;
|
||||
|
||||
public sealed class OobeSessionCommitServiceTests : IDisposable
|
||||
{
|
||||
private readonly string _tempRoot = Path.Combine(
|
||||
Path.GetTempPath(),
|
||||
"LanMountainDesktop.Tests",
|
||||
nameof(OobeSessionCommitServiceTests),
|
||||
Guid.NewGuid().ToString("N"));
|
||||
|
||||
[Fact]
|
||||
public void ResolveDataRoot_ForChoice_DoesNotWriteConfigOrState()
|
||||
{
|
||||
var resolver = new DataLocationResolver(_tempRoot);
|
||||
|
||||
var dataRoot = resolver.ResolveDataRoot(DataLocationMode.Portable);
|
||||
|
||||
Assert.Equal(Path.Combine(_tempRoot, "Desktop"), dataRoot);
|
||||
Assert.False(File.Exists(resolver.ResolveConfigPath()));
|
||||
Assert.False(File.Exists(GetCompletedStatePath(dataRoot)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Commit_WritesSettingsAndCompletedState_OnlyAfterFinalDraft()
|
||||
{
|
||||
var resolver = new DataLocationResolver(_tempRoot);
|
||||
var oobeState = new OobeStateService(
|
||||
_tempRoot,
|
||||
executionSnapshot: new LauncherExecutionSnapshot(false, "tester", "S-1-5-test"));
|
||||
var context = CommandContext.FromArgs(["launch"]);
|
||||
var service = new OobeSessionCommitService(
|
||||
resolver,
|
||||
oobeState,
|
||||
context,
|
||||
setWindowsStartup: _ => true);
|
||||
var draft = CreateDraft();
|
||||
|
||||
var result = service.Commit(draft);
|
||||
var dataRoot = resolver.ResolveDataRoot();
|
||||
|
||||
Assert.True(result.Success);
|
||||
Assert.True(File.Exists(resolver.ResolveConfigPath()));
|
||||
Assert.True(File.Exists(HostAppSettingsOobeMerger.GetSettingsFilePath(dataRoot)));
|
||||
Assert.True(File.Exists(Path.Combine(resolver.ResolveLauncherDataPath(), "privacy-config.json")));
|
||||
Assert.True(File.Exists(Path.Combine(resolver.ResolveLauncherDataPath(), "privacy-agreement.state.json")));
|
||||
Assert.True(File.Exists(GetCompletedStatePath(dataRoot)));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Commit_DoesNotWriteCompletedState_WhenFinalSaveFails()
|
||||
{
|
||||
if (!OperatingSystem.IsWindows())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var resolver = new DataLocationResolver(_tempRoot);
|
||||
var oobeState = new OobeStateService(
|
||||
_tempRoot,
|
||||
executionSnapshot: new LauncherExecutionSnapshot(false, "tester", "S-1-5-test"));
|
||||
var context = CommandContext.FromArgs(["launch"]);
|
||||
var service = new OobeSessionCommitService(
|
||||
resolver,
|
||||
oobeState,
|
||||
context,
|
||||
setWindowsStartup: _ => false);
|
||||
|
||||
var result = service.Commit(CreateDraft());
|
||||
var dataRoot = resolver.ResolveDataRoot();
|
||||
|
||||
Assert.False(result.Success);
|
||||
Assert.Equal("windows_startup_save_failed", result.ResultCode);
|
||||
Assert.False(File.Exists(GetCompletedStatePath(dataRoot)));
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Directory.Exists(_tempRoot))
|
||||
{
|
||||
Directory.Delete(_tempRoot, recursive: true);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private static OobeSessionDraft CreateDraft() =>
|
||||
new()
|
||||
{
|
||||
DataLocationMode = DataLocationMode.Portable,
|
||||
MigrateExistingData = false,
|
||||
StartupChoices = new HostAppSettingsStartupChoices(
|
||||
ShowInTaskbar: true,
|
||||
EnableFadeTransition: true,
|
||||
EnableSlideTransition: false,
|
||||
FusedPopupExperience: false,
|
||||
AutoStartWithWindows: false),
|
||||
PrivacyConfig = new PrivacyConfig
|
||||
{
|
||||
CrashTelemetryEnabled = false,
|
||||
UsageTelemetryEnabled = false,
|
||||
TelemetryId = "test-telemetry"
|
||||
},
|
||||
PrivacyAgreementAccepted = true,
|
||||
PrivacyUserId = "test-telemetry",
|
||||
PrivacyDeviceId = "test-device"
|
||||
};
|
||||
|
||||
private static string GetCompletedStatePath(string dataRoot) =>
|
||||
Path.Combine(dataRoot, "Launcher", "state", "oobe-state.json");
|
||||
}
|
||||
Reference in New Issue
Block a user