From ca864f33b7e195a8bc12ce8755c4ba7917af3185 Mon Sep 17 00:00:00 2001 From: sdraris Date: Wed, 20 Aug 2025 10:29:44 +0200 Subject: [PATCH] routes added --- src/routes/auth/auth.controller.spec.ts | 18 +++++++++++++ src/routes/auth/auth.controller.ts | 22 ++++++++++++++++ src/routes/auth/auth.module.ts | 9 +++++++ src/routes/auth/auth.service.spec.ts | 18 +++++++++++++ src/routes/auth/auth.service.ts | 21 +++++++++++++++ src/routes/auth/dto/login.dto.ts | 9 +++++++ src/routes/auth/dto/register.dto.ts | 15 +++++++++++ src/routes/user/dto/createUser.dto.ts | 3 +++ src/routes/user/user.controller.spec.ts | 20 +++++++++++++++ src/routes/user/user.controller.ts | 26 +++++++++++++++++++ src/routes/user/user.module.ts | 9 +++++++ src/routes/user/user.service.spec.ts | 18 +++++++++++++ src/routes/user/user.service.ts | 34 +++++++++++++++++++++++++ 13 files changed, 222 insertions(+) create mode 100644 src/routes/auth/auth.controller.spec.ts create mode 100644 src/routes/auth/auth.controller.ts create mode 100644 src/routes/auth/auth.module.ts create mode 100644 src/routes/auth/auth.service.spec.ts create mode 100644 src/routes/auth/auth.service.ts create mode 100644 src/routes/auth/dto/login.dto.ts create mode 100644 src/routes/auth/dto/register.dto.ts create mode 100644 src/routes/user/dto/createUser.dto.ts create mode 100644 src/routes/user/user.controller.spec.ts create mode 100644 src/routes/user/user.controller.ts create mode 100644 src/routes/user/user.module.ts create mode 100644 src/routes/user/user.service.spec.ts create mode 100644 src/routes/user/user.service.ts diff --git a/src/routes/auth/auth.controller.spec.ts b/src/routes/auth/auth.controller.spec.ts new file mode 100644 index 0000000..27a31e6 --- /dev/null +++ b/src/routes/auth/auth.controller.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AuthController } from './auth.controller'; + +describe('AuthController', () => { + let controller: AuthController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [AuthController], + }).compile(); + + controller = module.get(AuthController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/src/routes/auth/auth.controller.ts b/src/routes/auth/auth.controller.ts new file mode 100644 index 0000000..b6fe521 --- /dev/null +++ b/src/routes/auth/auth.controller.ts @@ -0,0 +1,22 @@ +import { Body, Controller, Get, Post } from '@nestjs/common'; +import { AuthService } from './auth.service'; +import { LoginDto } from './dto/login.dto'; +import { RegisterDto } from './dto/register.dto'; + +@Controller('auth') +export class AuthController { + constructor(private readonly authService: AuthService) {} + + + //Route pour se connecter + @Post('login') + login(@Body() loginDto: LoginDto) { + return this.authService.login(loginDto); + } + + //Route pour s'inscrire + @Post('register') + register(@Body() registerDto: RegisterDto) { + return this.authService.register(registerDto); + } +} diff --git a/src/routes/auth/auth.module.ts b/src/routes/auth/auth.module.ts new file mode 100644 index 0000000..b51ac54 --- /dev/null +++ b/src/routes/auth/auth.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { AuthController } from './auth.controller'; +import { AuthService } from './auth.service'; + +@Module({ + controllers: [AuthController], + providers: [AuthService] +}) +export class AuthModule {} diff --git a/src/routes/auth/auth.service.spec.ts b/src/routes/auth/auth.service.spec.ts new file mode 100644 index 0000000..800ab66 --- /dev/null +++ b/src/routes/auth/auth.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { AuthService } from './auth.service'; + +describe('AuthService', () => { + let service: AuthService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [AuthService], + }).compile(); + + service = module.get(AuthService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/src/routes/auth/auth.service.ts b/src/routes/auth/auth.service.ts new file mode 100644 index 0000000..0c62e51 --- /dev/null +++ b/src/routes/auth/auth.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@nestjs/common'; +import { LoginDto } from './dto/login.dto'; +import { RegisterDto } from './dto/register.dto'; + +@Injectable() +export class AuthService { + + register(registerDto: RegisterDto) { + return { + message: `User registered successfully ${registerDto}`, + user: registerDto, + }; + } + + login(loginDto: LoginDto) { + return { + message: `Login successful ${loginDto.email}`, + user: loginDto, + }; + } +} diff --git a/src/routes/auth/dto/login.dto.ts b/src/routes/auth/dto/login.dto.ts new file mode 100644 index 0000000..804b28c --- /dev/null +++ b/src/routes/auth/dto/login.dto.ts @@ -0,0 +1,9 @@ +import { IsEmail, MinLength } from 'class-validator'; + +export class LoginDto { + @IsEmail() + email: string; + + @MinLength(8) + password: string; +} diff --git a/src/routes/auth/dto/register.dto.ts b/src/routes/auth/dto/register.dto.ts new file mode 100644 index 0000000..ab94e78 --- /dev/null +++ b/src/routes/auth/dto/register.dto.ts @@ -0,0 +1,15 @@ +import { IsEmail, IsNotEmpty, MaxLength, MinLength } from "class-validator"; + +export class RegisterDto { + + @IsEmail() + email: string; + + @IsNotEmpty() + username: string; + + @MinLength(8) + password: string; +} + + diff --git a/src/routes/user/dto/createUser.dto.ts b/src/routes/user/dto/createUser.dto.ts new file mode 100644 index 0000000..cfa6da0 --- /dev/null +++ b/src/routes/user/dto/createUser.dto.ts @@ -0,0 +1,3 @@ +export class CreateUserDto { + email: string; +} \ No newline at end of file diff --git a/src/routes/user/user.controller.spec.ts b/src/routes/user/user.controller.spec.ts new file mode 100644 index 0000000..1f38440 --- /dev/null +++ b/src/routes/user/user.controller.spec.ts @@ -0,0 +1,20 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { UserController } from './user.controller'; +import { UserService } from './user.service'; + +describe('UserController', () => { + let controller: UserController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [UserController], + providers: [UserService], + }).compile(); + + controller = module.get(UserController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/src/routes/user/user.controller.ts b/src/routes/user/user.controller.ts new file mode 100644 index 0000000..67a5d31 --- /dev/null +++ b/src/routes/user/user.controller.ts @@ -0,0 +1,26 @@ +import { Body, Controller, Get, Param, Post } from '@nestjs/common'; +import { UserService } from './user.service'; + +@Controller('users') +export class UserController { + constructor(private readonly userService: UserService) {} + + //Route pour retrouver tous les utilisateurs + @Get() + findAll() { + return this.userService.findAll(); + } + + //Route pour retrouver un utilisateur par ID + @Get(':id') + findOneById(@Param('id') id: string) { + return this.userService.findOneById(Number(id)); + } + + //Route pour créer un utilisateur + @Post() + createUser(@Body() createUserDto: { email: string }) { + return this.userService.createUser(createUserDto); + } + +} diff --git a/src/routes/user/user.module.ts b/src/routes/user/user.module.ts new file mode 100644 index 0000000..b3801b5 --- /dev/null +++ b/src/routes/user/user.module.ts @@ -0,0 +1,9 @@ +import { Module } from '@nestjs/common'; +import { UserController } from './user.controller'; +import { UserService } from './user.service'; + +@Module({ + controllers: [UserController], + providers: [UserService] +}) +export class UserModule {} diff --git a/src/routes/user/user.service.spec.ts b/src/routes/user/user.service.spec.ts new file mode 100644 index 0000000..873de8a --- /dev/null +++ b/src/routes/user/user.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { UserService } from './user.service'; + +describe('UserService', () => { + let service: UserService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [UserService], + }).compile(); + + service = module.get(UserService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/src/routes/user/user.service.ts b/src/routes/user/user.service.ts new file mode 100644 index 0000000..eaa6e3b --- /dev/null +++ b/src/routes/user/user.service.ts @@ -0,0 +1,34 @@ +import { Injectable } from '@nestjs/common'; + +@Injectable() +export class UserService { + private users = [ + { id: 1, email: 'alice@example.com' }, + { id: 2, email: 'bob@example.com' }, + ]; + + //Methode pour trouver tous les utilisateurs + findAll() { + return this.users; + } + + //Methode pour trouver un utilisateur par ID + findOneById(id: number) { + return this.users.find(user => user.id === id); + } + + //Methode pour trouver un utilisateur par email + findOneByEmail(email: string) { + return this.users.find(user => user.email === email); + } + + //Methode pour faire un utilisateur + createUser(createUserDto: {email: string}) { + const newUser = { + id: this.users.length + 1, + ...createUserDto, + }; + this.users.push(newUser); + return newUser; + } +}