diff --git a/app/Http/Controllers/DevicesController.php b/app/Http/Controllers/DevicesController.php new file mode 100644 index 0000000..00d4f35 --- /dev/null +++ b/app/Http/Controllers/DevicesController.php @@ -0,0 +1,51 @@ +bearer_apibrasil) { + return response()->json([ + 'error' => true, + 'message' => 'Token API Brasil não configurado', + ], 400); + } + + $response = Http::withHeaders([ + 'Content-Type' => 'application/json', + 'Authorization' => 'Bearer ' . $user->bearer_apibrasil, + ])->get("{$this->baseUrl}/devices"); + + return response()->json($response->json(), $response->status()); + } + + public function store(Request $request) + { + $user = Auth::user(); + + if (!$user || !$user->bearer_apibrasil) { + return response()->json([ + 'error' => true, + 'message' => 'Token API Brasil não configurado', + ], 400); + } + + $response = Http::withHeaders([ + 'Content-Type' => 'application/json', + 'Authorization' => 'Bearer ' . $user->bearer_apibrasil, + ])->post("{$this->baseUrl}/devices/store", $request->all()); + + return response()->json($response->json(), $response->status()); + } +} + diff --git a/app/Http/Controllers/RequestsController.php b/app/Http/Controllers/RequestsController.php index 7a9bda1..c83f579 100644 --- a/app/Http/Controllers/RequestsController.php +++ b/app/Http/Controllers/RequestsController.php @@ -47,7 +47,6 @@ public function defaultRequest(String $urlRequest, array $headers, array $data, $user = User::findOrFail(Auth::user()->id); $bearerAPIBrasil = $user->bearer_apibrasil; // token da API Brasil salvo no usuário - $devicetoken = $user->device_token; // device token salvo no usuário // Define headers básicos da requisição diff --git a/app/Models/User.php b/app/Models/User.php index 98c06bc..69eaff1 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -57,7 +57,7 @@ public function transaction(string $type, float $amount) 'cellphone', 'bearer_apibrasil', 'is_admin', - 'balance', + 'balance', ]; diff --git a/routes/api.php b/routes/api.php index fa3a0f8..ee075e3 100644 --- a/routes/api.php +++ b/routes/api.php @@ -5,6 +5,7 @@ use App\Http\Controllers\RequestsController; use App\Http\Controllers\TransactionsController; use App\Http\Controllers\UsersController; +use App\Http\Controllers\DevicesController; use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; @@ -29,6 +30,10 @@ Route::post('/add-balance', [TransactionsController::class, 'addBalance']); Route::post('/users/{id}/add-balance', [TransactionsController::class, 'addBalanceToUser']); + // devices + Route::get('/devices', [DevicesController::class, 'index']); + Route::post('/devices/store', [DevicesController::class, 'store']); + // preços - acesso restrito a administradores Route::middleware('admin')->apiResource('prices', PricesController::class); diff --git a/tests/Feature/DevicesTest.php b/tests/Feature/DevicesTest.php new file mode 100644 index 0000000..000dd47 --- /dev/null +++ b/tests/Feature/DevicesTest.php @@ -0,0 +1,66 @@ + Http::response([ + 'device' => ['device_token' => 'abc123'], + ], 200), + ]); + + $user = User::create([ + 'name' => 'User', + 'email' => 'user@example.com', + 'password' => bcrypt('password'), + 'cellphone' => '123456789', + 'balance' => 0, + 'bearer_apibrasil' => 'token', + ]); + + $response = $this->actingAs($user, 'sanctum') + ->postJson('/api/devices/store', ['device_name' => 'teste']); + + $response->assertStatus(200) + ->assertJson([ + 'device' => ['device_token' => 'abc123'], + ]); + } + + public function test_index_returns_devices_from_api(): void + { + Http::fake([ + 'https://gateway.apibrasil.io/api/v2/devices' => Http::response([ + 'devices' => [], + ], 200), + ]); + + $user = User::create([ + 'name' => 'User2', + 'email' => 'user2@example.com', + 'password' => bcrypt('password'), + 'cellphone' => '987654321', + 'balance' => 0, + 'bearer_apibrasil' => 'token', + ]); + + $response = $this->actingAs($user, 'sanctum') + ->getJson('/api/devices'); + + $response->assertStatus(200) + ->assertJson([ + 'devices' => [], + ]); + } +} +