Files
astra-mobile/plugins/withAstraAndroidRelease.test.mjs
T
2026-07-15 18:02:14 -04:00

68 lines
2.2 KiB
JavaScript

import assert from 'node:assert/strict';
import { createRequire } from 'node:module';
import test from 'node:test';
const require = createRequire(import.meta.url);
const { _internal } = require('./withAstraAndroidRelease.js');
const APP_GRADLE = `apply plugin: "com.android.application"
android {
signingConfigs {
debug {
storeFile file('debug.keystore')
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.debug
}
}
}
`;
test('adds fail-closed release signing without changing debug signing', () => {
const transformed = _internal.addReleaseSigning(APP_GRADLE);
assert.match(transformed, /ASTRA_ALLOW_INSECURE_RELEASE_SIGNING/);
assert.match(transformed, /throw new GradleException\('Release signing is not configured/);
assert.match(transformed, /debug \{\n signingConfig signingConfigs\.debug/);
assert.match(
transformed,
/release \{\n signingConfig astraReleaseSigningConfigured \? signingConfigs\.release : signingConfigs\.debug/
);
});
test('release signing transform is idempotent', () => {
const transformed = _internal.addReleaseSigning(APP_GRADLE);
assert.equal(_internal.addReleaseSigning(transformed), transformed);
assert.equal(transformed.split(_internal.SIGNING_MARKER).length - 1, 1);
});
test('appendBlock adds a native block exactly once', () => {
const once = _internal.appendBlock('base\n', _internal.SETTINGS_MARKER, `\n${_internal.SETTINGS_MARKER}\nblock\n`);
const twice = _internal.appendBlock(once, _internal.SETTINGS_MARKER, `\n${_internal.SETTINGS_MARKER}\nblock\n`);
assert.equal(once, twice);
assert.equal(once.split(_internal.SETTINGS_MARKER).length - 1, 1);
});
test('marks QR scanning camera hardware as optional without duplicating it', () => {
const manifest = { manifest: {} };
_internal.ensureOptionalCameraFeature(manifest);
_internal.ensureOptionalCameraFeature(manifest);
assert.deepEqual(manifest.manifest['uses-feature'], [
{
$: {
'android:name': 'android.hardware.camera',
'android:required': 'false',
},
},
]);
});