Compare commits
28 Commits
Author | SHA1 | Date | |
---|---|---|---|
c36459dfcc | |||
36903d2d6c | |||
c54493ddbc | |||
e98f109dcc | |||
32704386ee | |||
8ec3d593c1 | |||
f3f05b89d9 | |||
7104c8b1b5 | |||
dcb4ee301b | |||
df12f0ad83 | |||
01823fb683 | |||
649e69e1f2 | |||
05a361046e | |||
a551989f8b | |||
7f765c08e4 | |||
4e7b5a693d | |||
20e36fbdf2 | |||
a61d87a9a0 | |||
953957cae3 | |||
c712a9a09c | |||
5a94f116e1 | |||
0e80700481 | |||
22ec504b0f | |||
3d39f65ed0 | |||
7c450876f2 | |||
d7c3752dfa | |||
f53e5bcc83 | |||
d8301314a7 |
@ -6,8 +6,8 @@ on:
|
||||
- '**'
|
||||
|
||||
env:
|
||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
@ -26,7 +26,7 @@ jobs:
|
||||
- name: Install pnpm and npmci
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @shipzone/npmci
|
||||
pnpm install -g @ship.zone/npmci
|
||||
|
||||
- name: Run npm prepare
|
||||
run: npmci npm prepare
|
||||
|
@ -6,8 +6,8 @@ on:
|
||||
- '*'
|
||||
|
||||
env:
|
||||
IMAGE: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@gitea.lossless.digital/${{gitea.repository}}.git
|
||||
IMAGE: code.foss.global/hosttoday/ht-docker-node:npmci
|
||||
NPMCI_COMPUTED_REPOURL: https://${{gitea.repository_owner}}:${{secrets.GITEA_TOKEN}}@/${{gitea.repository}}.git
|
||||
NPMCI_TOKEN_NPM: ${{secrets.NPMCI_TOKEN_NPM}}
|
||||
NPMCI_TOKEN_NPM2: ${{secrets.NPMCI_TOKEN_NPM2}}
|
||||
NPMCI_GIT_GITHUBTOKEN: ${{secrets.NPMCI_GIT_GITHUBTOKEN}}
|
||||
@ -26,7 +26,7 @@ jobs:
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @shipzone/npmci
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Audit production dependencies
|
||||
@ -54,7 +54,7 @@ jobs:
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @shipzone/npmci
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Test stable
|
||||
@ -82,7 +82,7 @@ jobs:
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @shipzone/npmci
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Release
|
||||
@ -104,7 +104,7 @@ jobs:
|
||||
- name: Prepare
|
||||
run: |
|
||||
pnpm install -g pnpm
|
||||
pnpm install -g @shipzone/npmci
|
||||
pnpm install -g @ship.zone/npmci
|
||||
npmci npm prepare
|
||||
|
||||
- name: Code quality
|
||||
|
82
changelog.md
82
changelog.md
@ -1,5 +1,87 @@
|
||||
# Changelog
|
||||
|
||||
## 2024-11-06 - 5.5.0 - feat(tapnodetools)
|
||||
Add TestFileProvider for handling Docker Alpine image
|
||||
|
||||
- Introduced TestFileProvider in TapNodeTools.
|
||||
- Added method to retrieve Docker Alpine image as a local tarball.
|
||||
|
||||
## 2024-11-06 - 5.4.4 - fix(dependencies)
|
||||
Update smarts3 dependency to version 2.2.5
|
||||
|
||||
|
||||
## 2024-11-06 - 5.4.3 - fix(TapNodeTools)
|
||||
Fix server port default value in createSmarts3 method
|
||||
|
||||
- The `createSmarts3` method in `TapNodeTools` now explicitly sets the port to 3003.
|
||||
|
||||
## 2024-11-06 - 5.4.2 - fix(dependencies)
|
||||
Update smarts3 dependency version to fix issues.
|
||||
|
||||
- Changed the version of @push.rocks/smarts3 from ^2.2.1 to ^2.2.2.
|
||||
|
||||
## 2024-11-06 - 5.4.1 - fix(ci)
|
||||
Fix CI configuration URL and package installation paths.
|
||||
|
||||
- Updated Docker image URL in CI config.
|
||||
- Fixed repository URL format in package.json.
|
||||
- Corrected npmci package installation path.
|
||||
|
||||
## 2024-11-06 - 5.4.0 - feat(node)
|
||||
Add smartmongo and smarts3 integration in node tools
|
||||
|
||||
- Added createSmartmongo method to TapNodeTools for creating SmartMongo instances.
|
||||
- Added createSmarts3 method to TapNodeTools for creating Smarts3 instances.
|
||||
- Updated dependencies with smartmongo and smarts3 in package.json.
|
||||
|
||||
## 2024-09-19 - 5.3.0 - feat(TapNodeTools)
|
||||
Add getEnvVarOnDemand method to TapNodeTools
|
||||
|
||||
- Introduced a new method getEnvVarOnDemand to the TapNodeTools class to fetch environment variables on demand.
|
||||
- Enhanced getQenv function in TapNodeTools class to cache the Qenv instance for better performance.
|
||||
|
||||
## 2024-09-19 - 5.2.2 - fix(core)
|
||||
Ensure reliability in test setup and execution
|
||||
|
||||
- Added new pre-task functionality to log starting of tasks.
|
||||
- Enhanced `runCommand` method to better handle shell command execution.
|
||||
- Fixed issue in `createHttpsCert` to correctly generate self-signed certificates.
|
||||
|
||||
## 2024-09-19 - 5.2.1 - fix(tapbundle)
|
||||
Add qenv package to dependencies for environment management
|
||||
|
||||
- Added @push.rocks/qenv to dependencies in package.json.
|
||||
- Updated TapNodeTools class in ts_node/classes.tapnodetools.ts to include getQenv method.
|
||||
- Imported qenv in ts_node/plugins.ts.
|
||||
|
||||
## 2024-09-18 - 5.2.0 - feat(TapNodeTools)
|
||||
Add ability to create HTTPS certificates with self-signed option
|
||||
|
||||
- Introduced a new parameter `allowSelfSigned` to the `createHttpsCert` function.
|
||||
|
||||
## 2024-09-18 - 5.1.4 - fix(ts_node)
|
||||
Fixed issues in HTTPS certificate generation for TapNodeTools
|
||||
|
||||
- Updated 'createHttpsCert' method in 'TapNodeTools' to use 'smartcrypto' for generating RSA key pair and self-signed certificate.
|
||||
- Corrected certificate and private key PEM encoding.
|
||||
|
||||
## 2024-09-18 - 5.1.3 - fix(ts_node/classes.tapnodetools.ts)
|
||||
Refactored methods and improved type annotations in TapNodeTools class.
|
||||
|
||||
- Refactored `runCommand` method to include proper type annotations.
|
||||
- Enhanced `createHttpsCert` method with proper type annotations and key generation logic.
|
||||
- Introduced `generateSelfSignedCert` method for better code organization and readability.
|
||||
|
||||
## 2024-09-18 - 5.1.2 - fix(TapNodeTools)
|
||||
Default parameter added to createHttpsCert method
|
||||
|
||||
- Updated createHttpsCert method to provide a default value for the parameter commonName.
|
||||
|
||||
## 2024-09-18 - 5.1.1 - fix(ts_node)
|
||||
Fixed createHttpsCert interface
|
||||
|
||||
- Removed unnecessary keyFile and certFile parameters from createHttpsCert method.
|
||||
|
||||
## 2024-09-18 - 5.1.0 - feat(ts_node)
|
||||
Add support for HTTPS certificate creation
|
||||
|
||||
|
15
package.json
15
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@push.rocks/tapbundle",
|
||||
"private": false,
|
||||
"version": "5.1.0",
|
||||
"version": "5.5.0",
|
||||
"description": "A test automation library bundling utilities and tools for TAP (Test Anything Protocol) based testing, specifically tailored for tapbuffer.",
|
||||
"exports": {
|
||||
".": "./dist_ts/index.js",
|
||||
@ -15,22 +15,29 @@
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://code.foss.global/push.rocks/tapbundle.git"
|
||||
"url": "git+https://code.foss.global/push.rocks/tapbundle.git"
|
||||
},
|
||||
"author": "Lossless GmbH",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://gitlab.com/pushrocks/tapbundle/issues"
|
||||
"url": "https://code.foss.global/push.rocks/tapbundle/issues"
|
||||
},
|
||||
"homepage": "https://code.foss.global/push.rocks/tapbundle",
|
||||
"homepage": "https://code.foss.global/push.rocks/tapbundle#readme",
|
||||
"dependencies": {
|
||||
"@open-wc/testing": "^4.0.0",
|
||||
"@push.rocks/consolecolor": "^2.0.2",
|
||||
"@push.rocks/qenv": "^6.0.5",
|
||||
"@push.rocks/smartcrypto": "^2.0.4",
|
||||
"@push.rocks/smartdelay": "^3.0.5",
|
||||
"@push.rocks/smartenv": "^5.0.12",
|
||||
"@push.rocks/smartexpect": "^1.2.1",
|
||||
"@push.rocks/smartfile": "^11.0.21",
|
||||
"@push.rocks/smartjson": "^5.0.20",
|
||||
"@push.rocks/smartmongo": "^2.0.10",
|
||||
"@push.rocks/smartpath": "^5.0.18",
|
||||
"@push.rocks/smartpromise": "^4.0.4",
|
||||
"@push.rocks/smartrequest": "^2.0.23",
|
||||
"@push.rocks/smarts3": "^2.2.5",
|
||||
"@push.rocks/smartshell": "^3.0.6",
|
||||
"@push.rocks/smarttime": "^4.0.8"
|
||||
},
|
||||
|
9679
pnpm-lock.yaml
generated
9679
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
14
readme.md
14
readme.md
@ -1,7 +1,9 @@
|
||||
# @push.rocks/tapbundle
|
||||
|
||||
tap bundled for tapbuffer
|
||||
|
||||
## Install
|
||||
|
||||
Install the package by running the following command in your terminal:
|
||||
|
||||
```bash
|
||||
@ -11,9 +13,11 @@ npm install @push.rocks/tapbundle --save-dev
|
||||
This will add `@push.rocks/tapbundle` to your project's `devDependencies`.
|
||||
|
||||
## Usage
|
||||
|
||||
The `@push.rocks/tapbundle` package is a tap-compatible testing framework written in TypeScript, intended for use with tapbuffer. It includes a range of useful features enabling easy setup and execution of tests, assertion handling through `expect` and `expectAsync`, as well as auxiliary tools for delay and colored console output.
|
||||
|
||||
### Getting Started
|
||||
|
||||
First, ensure your project is set up with Typescript and supports ESM syntax. You can then import `tap`, `expect`, and `expectAsync` from `@push.rocks/tapbundle` to start defining your tests.
|
||||
|
||||
```typescript
|
||||
@ -33,6 +37,7 @@ tap.start();
|
||||
```
|
||||
|
||||
### Defining Tests
|
||||
|
||||
You can define tests with descriptions and async functions. The `tap` instance manages test execution, supports test skipping, and managing exclusive tests with the `.only` modifier.
|
||||
|
||||
```typescript
|
||||
@ -52,6 +57,7 @@ tap.start();
|
||||
```
|
||||
|
||||
### Using `expect` and `expectAsync`
|
||||
|
||||
The package provides `expect` and `expectAsync` for assertions:
|
||||
|
||||
```typescript
|
||||
@ -60,6 +66,7 @@ expect(5).toBeGreaterThan(2);
|
||||
```
|
||||
|
||||
### Handling Asynchronous Operations
|
||||
|
||||
`tapbundle` facilitates working with async operations in tests. You can introduce delays or set timeouts:
|
||||
|
||||
```typescript
|
||||
@ -72,7 +79,9 @@ tap.start();
|
||||
```
|
||||
|
||||
### Advanced Usage
|
||||
|
||||
#### Pre Tasks
|
||||
|
||||
You can define tasks to run before test execution begins:
|
||||
|
||||
```typescript
|
||||
@ -88,6 +97,7 @@ tap.start();
|
||||
```
|
||||
|
||||
#### Accessing Test Metadata
|
||||
|
||||
Each test returns a `TapTest` instance, from which you can access metadata and manipulate test behavior:
|
||||
|
||||
```typescript
|
||||
@ -102,9 +112,11 @@ tap.start().then(() => {
|
||||
```
|
||||
|
||||
### Running Tests
|
||||
|
||||
Tests are executed by calling `tap.start()`. This method runs all defined tests in sequence and respects `.skip` and `.only` modifiers.
|
||||
|
||||
### Debugging and Output
|
||||
|
||||
`@push.rocks/tapbundle` supports colored console output via `consolecolor` to help with debugging and test result readability:
|
||||
|
||||
```typescript
|
||||
@ -120,7 +132,7 @@ This detailed guide covers the most important aspects of using `@push.rocks/tapb
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
|
||||
This repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository.
|
||||
|
||||
**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.
|
||||
|
||||
|
@ -23,10 +23,10 @@ const test3 = tap.test(
|
||||
async () => {
|
||||
expect(
|
||||
(await test1.testPromise).hrtMeasurement.milliSeconds <
|
||||
(await test2).hrtMeasurement.milliSeconds
|
||||
(await test2).hrtMeasurement.milliSeconds,
|
||||
).toBeTrue();
|
||||
expect((await test2.testPromise).hrtMeasurement.milliSeconds > 10).toBeTrue();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
const test4 = tap.skip.test('my 4th test -> should fail', async (tools) => {
|
||||
|
@ -8,11 +8,21 @@ tap.test('should execure a command', async () => {
|
||||
});
|
||||
|
||||
tap.test('should create a https cert', async () => {
|
||||
const { key, cert } = await tapNodeTools.createHttpsCert('localhost', 'localhost.key', 'localhost.cert');
|
||||
const { key, cert } = await tapNodeTools.createHttpsCert('localhost');
|
||||
console.log(key);
|
||||
console.log(cert);
|
||||
expect(key).toInclude('-----BEGIN PRIVATE KEY-----');
|
||||
expect(key).toInclude('-----BEGIN RSA PRIVATE KEY-----');
|
||||
expect(cert).toInclude('-----BEGIN CERTIFICATE-----');
|
||||
});
|
||||
|
||||
tap.test('should create a smartmongo instance', async () => {
|
||||
const smartmongo = await tapNodeTools.createSmartmongo();
|
||||
await smartmongo.stop();
|
||||
});
|
||||
|
||||
tap.test('should create a smarts3 instance', async () => {
|
||||
const smarts3 = await tapNodeTools.createSmarts3();
|
||||
await smarts3.stop();
|
||||
});
|
||||
|
||||
tap.start();
|
||||
|
@ -17,10 +17,10 @@ const test3 = tap.test(
|
||||
async () => {
|
||||
expect(
|
||||
(await test1.testPromise).hrtMeasurement.milliSeconds <
|
||||
(await test2).hrtMeasurement.milliSeconds
|
||||
(await test2).hrtMeasurement.milliSeconds,
|
||||
).toBeTrue();
|
||||
expect((await test2.testPromise).hrtMeasurement.milliSeconds > 1000).toBeTrue();
|
||||
}
|
||||
},
|
||||
);
|
||||
|
||||
const test4 = tap.test('my 4th test -> should fail', async (tools) => {
|
||||
|
@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/tapbundle',
|
||||
version: '5.1.0',
|
||||
version: '5.5.0',
|
||||
description: 'A test automation library bundling utilities and tools for TAP (Test Anything Protocol) based testing, specifically tailored for tapbuffer.'
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ export class Tap<T> {
|
||||
public test(
|
||||
testDescription: string,
|
||||
testFunction: ITestFunction<T>,
|
||||
modeArg: 'normal' | 'only' | 'skip' = 'normal'
|
||||
modeArg: 'normal' | 'only' | 'skip' = 'normal',
|
||||
): TapTest<T> {
|
||||
const localTest = new TapTest<T>({
|
||||
description: testDescription,
|
||||
@ -67,7 +67,7 @@ export class Tap<T> {
|
||||
description: testDescription,
|
||||
testFunction,
|
||||
parallel: true,
|
||||
})
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@ -125,7 +125,7 @@ export class Tap<T> {
|
||||
failReasons.push(
|
||||
`Test ${tapTest.testKey + 1} failed with status ${tapTest.status}:\n` +
|
||||
`|| ${tapTest.description}\n` +
|
||||
`|| for more information please take a look the logs above`
|
||||
`|| for more information please take a look the logs above`,
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -150,7 +150,7 @@ export class Tap<T> {
|
||||
} else {
|
||||
setTimeout(() => {
|
||||
process.exit(codeArg);
|
||||
}, 10)
|
||||
}, 10);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -56,7 +56,7 @@ export class TapTest<T = unknown> {
|
||||
}
|
||||
this.hrtMeasurement.stop();
|
||||
console.log(
|
||||
`ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`
|
||||
`ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`,
|
||||
);
|
||||
this.status = 'success';
|
||||
this.testDeferred.resolve(this);
|
||||
@ -64,7 +64,7 @@ export class TapTest<T = unknown> {
|
||||
} catch (err: any) {
|
||||
this.hrtMeasurement.stop();
|
||||
console.log(
|
||||
`not ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`
|
||||
`not ok ${testNumber} - ${this.description} # time=${this.hrtMeasurement.milliSeconds}ms`,
|
||||
);
|
||||
this.testDeferred.resolve(this);
|
||||
this.testResultDeferred.resolve(err);
|
||||
|
@ -1,13 +1,23 @@
|
||||
import { TestFileProvider } from './classes.testfileprovider.js';
|
||||
import * as plugins from './plugins.js';
|
||||
|
||||
class TapNodeTools {
|
||||
|
||||
private smartshellInstance: plugins.smartshell.Smartshell;
|
||||
constructor() {
|
||||
public testFileProvider = new TestFileProvider();
|
||||
|
||||
constructor() {}
|
||||
|
||||
private qenv: plugins.qenv.Qenv;
|
||||
public async getQenv(): Promise<plugins.qenv.Qenv> {
|
||||
this.qenv = this.qenv || new plugins.qenv.Qenv('./', '.nogit/');
|
||||
return this.qenv;
|
||||
}
|
||||
public async getEnvVarOnDemand(envVarNameArg: string): Promise<string> {
|
||||
const qenv = await this.getQenv();
|
||||
return qenv.getEnvVarOnDemand(envVarNameArg);
|
||||
}
|
||||
|
||||
public async runCommand(commandArg) {
|
||||
public async runCommand(commandArg: string): Promise<any> {
|
||||
if (!this.smartshellInstance) {
|
||||
this.smartshellInstance = new plugins.smartshell.Smartshell({
|
||||
executor: 'bash',
|
||||
@ -17,29 +27,72 @@ class TapNodeTools {
|
||||
return result;
|
||||
}
|
||||
|
||||
public async createHttpsCert(commonName: string, keyFile: string, certFile: string): Promise<{ key: string, cert: string }> {
|
||||
const key = plugins.crypto.generateKeyPairSync('rsa', {
|
||||
modulusLength: 2048,
|
||||
publicExponent: 65537,
|
||||
});
|
||||
|
||||
const cert = '-----BEGIN CERTIFICATE-----\n' +
|
||||
key.publicKey.export({
|
||||
type: 'spki',
|
||||
format: 'pem'
|
||||
}) +
|
||||
'\n-----END CERTIFICATE-----\n';
|
||||
|
||||
const keyContent = key.privateKey.export({
|
||||
type: 'pkcs8',
|
||||
format: 'pem',
|
||||
});
|
||||
|
||||
return {
|
||||
key: keyContent as string,
|
||||
cert: cert,
|
||||
public async createHttpsCert(
|
||||
commonName: string = 'localhost',
|
||||
allowSelfSigned: boolean = true
|
||||
): Promise<{ key: string; cert: string }> {
|
||||
if (allowSelfSigned) {
|
||||
// set node to allow self-signed certificates
|
||||
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
||||
}
|
||||
|
||||
// Generate a key pair
|
||||
const keys = plugins.smartcrypto.nodeForge.pki.rsa.generateKeyPair(2048);
|
||||
|
||||
// Create a self-signed certificate
|
||||
const cert = plugins.smartcrypto.nodeForge.pki.createCertificate();
|
||||
cert.publicKey = keys.publicKey;
|
||||
cert.serialNumber = '01';
|
||||
cert.validity.notBefore = new Date();
|
||||
cert.validity.notAfter = new Date();
|
||||
cert.validity.notAfter.setFullYear(cert.validity.notBefore.getFullYear() + 1);
|
||||
|
||||
const attrs = [
|
||||
{ name: 'commonName', value: commonName },
|
||||
{ name: 'countryName', value: 'US' },
|
||||
{ shortName: 'ST', value: 'California' },
|
||||
{ name: 'localityName', value: 'San Francisco' },
|
||||
{ name: 'organizationName', value: 'My Company' },
|
||||
{ shortName: 'OU', value: 'Dev' },
|
||||
];
|
||||
cert.setSubject(attrs);
|
||||
cert.setIssuer(attrs);
|
||||
|
||||
// Sign the certificate with its own private key (self-signed)
|
||||
cert.sign(keys.privateKey, plugins.smartcrypto.nodeForge.md.sha256.create());
|
||||
|
||||
// PEM encode the private key and certificate
|
||||
const pemKey = plugins.smartcrypto.nodeForge.pki.privateKeyToPem(keys.privateKey);
|
||||
const pemCert = plugins.smartcrypto.nodeForge.pki.certificateToPem(cert);
|
||||
|
||||
return {
|
||||
key: pemKey,
|
||||
cert: pemCert,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* create and return a smartmongo instance
|
||||
*/
|
||||
public async createSmartmongo() {
|
||||
const smartmongoMod = await import('@push.rocks/smartmongo');
|
||||
const smartmongoInstance = new smartmongoMod.SmartMongo();
|
||||
await smartmongoInstance.start();
|
||||
return smartmongoInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* create and return a smarts3 instance
|
||||
*/
|
||||
public async createSmarts3() {
|
||||
const smarts3Mod = await import('@push.rocks/smarts3');
|
||||
const smarts3Instance = new smarts3Mod.Smarts3({
|
||||
port: 3003,
|
||||
cleanSlate: true,
|
||||
});
|
||||
await smarts3Instance.start();
|
||||
return smarts3Instance;
|
||||
}
|
||||
}
|
||||
|
||||
export const tapNodeTools = new TapNodeTools();
|
||||
export const tapNodeTools = new TapNodeTools();
|
||||
|
17
ts_node/classes.testfileprovider.ts
Normal file
17
ts_node/classes.testfileprovider.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import * as plugins from './plugins.js';
|
||||
import * as paths from './paths.js';
|
||||
|
||||
export const fileUrls = {
|
||||
dockerAlpineImage: 'https://code.foss.global/testassets/docker/raw/branch/main/alpine.tar',
|
||||
}
|
||||
|
||||
export class TestFileProvider {
|
||||
public async getDockerAlpineImageAsLocalTarball(): Promise<string> {
|
||||
const filePath = plugins.path.join(paths.testFilesDir, 'alpine.tar')
|
||||
// fetch the docker alpine image
|
||||
const response = await plugins.smartrequest.getBinary(fileUrls.dockerAlpineImage);
|
||||
await plugins.smartfile.fs.ensureDir(paths.testFilesDir);
|
||||
const AlpineBuffer = await plugins.smartfile.memory.toFs(response.body, filePath);
|
||||
return filePath;
|
||||
}
|
||||
}
|
4
ts_node/paths.ts
Normal file
4
ts_node/paths.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import * as plugins from './plugins.js';
|
||||
|
||||
export const cwd = process.cwd();
|
||||
export const testFilesDir = plugins.path.join(cwd, './.nogit/testfiles/');
|
@ -1,10 +1,16 @@
|
||||
// node native
|
||||
import * as crypto from 'crypto';
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
export { crypto,fs };
|
||||
export { crypto,fs, path, };
|
||||
|
||||
// @push.rocks scope
|
||||
import * as qenv from '@push.rocks/qenv';
|
||||
import * as smartcrypto from '@push.rocks/smartcrypto';
|
||||
import * as smartfile from '@push.rocks/smartfile';
|
||||
import * as smartpath from '@push.rocks/smartpath';
|
||||
import * as smartrequest from '@push.rocks/smartrequest';
|
||||
import * as smartshell from '@push.rocks/smartshell';
|
||||
|
||||
export { smartshell };
|
||||
export { qenv, smartcrypto, smartfile, smartpath, smartrequest, smartshell, };
|
||||
|
@ -6,9 +6,11 @@
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"esModuleInterop": true,
|
||||
"verbatimModuleSyntax": true
|
||||
"verbatimModuleSyntax": true,
|
||||
"baseUrl": ".",
|
||||
"paths": {}
|
||||
},
|
||||
"exclude": [
|
||||
"dist_*/**/*.d.ts"
|
||||
]
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user