| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- const test = require('node:test');
- const assert = require('node:assert/strict');
- const {
- findIcloudAliasArray,
- findIcloudAliasByEmail,
- getConfiguredIcloudHostPreference,
- getIcloudHostHintFromMessage,
- getIcloudLoginUrlForHost,
- getIcloudMailUrlForHost,
- getIcloudSetupUrlForHost,
- normalizeBooleanMap,
- normalizeIcloudAliasList,
- normalizeIcloudAliasRecord,
- normalizeIcloudHost,
- pickReusableIcloudAlias,
- toNormalizedEmailSet,
- } = require('../icloud-utils.js');
- test('normalizeIcloudHost and host preference helpers resolve supported hosts', () => {
- assert.equal(normalizeIcloudHost('www.icloud.com'), 'icloud.com');
- assert.equal(normalizeIcloudHost('setup.icloud.com.cn'), 'icloud.com.cn');
- assert.equal(normalizeIcloudHost('example.com'), '');
- assert.equal(getConfiguredIcloudHostPreference({ icloudHostPreference: 'icloud.com' }), 'icloud.com');
- assert.equal(getConfiguredIcloudHostPreference({ icloudHostPreference: 'auto' }), '');
- assert.equal(getIcloudLoginUrlForHost('icloud.com.cn'), 'https://www.icloud.com.cn/');
- assert.equal(getIcloudMailUrlForHost('icloud.com'), 'https://www.icloud.com/mail/');
- assert.equal(getIcloudSetupUrlForHost('icloud.com'), 'https://setup.icloud.com/setup/ws/1');
- });
- test('getIcloudHostHintFromMessage can infer host from error text', () => {
- assert.equal(getIcloudHostHintFromMessage('status 401 from setup.icloud.com.cn/setup/ws/1'), 'icloud.com.cn');
- assert.equal(getIcloudHostHintFromMessage('request failed at https://www.icloud.com/'), 'icloud.com');
- assert.equal(getIcloudHostHintFromMessage('unknown host'), '');
- });
- test('findIcloudAliasArray finds nested alias collections', () => {
- const payload = {
- result: {
- data: {
- items: [
- { hme: 'first@icloud.com', anonymousId: 'a1' },
- { hme: 'second@icloud.com', anonymousId: 'a2' },
- ],
- },
- },
- };
- assert.deepEqual(findIcloudAliasArray(payload), payload.result.data.items);
- });
- test('normalizeIcloudAliasRecord merges used and preserved state', () => {
- const alias = normalizeIcloudAliasRecord({
- anonymousId: 'alias-1',
- hme: 'Demo@iCloud.com',
- label: 'Test',
- note: 'Created by test',
- state: 'active',
- }, {
- usedEmails: ['demo@icloud.com'],
- preservedEmails: ['demo@icloud.com'],
- });
- assert.deepEqual(alias, {
- anonymousId: 'alias-1',
- email: 'demo@icloud.com',
- label: 'Test',
- note: 'Created by test',
- state: 'active',
- active: true,
- used: true,
- preserved: true,
- createdAt: null,
- });
- });
- test('normalizeIcloudAliasList orders active unused aliases before used aliases', () => {
- const aliases = normalizeIcloudAliasList({
- hmeEmails: [
- { hme: 'used@icloud.com', anonymousId: 'u1', active: true },
- { hme: 'fresh@icloud.com', anonymousId: 'f1', active: true },
- { hme: 'inactive@icloud.com', anonymousId: 'i1', active: false },
- ],
- }, {
- usedEmails: ['used@icloud.com'],
- preservedEmails: ['inactive@icloud.com'],
- });
- assert.deepEqual(aliases.map((alias) => alias.email), [
- 'fresh@icloud.com',
- 'used@icloud.com',
- 'inactive@icloud.com',
- ]);
- assert.equal(aliases[2].preserved, true);
- });
- test('pickReusableIcloudAlias and findIcloudAliasByEmail select expected aliases', () => {
- const aliases = normalizeIcloudAliasList({
- hmeEmails: [
- { hme: 'used@icloud.com', anonymousId: 'u1', active: true },
- { hme: 'fresh@icloud.com', anonymousId: 'f1', active: true },
- ],
- }, {
- usedEmails: ['used@icloud.com'],
- });
- assert.equal(pickReusableIcloudAlias(aliases)?.email, 'fresh@icloud.com');
- assert.equal(findIcloudAliasByEmail(aliases, 'FRESH@ICLOUD.COM')?.anonymousId, 'f1');
- });
- test('normalizeBooleanMap and toNormalizedEmailSet normalize keys and truthy entries', () => {
- const normalized = normalizeBooleanMap({
- ' Demo@icloud.com ': 1,
- 'skip@icloud.com': 0,
- });
- assert.deepEqual(normalized, {
- 'demo@icloud.com': true,
- 'skip@icloud.com': false,
- });
- assert.deepEqual([...toNormalizedEmailSet(normalized)], ['demo@icloud.com']);
- });
|