import * as NodeServices from "@effect/platform-node/NodeServices";import { assert, it } from "@effect/vitest";import * as Effect from "effect/Effect";import * as FileSystem from "effect/FileSystem";import * as Layer from "effect/Layer";import * as Path from "effect/Path"; import * as DesktopConfig from "../../app/DesktopConfig.ts";import * as DesktopEnvironment from "../../app/DesktopEnvironment.ts";import * as LinuxBrowserSecret from "./LinuxBrowserSecret.ts"; it.layer(NodeServices.layer)("Linux browser secret path", (it) => { it.effect("finds development and packaged helpers without falling back outside the install", () => Effect.gen(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; const root = yield* fileSystem.makeTempDirectoryScoped({ prefix: "t3-browser-secret-path-" }); const resourcesPath = path.join(root, "install", "resources"); const native = path.join( root, "native", "browser-secret", "build", "x64", "t3-browser-secret", ); const staged = path.join( root, "apps", "desktop", "prod-resources", "browser-secret", "t3-browser-secret", ); const packaged = path.join(resourcesPath, "browser-secret", "t3-browser-secret"); for (const filename of [native, staged, packaged]) { yield* fileSystem.makeDirectory(path.dirname(filename), { recursive: true }); yield* fileSystem.writeFileString(filename, "helper"); } const resolve = (isPackaged: boolean, platform: NodeJS.Platform = "linux") => { const environment = DesktopEnvironment.layer({ dirname: path.join(root, "apps", "desktop", "dist-electron"), homeDirectory: root, platform, processArch: "x64", appVersion: "0.0.1", appPath: path.join(resourcesPath, "app.asar"), isPackaged, resourcesPath, runningUnderArm64Translation: false, }).pipe(Layer.provide(DesktopConfig.layerTest({}))); return LinuxBrowserSecret.LinuxBrowserSecretPath.pipe( Effect.provide(LinuxBrowserSecret.layer.pipe(Layer.provide(environment))), ); }; assert.equal(yield* resolve(false), native); assert.equal(yield* resolve(true), packaged); yield* fileSystem.remove(native); assert.equal(yield* resolve(false), staged); yield* fileSystem.remove(packaged); assert.isUndefined(yield* resolve(true)); assert.isUndefined(yield* resolve(false, "darwin")); assert.isUndefined(yield* resolve(false, "win32")); yield* fileSystem.remove(staged); assert.isUndefined(yield* resolve(false)); }).pipe(Effect.scoped), );});
import * as NodeServices from "@effect/platform-node/NodeServices";
import { assert, it } from "@effect/vitest";
import * as Effect from "effect/Effect";
import * as FileSystem from "effect/FileSystem";
import * as Layer from "effect/Layer";
import * as Path from "effect/Path";
import * as DesktopConfig from "../../app/DesktopConfig.ts";
import * as DesktopEnvironment from "../../app/DesktopEnvironment.ts";
import * as LinuxBrowserSecret from "./LinuxBrowserSecret.ts";
it.layer(NodeServices.layer)("Linux browser secret path", (it) => {
it.effect("finds development and packaged helpers without falling back outside the install", () =>
Effect.gen(function* () {
const fileSystem = yield* FileSystem.FileSystem;
const path = yield* Path.Path;
const root = yield* fileSystem.makeTempDirectoryScoped({ prefix: "t3-browser-secret-path-" });
const resourcesPath = path.join(root, "install", "resources");
const native = path.join(
root,
"native",
"browser-secret",
"build",
"x64",
"t3-browser-secret",
);
const staged = path.join(
root,
"apps",
"desktop",
"prod-resources",
"browser-secret",
"t3-browser-secret",
);
const packaged = path.join(resourcesPath, "browser-secret", "t3-browser-secret");
for (const filename of [native, staged, packaged]) {
yield* fileSystem.makeDirectory(path.dirname(filename), { recursive: true });
yield* fileSystem.writeFileString(filename, "helper");
}
const resolve = (isPackaged: boolean, platform: NodeJS.Platform = "linux") => {
const environment = DesktopEnvironment.layer({
dirname: path.join(root, "apps", "desktop", "dist-electron"),
homeDirectory: root,
platform,
processArch: "x64",
appVersion: "0.0.1",
appPath: path.join(resourcesPath, "app.asar"),
isPackaged,
resourcesPath,
runningUnderArm64Translation: false,
}).pipe(Layer.provide(DesktopConfig.layerTest({})));
return LinuxBrowserSecret.LinuxBrowserSecretPath.pipe(
Effect.provide(LinuxBrowserSecret.layer.pipe(Layer.provide(environment))),
);
};
assert.equal(yield* resolve(false), native);
assert.equal(yield* resolve(true), packaged);
yield* fileSystem.remove(native);
assert.equal(yield* resolve(false), staged);
yield* fileSystem.remove(packaged);
assert.isUndefined(yield* resolve(true));
assert.isUndefined(yield* resolve(false, "darwin"));
assert.isUndefined(yield* resolve(false, "win32"));
yield* fileSystem.remove(staged);
assert.isUndefined(yield* resolve(false));
}).pipe(Effect.scoped),
);
});