mirror of
https://github.com/verdaccio/verdaccio.git
synced 2024-12-23 22:27:34 -05:00
69c831e3f8
* New translations what-is-verdaccio.md (Polish) docs(website): new translations * New translations what-is-verdaccio.md (Polish) docs(website): new translations * New translations windows.md (Polish) docs(website): new translations * New translations en.json (Polish) docs(website): new translations * New translations en.json (Polish) docs(website): new translations * New translations notifications.md (Polish) docs(website): new translations * New translations plugins.md (Polish) docs(website): new translations * New translations plugins.md (Polish) docs(website): new translations * New translations server.md (Polish) docs(website): new translations * New translations install.md (Polish) docs(website): new translations * New translations ansible.md (Polish) docs(website): new translations * New translations build.md (Polish) docs(website): new translations * New translations cli.md (Polish) docs(website): new translations * New translations install.md (Polish) docs(website): new translations * New translations repositories.md (Polish) docs(website): new translations * New translations cli.md (Polish) docs(website): new translations * New translations config.md (Polish) docs(website): new translations * New translations config.md (Polish) docs(website): new translations * New translations config.md (Polish) docs(website): new translations * New translations config.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations windows.md (Polish) docs(website): new translations * New translations cli.md (Polish) docs(website): new translations * New translations ansible.md (Vietnamese) docs(website): new translations * New translations repositories.md (Vietnamese) docs(website): new translations * New translations chef.md (Vietnamese) docs(website): new translations * New translations puppet.md (Vietnamese) docs(website): new translations * New translations ci.md (Vietnamese) docs(website): new translations * New translations what-is-verdaccio.md (Vietnamese) docs(website): new translations * New translations node-api.md (Vietnamese) docs(website): new translations * New translations windows.md (Vietnamese) docs(website): new translations * New translations web.md (Vietnamese) docs(website): new translations * New translations use-cases.md (Vietnamese) docs(website): new translations * New translations uplinks.md (Vietnamese) docs(website): new translations * New translations test.md (Vietnamese) docs(website): new translations * New translations ssl.md (Vietnamese) docs(website): new translations * New translations server.md (Vietnamese) docs(website): new translations * New translations reverse-proxy.md (Vietnamese) docs(website): new translations * New translations protect-your-dependencies.md (Vietnamese) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations * New translations plugins.md (Vietnamese) docs(website): new translations * New translations packages.md (Vietnamese) docs(website): new translations * New translations notifications.md (Vietnamese) docs(website): new translations * New translations logger.md (Vietnamese) docs(website): new translations * New translations kubernetes.md (Vietnamese) docs(website): new translations * New translations install.md (Vietnamese) docs(website): new translations * New translations iis-server.md (Vietnamese) docs(website): new translations * New translations docker.md (Vietnamese) docs(website): new translations * New translations dev-plugins.md (Vietnamese) docs(website): new translations * New translations contributing.md (Vietnamese) docs(website): new translations * New translations config.md (Vietnamese) docs(website): new translations * New translations cli.md (Vietnamese) docs(website): new translations * New translations build.md (Vietnamese) docs(website): new translations * New translations en.json (Vietnamese) docs(website): new translations * New translations ansible.md (Vietnamese) docs(website): new translations * New translations ansible.md (Vietnamese) docs(website): new translations * New translations ansible.md (Vietnamese) docs(website): new translations * New translations contributing.md (Polish) docs(website): new translations * New translations install.md (Polish) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations * New translations uplinks.md (Spanish) docs(website): new translations * New translations plugins.md (Korean) docs(website): new translations * New translations build.md (Korean) docs(website): new translations * New translations cli.md (Korean) docs(website): new translations * New translations config.md (Korean) docs(website): new translations * New translations contributing.md (Korean) docs(website): new translations * New translations dev-plugins.md (Korean) docs(website): new translations * New translations docker.md (Korean) docs(website): new translations * New translations iis-server.md (Korean) docs(website): new translations * New translations install.md (Korean) docs(website): new translations * New translations kubernetes.md (Korean) docs(website): new translations * New translations logger.md (Korean) docs(website): new translations * New translations notifications.md (Korean) docs(website): new translations * New translations packages.md (Korean) docs(website): new translations * New translations protect-your-dependencies.md (Korean) docs(website): new translations * New translations ansible.md (Korean) docs(website): new translations * New translations repositories.md (Korean) docs(website): new translations * New translations reverse-proxy.md (Korean) docs(website): new translations * New translations server.md (Korean) docs(website): new translations * New translations ssl.md (Korean) docs(website): new translations * New translations test.md (Korean) docs(website): new translations * New translations uplinks.md (Korean) docs(website): new translations * New translations use-cases.md (Korean) docs(website): new translations * New translations web.md (Korean) docs(website): new translations * New translations windows.md (Korean) docs(website): new translations * New translations node-api.md (Korean) docs(website): new translations * New translations what-is-verdaccio.md (Korean) docs(website): new translations * New translations ci.md (Korean) docs(website): new translations * New translations puppet.md (Korean) docs(website): new translations * New translations auth.md (Korean) docs(website): new translations * New translations en.json (Italian) docs(website): new translations * New translations en.json (Korean) docs(website): new translations * New translations plugins.md (Italian) docs(website): new translations * New translations auth.md (Italian) docs(website): new translations * New translations build.md (Italian) docs(website): new translations * New translations cli.md (Italian) docs(website): new translations * New translations config.md (Italian) docs(website): new translations * New translations contributing.md (Italian) docs(website): new translations * New translations dev-plugins.md (Italian) docs(website): new translations * New translations docker.md (Italian) docs(website): new translations * New translations iis-server.md (Italian) docs(website): new translations * New translations install.md (Italian) docs(website): new translations * New translations kubernetes.md (Italian) docs(website): new translations * New translations logger.md (Italian) docs(website): new translations * New translations notifications.md (Italian) docs(website): new translations * New translations packages.md (Italian) docs(website): new translations * New translations protect-your-dependencies.md (Italian) docs(website): new translations * New translations chef.md (Italian) docs(website): new translations * New translations repositories.md (Italian) docs(website): new translations * New translations reverse-proxy.md (Italian) docs(website): new translations * New translations server.md (Italian) docs(website): new translations * New translations ssl.md (Italian) docs(website): new translations * New translations test.md (Italian) docs(website): new translations * New translations uplinks.md (Italian) docs(website): new translations * New translations use-cases.md (Italian) docs(website): new translations * New translations web.md (Italian) docs(website): new translations * New translations windows.md (Italian) docs(website): new translations * New translations node-api.md (Italian) docs(website): new translations * New translations what-is-verdaccio.md (Italian) docs(website): new translations * New translations ci.md (Italian) docs(website): new translations * New translations puppet.md (Italian) docs(website): new translations * New translations chef.md (Korean) docs(website): new translations * New translations ansible.md (Portuguese) docs(website): new translations * New translations protect-your-dependencies.md (Russian) docs(website): new translations * New translations cli.md (Russian) docs(website): new translations * New translations config.md (Russian) docs(website): new translations * New translations contributing.md (Russian) docs(website): new translations * New translations dev-plugins.md (Russian) docs(website): new translations * New translations docker.md (Russian) docs(website): new translations * New translations iis-server.md (Russian) docs(website): new translations * New translations install.md (Russian) docs(website): new translations * New translations kubernetes.md (Russian) docs(website): new translations * New translations logger.md (Russian) docs(website): new translations * New translations notifications.md (Russian) docs(website): new translations * New translations packages.md (Russian) docs(website): new translations * New translations plugins.md (Russian) docs(website): new translations * New translations repositories.md (Russian) docs(website): new translations * New translations auth.md (Russian) docs(website): new translations * New translations reverse-proxy.md (Russian) docs(website): new translations * New translations server.md (Russian) docs(website): new translations * New translations ssl.md (Russian) docs(website): new translations * New translations test.md (Russian) docs(website): new translations * New translations uplinks.md (Russian) docs(website): new translations * New translations use-cases.md (Russian) docs(website): new translations * New translations web.md (Russian) docs(website): new translations * New translations windows.md (Russian) docs(website): new translations * New translations node-api.md (Russian) docs(website): new translations * New translations what-is-verdaccio.md (Russian) docs(website): new translations * New translations ci.md (Russian) docs(website): new translations * New translations puppet.md (Russian) docs(website): new translations * New translations chef.md (Russian) docs(website): new translations * New translations build.md (Russian) docs(website): new translations * New translations ansible.md (Russian) docs(website): new translations * New translations auth.md (Portuguese) docs(website): new translations * New translations protect-your-dependencies.md (Portuguese) docs(website): new translations * New translations build.md (Portuguese) docs(website): new translations * New translations cli.md (Portuguese) docs(website): new translations * New translations config.md (Portuguese) docs(website): new translations * New translations contributing.md (Portuguese) docs(website): new translations * New translations dev-plugins.md (Portuguese) docs(website): new translations * New translations docker.md (Portuguese) docs(website): new translations * New translations iis-server.md (Portuguese) docs(website): new translations * New translations install.md (Portuguese) docs(website): new translations * New translations kubernetes.md (Portuguese) docs(website): new translations * New translations logger.md (Portuguese) docs(website): new translations * New translations notifications.md (Portuguese) docs(website): new translations * New translations packages.md (Portuguese) docs(website): new translations * New translations plugins.md (Portuguese) docs(website): new translations * New translations repositories.md (Portuguese) docs(website): new translations * New translations en.json (Portuguese) docs(website): new translations * New translations reverse-proxy.md (Portuguese) docs(website): new translations * New translations server.md (Portuguese) docs(website): new translations * New translations ssl.md (Portuguese) docs(website): new translations * New translations test.md (Portuguese) docs(website): new translations * New translations uplinks.md (Portuguese) docs(website): new translations * New translations use-cases.md (Portuguese) docs(website): new translations * New translations web.md (Portuguese) docs(website): new translations * New translations windows.md (Portuguese) docs(website): new translations * New translations node-api.md (Portuguese) docs(website): new translations * New translations what-is-verdaccio.md (Portuguese) docs(website): new translations * New translations ci.md (Portuguese) docs(website): new translations * New translations puppet.md (Portuguese) docs(website): new translations * New translations chef.md (Portuguese) docs(website): new translations * New translations ansible.md (Italian) docs(website): new translations * New translations cli.md (French) docs(website): new translations * New translations config.md (French) docs(website): new translations * New translations contributing.md (French) docs(website): new translations * New translations dev-plugins.md (French) docs(website): new translations * New translations docker.md (French) docs(website): new translations * New translations install.md (French) docs(website): new translations * New translations kubernetes.md (French) docs(website): new translations * New translations notifications.md (French) docs(website): new translations * New translations packages.md (French) docs(website): new translations * New translations plugins.md (French) docs(website): new translations * New translations web.md (French) docs(website): new translations * New translations windows.md (French) docs(website): new translations * New translations en.json (French) docs(website): new translations * New translations cli.md (German) docs(website): new translations * New translations notifications.md (Arabic) docs(website): new translations * New translations cli.md (Arabic) docs(website): new translations * New translations config.md (Arabic) docs(website): new translations * New translations contributing.md (Arabic) docs(website): new translations * New translations dev-plugins.md (Arabic) docs(website): new translations * New translations docker.md (Arabic) docs(website): new translations * New translations install.md (Arabic) docs(website): new translations * New translations kubernetes.md (Arabic) docs(website): new translations * New translations packages.md (Arabic) docs(website): new translations * New translations en.json (Arabic) docs(website): new translations * New translations plugins.md (Arabic) docs(website): new translations * New translations web.md (Arabic) docs(website): new translations * New translations windows.md (Arabic) docs(website): new translations * New translations config.md (German) docs(website): new translations * New translations kubernetes.md (Japanese) docs(website): new translations * New translations notifications.md (Japanese) docs(website): new translations * New translations packages.md (Japanese) docs(website): new translations * New translations plugins.md (Japanese) docs(website): new translations * New translations web.md (Japanese) docs(website): new translations * New translations windows.md (Japanese) docs(website): new translations * New translations en.json (Japanese) docs(website): new translations * New translations install.md (Japanese) docs(website): new translations * New translations docker.md (Japanese) docs(website): new translations * New translations contributing.md (German) docs(website): new translations * New translations dev-plugins.md (German) docs(website): new translations * New translations docker.md (German) docs(website): new translations * New translations install.md (German) docs(website): new translations * New translations kubernetes.md (German) docs(website): new translations * New translations notifications.md (German) docs(website): new translations * New translations packages.md (German) docs(website): new translations * New translations plugins.md (German) docs(website): new translations * New translations dev-plugins.md (Japanese) docs(website): new translations * New translations web.md (German) docs(website): new translations * New translations windows.md (German) docs(website): new translations * New translations en.json (German) docs(website): new translations * New translations cli.md (Japanese) docs(website): new translations * New translations config.md (Japanese) docs(website): new translations * New translations contributing.md (Japanese) docs(website): new translations * New translations en.json (Russian) docs(website): new translations * New translations auth.md (Vietnamese) docs(website): new translations
134 lines
No EOL
4.3 KiB
Markdown
134 lines
No EOL
4.3 KiB
Markdown
---
|
|
id: unit-testing
|
|
title: "Unit Testing"
|
|
---
|
|
All tests are split in three folders:
|
|
|
|
- `test/unit` - Tests that cover functions that transform data in an non-trivial way. These tests simply `require()` a few files and run code in there, so they are very fast.
|
|
- `test/functional` - Tests that launch a verdaccio instance and perform a series of requests to it over http. They are slower than unit tests.
|
|
- `test/integration` - Tests that launch a verdaccio instance and do requests to it using npm. They are really slow and can hit a real npm registry. **unmaintained test**
|
|
|
|
Unit and functional tests are executed automatically by running `npm test` from the project's root directory. Integration tests are supposed to be executed manually from time to time.
|
|
|
|
We use `jest` for all test.
|
|
|
|
## The npm Script
|
|
|
|
To run the test script you can use either `npm` or `yarn`.
|
|
|
|
yarn run test
|
|
|
|
|
|
That will trigger only two first groups of test, unit and functional.
|
|
|
|
### Using test/unit
|
|
|
|
The following is just an example how a unit test should looks like. Basically follow the `jest` standard.
|
|
|
|
Try to describe what exactly does the unit test in a single sentence in the header of the `test` section.
|
|
|
|
```javacript
|
|
const verdaccio = require('../../src/api/index');
|
|
const config = require('./partials/config');
|
|
|
|
describe('basic system test', () => {
|
|
|
|
beforeAll(function(done) {
|
|
// something important
|
|
});
|
|
|
|
afterAll((done) => {
|
|
// undo something important
|
|
});
|
|
|
|
test('server should respond on /', done => {
|
|
// your test
|
|
done();
|
|
});
|
|
});
|
|
```
|
|
|
|
### Using test/functional
|
|
|
|
Funtional testing in verdaccio has a bit more of complextity that needs a deep explanation in order to success in your experience.
|
|
|
|
All starts in the `index.js` file. Let's dive in into it.
|
|
|
|
```javascript
|
|
// we create 3 server instances
|
|
const config1 = new VerdaccioConfig(
|
|
'./store/test-storage',
|
|
'./store/config-1.yaml',
|
|
'http://localhost:55551/');
|
|
const config2 = new VerdaccioConfig(
|
|
'./store/test-storage2',
|
|
'./store/config-2.yaml',
|
|
'http://localhost:55552/');
|
|
const config3 = new VerdaccioConfig(
|
|
'./store/test-storage3',
|
|
'./store/config-3.yaml',
|
|
'http://localhost:55553/');
|
|
const server1: IServerBridge = new Server(config1.domainPath);
|
|
const server2: IServerBridge = new Server(config2.domainPath);
|
|
const server3: IServerBridge = new Server(config3.domainPath);
|
|
const process1: IServerProcess = new VerdaccioProcess(config1, server1, SILENCE_LOG);
|
|
const process2: IServerProcess = new VerdaccioProcess(config2, server2, SILENCE_LOG);
|
|
const process3: IServerProcess = new VerdaccioProcess(config3, server3, SILENCE_LOG);
|
|
const express: any = new ExpressServer();
|
|
...
|
|
|
|
// we check whether all instances has been started, since run in independent processes
|
|
beforeAll((done) => {
|
|
Promise.all([
|
|
process1.init(),
|
|
process2.init(),
|
|
process3.init()]).then((forks) => {
|
|
_.map(forks, (fork) => {
|
|
processRunning.push(fork[0]);
|
|
});
|
|
express.start(EXPRESS_PORT).then((app) =>{
|
|
done();
|
|
}, (err) => {
|
|
done(err);
|
|
});
|
|
}).catch((error) => {
|
|
done(error);
|
|
});
|
|
});
|
|
|
|
// after finish all, we ensure are been stoped
|
|
afterAll(() => {
|
|
_.map(processRunning, (fork) => {
|
|
fork.stop();
|
|
});
|
|
express.server.close();
|
|
});
|
|
|
|
|
|
```
|
|
|
|
### Usage
|
|
|
|
Here we are gonna describe how it looks like an usual functional test, check inline for more detail information.
|
|
|
|
#### The lib/server.js
|
|
|
|
The server class is just a wrapper that simulates a `npm` client and provides a simple API for the funtional test.
|
|
|
|
As we mention in the previous section, we are creating 3 process servers that are accessible in each process as `server1`, `server2` and ``server3`.
|
|
|
|
Using such reference you will be able to send request to any of the 3 instance running.
|
|
|
|
```javascript
|
|
<br />export default function(server) {
|
|
// we recieve any server instance via arguments
|
|
test('add tag - 404', () => {
|
|
// we interact with the server instance.
|
|
return server.addTag('testpkg-tag', 'tagtagtag', '0.0.1').status(404).body_error(/no such package/);
|
|
});
|
|
});
|
|
```
|
|
|
|
### Test/integration
|
|
|
|
These section never has been used, but we are looking for help to make it run properly. **All new ideas are very welcome.** |