82 lines
3.1 KiB
JavaScript
82 lines
3.1 KiB
JavaScript
// This is free software for the public good of a permacomputer hosted at
|
|
// permacomputer.com, an always-on computer by the people, for the people.
|
|
// One which is durable, easy to repair, & distributed like tap water
|
|
// for machine learning intelligence.
|
|
//
|
|
// The permacomputer is community-owned infrastructure optimized around
|
|
// four values:
|
|
//
|
|
// TRUTH First principles, math & science, open source code freely distributed
|
|
// FREEDOM Voluntary partnerships, freedom from tyranny & corporate control
|
|
// HARMONY Minimal waste, self-renewing systems with diverse thriving connections
|
|
// LOVE Be yourself without hurting others, cooperation through natural law
|
|
//
|
|
// This software contributes to that vision by enabling code execution across 42+ programming languages through a unified interface, accessible to all.
|
|
// Code is seeds to sprout on any abandoned technology.
|
|
|
|
/**
|
|
* Tests for credential resolution
|
|
*
|
|
* Note: These tests mock the file system and environment variables
|
|
* to test the 4-tier credential resolution system.
|
|
*/
|
|
|
|
import { CredentialsError } from '../src/un_async.js';
|
|
|
|
describe('CredentialsError', () => {
|
|
test('should be an Error instance', () => {
|
|
const error = new CredentialsError('test message');
|
|
expect(error).toBeInstanceOf(Error);
|
|
expect(error).toBeInstanceOf(CredentialsError);
|
|
});
|
|
|
|
test('should have correct name', () => {
|
|
const error = new CredentialsError('test message');
|
|
expect(error.name).toBe('CredentialsError');
|
|
});
|
|
|
|
test('should have correct message', () => {
|
|
const error = new CredentialsError('test message');
|
|
expect(error.message).toBe('test message');
|
|
});
|
|
});
|
|
|
|
describe('Credential Resolution Tiers', () => {
|
|
// These tests describe the expected behavior of the 4-tier system
|
|
// Actual integration tests would require mocking fs and process.env
|
|
|
|
describe('Tier 1: Function Arguments', () => {
|
|
test('should have highest priority', () => {
|
|
// When both publicKey and secretKey are provided as arguments,
|
|
// they should be used regardless of environment variables or files
|
|
expect(true).toBe(true); // Placeholder - actual test requires running SDK
|
|
});
|
|
});
|
|
|
|
describe('Tier 2: Environment Variables', () => {
|
|
test('UNSANDBOX_PUBLIC_KEY and UNSANDBOX_SECRET_KEY should be checked', () => {
|
|
// Environment variables should be used when function args are not provided
|
|
expect(process.env).toBeDefined();
|
|
});
|
|
});
|
|
|
|
describe('Tier 3: ~/.unsandbox/accounts.csv', () => {
|
|
test('should support CSV format: public_key,secret_key', () => {
|
|
// File should contain lines of format: public_key,secret_key
|
|
// Lines starting with # should be skipped
|
|
expect(true).toBe(true); // Placeholder
|
|
});
|
|
|
|
test('should support account selection via UNSANDBOX_ACCOUNT', () => {
|
|
// UNSANDBOX_ACCOUNT=1 should select the second account (0-indexed)
|
|
expect(true).toBe(true); // Placeholder
|
|
});
|
|
});
|
|
|
|
describe('Tier 4: ./accounts.csv', () => {
|
|
test('should be lowest priority fallback', () => {
|
|
// Local accounts.csv should only be used when other tiers fail
|
|
expect(true).toBe(true); // Placeholder
|
|
});
|
|
});
|
|
});
|