Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 111 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,119 @@
# A tarefa
Sua tarefa consiste em desenvolver uma API RESTful para manipular um determinado recurso. Deverá ser utilizado o framework Silex.
# Serasa Test App

# Requisitos
A escolha do recurso deverá ser feita pelo desenvolvedor, atendendo apenas os requisitos mínimos abaixo:
## Installation

* Deverá conter um ID
* Deverá conter pelo menos quatro propriedades (exemplos: nome, email, etc.)
* Deverá conter campos que armazenem as datas de criação e alteração do recurso

A API deverá atender às seguintes exigências:
Apps requires

* Listagem de todos os recursos
* Busca de um recurso pelo ID
* Criação de um novo recurso
* Alteração de um recurso existente
* Exclusão de um recurso
* Aceitar e retornar apenas JSON
* Deverá possuir algum método de autenticação para utilização de seus endpoints
**PHP >= 7.0**

# Ferramentas
* PHP
* Banco de dados MySQL
* Framework Silex
**NODE >= 7.6.0**

# Fluxo de desenvolvimento
1. Faça um fork deste repositório
2. Crie uma nova branch e nomeie-a com seu usuário do Github
3. Quando o desenvolvimento estiver concluído, faça um pull request
**MYSQL >= 5.6.35**

# Padrões de nomenclatura
1. Código fonte, nome do banco de dados, tabelas e campos devem estar em inglês
**Dependency management Composer**

**Inclua no seu commit todos os arquivos necessários para que possamos testar o código.**
**Dependency management NPM**

### Installation api-mock

```
cd api-mock
npm i
```

### Installation test-html

```
cd test-html
npm i
```

### Installation test-php

#### Edit Config app
```
/test-php/config/config.php
```

#### Install dependencies
```
cd test-php
composer install
```
#### Update schema

```
vendor/bin/doctrine o:s:u --force
```


## Start HTML test

```
cd api-mock
npm start
```

in a new terminal

```
cd test-html
npm start
```

Then open http://localhost:3000/ to see your app.

_**required to start api-mock for test-html operation**_



## WebService

Starting webservice

```
cd test-php/public
php -S localhost:8000

```

## Authentication route

```
POST /api/v1/authentication

```

### Body
```
{
"user":"admin",
"password":"admin"
}
```

## Person routes
```
GET /api/v1/person
GET /api/v1/person/{id}
POST /api/v1/person
PUT /api/v1/person/{id}
DELETE /api/v1/person/{id}

```

### Body
```
{
"name":"Fábio Luis Alexandre",
"email":"fabio@fabio.com",
"document" : "00837154901",
"phone" : "99991234"
}
```

## Required token
```
Authorization - Bearer {token}
```
81 changes: 81 additions & 0 deletions api-mock/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
const Koa = require('koa')
const Router = require('koa-router')
const BodyParser = require('koa-bodyparser')
const koaBody = require('koa-body')
const CORS = require('kcors')
const app = new Koa()
const router = new Router()

app.use(CORS({
allowMethods: ["GET,HEAD,PUT,PATCH,POST,DELETE"]
}))

app.use(koaBody({ multipart: true }))
app.use(BodyParser())

router
.get("/calendar", async (ctx) => {
ctx.status = 200
ctx.body = [
"23/11",
"30/11",
"07/12",
"14/12",
"21/12",
"28/12",
"04/01",
"11/01",
"18/01",
"25/01",
"01/02",
"08/02",
"15/02",
"22/02",
"01/03",
"08/03",
"15/03",
"22/03",
"29/03",
"05/04"
]
}).get("/winners", async (ctx) => {
ctx.status = 200
ctx.body = [
{
city: "Rio de Janeiro",
number: "24852",
date: "23/11"
},
{
city: "Ceará",
number: "32977",
date: "30/11"
},
{
city: "São Paulo",
number: "00992",
date: "07/12"
},
{
city: "São Paulo",
number: "38566",
date: "14/12"
},
{
city: "Paraná",
number: "93643",
date: "21/12"
},
{
city: "Minas Gerais",
number: "68678",
date: "28/12"
}
]
})

app.use(router.routes())
.use(router.allowedMethods())


app.listen(7700)
Loading