Skip to content

Commit b70f4fa

Browse files
authored
Merge pull request #27 from DanielAraldi/feat/edit-user-data
Added endpoint to edit user data
2 parents f8eed68 + 33df8db commit b70f4fa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+868
-168
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ O objetivo do treinamento é mostrar como criar uma API com uma arquitetura bem
2020

2121
> ## APIs adicionais construídas:
2222
23-
1. [Refresh Token](./requirements/refresh-token.md)
23+
1. [Refresh token](./requirements/refresh-token.md)
24+
1. [Edição de dados do usuário](./requirements/edit-user-data.md)
2425

2526
> ## Princípios aplicados:
2627

package-lock.json

Lines changed: 162 additions & 145 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,20 +42,20 @@
4242
"@types/jest": "^29.4.0",
4343
"@types/jsonwebtoken": "^9.0.1",
4444
"@types/module-alias": "^2.0.1",
45-
"@types/node": "^18.13.0",
45+
"@types/node": "^18.14.2",
4646
"@types/supertest": "^2.0.12",
4747
"@types/swagger-ui-express": "^4.1.3",
4848
"@types/validator": "^13.7.12",
49-
"@typescript-eslint/eslint-plugin": "^5.52.0",
50-
"@typescript-eslint/parser": "^5.52.0",
49+
"@typescript-eslint/eslint-plugin": "^5.54.0",
50+
"@typescript-eslint/parser": "^5.54.0",
5151
"copyfiles": "^2.4.1",
5252
"coveralls": "^3.1.1",
53-
"eslint": "^8.34.0",
53+
"eslint": "^8.35.0",
5454
"eslint-config-standard-with-typescript": "^34.0.0",
5555
"eslint-plugin-import": "^2.27.5",
5656
"eslint-plugin-n": "^15.6.1",
5757
"eslint-plugin-promise": "^6.0.0",
58-
"git-commit-msg-linter": "^4.7.3",
58+
"git-commit-msg-linter": "^4.7.4",
5959
"husky": "^8.0.3",
6060
"jest": "^29.4.3",
6161
"lint-staged": "^13.1.2",
@@ -66,7 +66,7 @@
6666
"typescript": "^4.9.5"
6767
},
6868
"dependencies": {
69-
"@apollo/server": "^4.3.3",
69+
"@apollo/server": "^4.4.0",
7070
"@graphql-tools/schema": "^9.0.16",
7171
"@graphql-tools/utils": "^9.2.1",
7272
"bcrypt": "^5.0.1",
@@ -76,7 +76,7 @@
7676
"module-alias": "^2.2.2",
7777
"mongodb": "^4.13.0",
7878
"nodemon": "^2.0.20",
79-
"swagger-ui-express": "^4.5.0",
79+
"swagger-ui-express": "^4.6.2",
8080
"validator": "^13.9.0"
8181
},
8282
"engines": {

requirements/edit-user-data.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Edição de Dados do Usuário
2+
3+
> ## Caso de sucesso:
4+
5+
1. ✅ Recebe uma requisição do tipo **PUT** na rota **/api/account/edit**.
6+
1. ✅ Valida se os dados **name** e **email** não foram passados como `string` vazia.
7+
1. ✅ Valida que o campo **email** é um e-mail válido.
8+
1. ✅ Valida se já existe um usuário com o e-mail fornecido.
9+
1. ✅ Edita a conta do usuário com os dados informados.
10+
1. ✅ Retorna **204**.
11+
12+
> ## Exceções:
13+
14+
1. ✅ Retorna erro **404** se a API não existir.
15+
1. ✅ Retorna erro **400** se **name** e **email** forem uma `string` vazia.
16+
1. ✅ Retorna erro **400** se o campo **email** for um e-mail inválido.
17+
1. ✅ Retorna erro **403** se o e-mail fornecido já estiver em uso.
18+
1. ✅ Retorna erro **403** se não for um **usuário**.
19+
1. ✅ Retorna erro **500** se der erro ao tentar editar a conta do usuário.

requirements/login.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
1. ✅ Recebe uma requisição do tipo **POST** na rota **/api/login**.
66
1. ✅ Valida dados obrigatórios **email** e **password**.
77
1. ✅ Valida que o campo **email** é um e-mail válido.
8-
1. ✅ Busca o usuário com o email e senha fornecidos.
8+
1. ✅ Busca o usuário com o e-mail e senha fornecidos.
99
1. ✅ Gera um token de acesso a partir do ID do usuário.
1010
1. ✅ Atualiza os dados do usuário com o token de acesso gerado.
1111
1. ✅ Retorna **200** com o token de acesso e o nome do usuário.

requirements/save-survey-result.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
1. ✅ Retorna erro **404** se a API não existir.
1616
1. ✅ Retorna erro **403** se não for um **usuário**.
1717
1. ✅ Retorna erro **403** se o **surveyId** passado na URL for inválido.
18-
1. ✅ Retorna erro **403** se a resposta enviada pelo client for uma resposta inválida.
18+
1. ✅ Retorna erro **403** se a resposta enviada pelo cliente for uma resposta inválida.
1919
1. ✅ Retorna erro **500** se der erro ao tentar criar o resultado da enquete.
2020
1. ✅ Retorna erro **500** se der erro ao tentar atualizar o resultado da enquete.
2121
1. ✅ Retorna erro **500** se der erro ao tentar carregar a enquete.

requirements/signup.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
1. ✅ Valida dados obrigatórios **name**, **email**, **password** e **passwordConfirmation**.
77
1. ✅ Valida que **password** e **passwordConfirmation** são iguais.
88
1. ✅ Valida que o campo **email** é um e-mail válido.
9-
1. ✅ Valida se já existe um usuário com o email fornecido.
9+
1. ✅ Valida se já existe um usuário com o e-mail fornecido.
1010
1. ✅ Gera uma senha criptografada (essa senha não pode ser descriptografada).
1111
1. ✅ Cria uma conta para o usuário com os dados informados, substituindo a senha pela senha criptorafada.
1212
1. ✅ Gera um token de acesso a partir do ID do usuário.
@@ -19,7 +19,7 @@
1919
1. ✅ Retorna erro **400** se **name**, **email**, **password** ou **passwordConfirmation** não forem fornecidos pelo cliente.
2020
1. ✅ Retorna erro **400** se **password** e **passwordConfirmation** não forem iguais.
2121
1. ✅ Retorna erro **400** se o campo **email** for um e-mail inválido.
22-
1. ✅ Retorna erro **403** se o email fornecido já estiver em uso.
22+
1. ✅ Retorna erro **403** se o e-mail fornecido já estiver em uso.
2323
1. ✅ Retorna erro **500** se der erro ao tentar gerar uma senha criptografada.
2424
1. ✅ Retorna erro **500** se der erro ao tentar criar a conta do usuário.
2525
1. ✅ Retorna erro **500** se der erro ao tentar gerar o token de acesso.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export interface HashComparer {
2-
compare(plaitext: string, digest: string): Promise<boolean>;
2+
compare(plaintext: string, digest: string): Promise<boolean>;
33
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { EditAccount } from '@/domain/usecases';
2+
3+
export interface EditAccountRepository {
4+
edit(data: EditAccountRepository.Params): Promise<void>;
5+
}
6+
7+
export namespace EditAccountRepository {
8+
export type Params = EditAccount.Params;
9+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export * from './add-account-repository';
22
export * from './check-account-by-email-repository';
3+
export * from './edit-account-repository';
34
export * from './load-account-by-email-repository';
45
export * from './load-account-by-token-repository';
56
export * from './update-access-token-repository';

0 commit comments

Comments
 (0)