82 lines
2.1 KiB
Markdown
82 lines
2.1 KiB
Markdown
# TP CI/CD
|
|
|
|
A Node.js application providing a simple greeting service with a REST API. It includes a server built with Express, greeting logic, and comprehensive test
|
|
suites (unit, integration, and end-to-end).
|
|
|
|
## Features
|
|
|
|
- **Greeting Functionality**: Generates personalized greetings via `src/greeting.js`.
|
|
- **REST API Server**: Built with Express in `src/server.js`, supporting GET and POST endpoints for greetings.
|
|
- **Testing**: Full test coverage with Jest:
|
|
- Unit tests in `tests/unit/greeting.test.js`.
|
|
- Integration tests in `tests/integration/app.test.js`.
|
|
- End-to-end tests in `tests/e2e/e2e.test.js`.
|
|
- **Linting**: Configured with ESLint (via `.eslintrc.js` and `.eslintignore`).
|
|
- **Node.js Version Management**: Uses `.nvmrc` to specify Node.js v22.19.0.
|
|
|
|
## Prerequisites
|
|
|
|
- Node.js ≥22.19.0 (use `.nvmrc` with nvm: `nvm use`).
|
|
- npm (included with Node.js).
|
|
|
|
## Installation
|
|
|
|
1. Fork the repository:
|
|
2. Install dependencies:
|
|
|
|
```
|
|
npm install
|
|
```
|
|
|
|
## Usage
|
|
|
|
Start the server:
|
|
|
|
```
|
|
npm start
|
|
```
|
|
|
|
The server runs on port 3000 (or `process.env.PORT`). Endpoints:
|
|
|
|
- `GET /hello/:name?`: Returns a greeting (e.g., "Hello world!" or "Hello world! From [name]").
|
|
- `POST /hello`: Expects `x-name` header for the name.
|
|
|
|
## Testing
|
|
|
|
Run tests with Jest:
|
|
|
|
- All tests: `npm test`
|
|
- Unit tests: `npm test -- tests/unit/`
|
|
- Integration tests: `npm test -- tests/integration/`
|
|
- E2E tests: `npm test -- tests/e2e/`
|
|
|
|
## Linting
|
|
|
|
Check code quality:
|
|
|
|
```
|
|
npm run lint
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
- `src/greeting.js`: Core greeting logic.
|
|
- `src/server.js`: Express server setup.
|
|
- `tests/`: Test suites (unit, integration, e2e).
|
|
- `.eslintrc.js`: ESLint configuration.
|
|
- `.eslintignore`: Files/directories excluded from linting.
|
|
- `.nvmrc`: Node.js version specification.
|
|
- `package.json`: Project metadata, dependencies, and scripts.
|
|
|
|
## Dependencies
|
|
|
|
- **Runtime**: Express (web server), Axios (HTTP client), Supertest (testing utility).
|
|
- **Dev**: ESLint (linting), Jest (testing).
|
|
|
|
## Contributing
|
|
|
|
1. Fork the repo.
|
|
2. Create a feature branch.
|
|
3. Run tests and linting.
|
|
4. Submit a pull request.
|