Stuff
This commit is contained in:
parent
aa4b623978
commit
7a6e1a7adc
15 changed files with 540 additions and 28 deletions
34
app/Data/Entitiy/App.php
Normal file
34
app/Data/Entitiy/App.php
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Entity;
|
||||||
|
|
||||||
|
class App extends Base
|
||||||
|
{
|
||||||
|
public $id;
|
||||||
|
public $created_at;
|
||||||
|
public $updated_at;
|
||||||
|
public $user_id;
|
||||||
|
public $name;
|
||||||
|
public $description;
|
||||||
|
public $url;
|
||||||
|
public $apiKey;
|
||||||
|
public $apiSecret;
|
||||||
|
public $auto_accept;
|
||||||
|
public $testing_warning;
|
||||||
|
public $untrusted_warning;
|
||||||
|
public $show_on_webpage;
|
||||||
|
public $direct_url;
|
||||||
|
public $icon;
|
||||||
|
public $stop_auto_redirect;
|
||||||
|
public $hidden_in_app_list;
|
||||||
|
public $user_cant_remove_app;
|
||||||
|
public $access_oAuth;
|
||||||
|
public $access_api;
|
||||||
|
public $access_update_apps;
|
||||||
|
public $access_update_profile;
|
||||||
|
public $access_update_access;
|
||||||
|
public $access_read_apps;
|
||||||
|
public $access_read_profile;
|
||||||
|
public $access_read_access;
|
||||||
|
public $iconURL;
|
||||||
|
|
||||||
|
}
|
17
app/Data/Entitiy/Base.php
Normal file
17
app/Data/Entitiy/Base.php
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Entity;
|
||||||
|
|
||||||
|
class Base {
|
||||||
|
public function load($attributes) : bool
|
||||||
|
{
|
||||||
|
foreach ($attributes as $key => $value) {
|
||||||
|
if (property_exists($this, $key)) {
|
||||||
|
$this->$key = $value;
|
||||||
|
} else {
|
||||||
|
throw new \Exception("Entitiy has no property ".$key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
22
app/Data/Entitiy/User.php
Normal file
22
app/Data/Entitiy/User.php
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Entity;
|
||||||
|
|
||||||
|
class User extends Base
|
||||||
|
{
|
||||||
|
public $id;
|
||||||
|
public $created_at;
|
||||||
|
public $updated_at;
|
||||||
|
public $username;
|
||||||
|
public $password;
|
||||||
|
public $developer;
|
||||||
|
public $admin;
|
||||||
|
public $status;
|
||||||
|
public $inviteCode;
|
||||||
|
public $password_recovery_code;
|
||||||
|
|
||||||
|
public $mail;
|
||||||
|
|
||||||
|
public function getMail() {
|
||||||
|
return $this->mail;
|
||||||
|
}
|
||||||
|
}
|
48
app/Data/Repository/AppRepository.php
Normal file
48
app/Data/Repository/AppRepository.php
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Repository;
|
||||||
|
|
||||||
|
use App\Data\Entity\App;
|
||||||
|
|
||||||
|
class AppRepository extends BaseRepository {
|
||||||
|
protected $table = "apps";
|
||||||
|
|
||||||
|
public function getAllApps() {
|
||||||
|
$pdo = app('db')->getPdo();
|
||||||
|
$sql = "SELECT * FROM apps;";
|
||||||
|
|
||||||
|
$sth = $pdo->prepare($sql);
|
||||||
|
|
||||||
|
$sth->execute();
|
||||||
|
$res = $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
$appList = [];
|
||||||
|
|
||||||
|
foreach ($res as $dbEntry) {
|
||||||
|
$app = new App();
|
||||||
|
$app->load($dbEntry);
|
||||||
|
$appList[] = $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
return collect($appList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findById($id): ?App {
|
||||||
|
$pdo = app('db')->getPdo();
|
||||||
|
$sql = "SELECT * FROM apps WHERE `id` = :id;";
|
||||||
|
|
||||||
|
$sth = $pdo->prepare($sql);
|
||||||
|
|
||||||
|
$sth->execute([":id" => $id]);
|
||||||
|
$res = $sth->fetch(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
if(is_null($res)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$app = new App();
|
||||||
|
$app->load($res);
|
||||||
|
return $app;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
35
app/Data/Repository/BaseRepository.php
Normal file
35
app/Data/Repository/BaseRepository.php
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Repository;
|
||||||
|
|
||||||
|
|
||||||
|
class BaseRepository {
|
||||||
|
protected $table = "";
|
||||||
|
|
||||||
|
public function update($obj) {
|
||||||
|
$pdo = app('db')->getPdo();
|
||||||
|
$sql = "UPDATE `".$this->table."` SET ";
|
||||||
|
$first = true;
|
||||||
|
|
||||||
|
$values = [];
|
||||||
|
foreach (get_object_vars($obj) as $key => $value) {
|
||||||
|
if(in_array($key, ["id", "created_at"])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(!$first) {
|
||||||
|
$sql .= ", ";
|
||||||
|
}
|
||||||
|
$first = false;
|
||||||
|
$sql .= "`".$key."` = :".$key;
|
||||||
|
if(is_bool($value)) {
|
||||||
|
$value = (int)$value;
|
||||||
|
}
|
||||||
|
$values[":".$key] = $value;
|
||||||
|
}
|
||||||
|
$sql .= " WHERE `id` = ".$obj->id;
|
||||||
|
|
||||||
|
$sth = $pdo->prepare($sql);
|
||||||
|
$sth->execute($values);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
44
app/Data/Repository/UserRepository.php
Normal file
44
app/Data/Repository/UserRepository.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
namespace App\Data\Repository;
|
||||||
|
|
||||||
|
use App\Data\Entity\User;
|
||||||
|
|
||||||
|
class UserRepository {
|
||||||
|
public function getAllUsers() {
|
||||||
|
$pdo = app('db')->getPdo();
|
||||||
|
$sql = "SELECT *, (SELECT `mail` FROM mails WHERE user_id = users.id AND `primary` = 1) AS mail FROM users;";
|
||||||
|
|
||||||
|
$sth = $pdo->prepare($sql);
|
||||||
|
|
||||||
|
$sth->execute();
|
||||||
|
$res = $sth->fetchAll(\PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
$userList = [];
|
||||||
|
|
||||||
|
foreach ($res as $dbEntry) {
|
||||||
|
$user = new User();
|
||||||
|
$user->load($dbEntry);
|
||||||
|
$userList[] = $user;
|
||||||
|
}
|
||||||
|
|
||||||
|
return collect($userList);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findById($id): ?User {
|
||||||
|
$pdo = app('db')->getPdo();
|
||||||
|
$sql = "SELECT *, (SELECT `mail` FROM mails WHERE user_id = users.id AND `primary` = 1) AS mail FROM users WHERE `id` = :id;";
|
||||||
|
|
||||||
|
$sth = $pdo->prepare($sql);
|
||||||
|
|
||||||
|
$sth->execute([":id" => $id]);
|
||||||
|
$res = $sth->fetch(\PDO::FETCH_ASSOC);
|
||||||
|
if(is_null($res)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user = new User();
|
||||||
|
$user->load($user);
|
||||||
|
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
}
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers\API;
|
namespace App\Http\Controllers\API;
|
||||||
|
|
||||||
|
use App\Data\Repository\UserRepository;
|
||||||
use App\Exceptions\HTTPException;
|
use App\Exceptions\HTTPException;
|
||||||
use App\Exceptions\NoPermissionException;
|
use App\Exceptions\NoPermissionException;
|
||||||
use App\Exceptions\NotLoggedInException;
|
use App\Exceptions\NotLoggedInException;
|
||||||
|
@ -14,7 +15,7 @@ use TaGeSo\APIResponse\Response;
|
||||||
|
|
||||||
class AccountController extends BaseController
|
class AccountController extends BaseController
|
||||||
{
|
{
|
||||||
public function getUsers(Response $response) {
|
public function getUsers(Response $response, UserRepository $userRepository) {
|
||||||
|
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
throw new NotLoggedInException();
|
throw new NotLoggedInException();
|
||||||
|
@ -24,17 +25,12 @@ class AccountController extends BaseController
|
||||||
throw new NoPermissionException();
|
throw new NoPermissionException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$users = User::query()->paginate(100);
|
$users = $userRepository->getAllUsers();
|
||||||
$response->setPagination(
|
|
||||||
$users->currentPage(),
|
|
||||||
$users->lastPage(),
|
|
||||||
$users->perPage()
|
|
||||||
);
|
|
||||||
|
|
||||||
return $response->withData(\App\Http\Resources\API\User::collection(($users)));
|
return $response->withData(\App\Http\Resources\API\User::collection(($users)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUser(Response $response, $id) {
|
public function getUser(Response $response, UserRepository $userRepository, $id) {
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
throw new NotLoggedInException();
|
throw new NotLoggedInException();
|
||||||
}
|
}
|
||||||
|
@ -43,7 +39,7 @@ class AccountController extends BaseController
|
||||||
throw new NoPermissionException();
|
throw new NoPermissionException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$user = User::query()->where("id", "=", $id)->first();
|
$user = $userRepository->findById($id);
|
||||||
|
|
||||||
if($user == null) {
|
if($user == null) {
|
||||||
throw new ResourceNotFound();
|
throw new ResourceNotFound();
|
||||||
|
|
|
@ -3,7 +3,10 @@
|
||||||
|
|
||||||
namespace App\Http\Controllers\API;
|
namespace App\Http\Controllers\API;
|
||||||
|
|
||||||
|
use App\Data\Repository\AppRepository;
|
||||||
use App\Exceptions\HTTPException;
|
use App\Exceptions\HTTPException;
|
||||||
|
use App\Exceptions\NoPermissionException;
|
||||||
|
use App\Exceptions\NotLoggedInException;
|
||||||
use App\Jobs\Mails\ValidateMailAddressJob;
|
use App\Jobs\Mails\ValidateMailAddressJob;
|
||||||
use App\Models\App;
|
use App\Models\App;
|
||||||
use App\Models\Invite;
|
use App\Models\Invite;
|
||||||
|
@ -17,27 +20,32 @@ use TaGeSo\APIResponse\Response;
|
||||||
class AdminController extends BaseController
|
class AdminController extends BaseController
|
||||||
{
|
{
|
||||||
|
|
||||||
public function listAllApps(Request $request, Response $response) {
|
public function listAllApps(Request $request, Response $response, AppRepository $appRepository) {
|
||||||
|
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
abort(401);
|
throw new NotLoggedInException();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!Auth::user()->admin) {
|
if(!Auth::user()->admin) {
|
||||||
throw new HTTPException("Need Admin Access");
|
throw new NoPermissionException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$apps = App::all();
|
$apps = $appRepository->getAllApps();
|
||||||
|
|
||||||
|
|
||||||
return $response->withData(\App\Http\Resources\API\App::collection($apps));
|
return $response->withData(\App\Http\Resources\API\App::collection($apps));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveAppProperties(Request $request, Response $response, $id) {
|
public function saveAppProperties(Request $request, Response $response, AppRepository $appRepository, $id) {
|
||||||
if(!Auth::user()->admin) {
|
if(!Auth::check()) {
|
||||||
throw new HTTPException("Need Admin Access");
|
throw new NotLoggedInException();
|
||||||
}
|
}
|
||||||
|
|
||||||
$app = App::query()->where("id", "=", $id)->first("*");
|
if(!Auth::user()->admin) {
|
||||||
|
throw new NoPermissionException();
|
||||||
|
}
|
||||||
|
|
||||||
|
$app = $appRepository->findById($id);
|
||||||
|
|
||||||
$app->auto_accept = (bool)$request->input("autoAccept", false);
|
$app->auto_accept = (bool)$request->input("autoAccept", false);
|
||||||
$app->testing_warning = (bool)$request->input("testingWarning", false);
|
$app->testing_warning = (bool)$request->input("testingWarning", false);
|
||||||
|
@ -46,13 +54,14 @@ class AdminController extends BaseController
|
||||||
$app->hidden_in_app_list = (bool)$request->input("hideInAppList", false);
|
$app->hidden_in_app_list = (bool)$request->input("hideInAppList", false);
|
||||||
$app->user_cant_remove_app = (bool)$request->input("userCantRemoveApp", false);
|
$app->user_cant_remove_app = (bool)$request->input("userCantRemoveApp", false);
|
||||||
$app->stop_auto_redirect = (bool)$request->input("stopAutoRedirect", false);
|
$app->stop_auto_redirect = (bool)$request->input("stopAutoRedirect", false);
|
||||||
$app->saveOrFail();
|
$appRepository->update($app);
|
||||||
|
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function listAllUsers(Request $request, Response $response) {
|
public function listAllUsers(Request $request, Response $response) {
|
||||||
|
// @todo replace with /api/v1/account call
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
abort(401);
|
abort(401);
|
||||||
}
|
}
|
||||||
|
@ -68,6 +77,7 @@ class AdminController extends BaseController
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUserDetails(Request $request, Response $response, $id) {
|
public function getUserDetails(Request $request, Response $response, $id) {
|
||||||
|
// @todo replace with /api/v1/account/:id call
|
||||||
if(!Auth::check()) {
|
if(!Auth::check()) {
|
||||||
abort(401);
|
abort(401);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,7 +27,7 @@ class App extends JsonResource
|
||||||
'untrustedWarning' => (bool)$this->untrusted_warning,
|
'untrustedWarning' => (bool)$this->untrusted_warning,
|
||||||
'showOnWebpage' => (bool)$this->show_on_webpage,
|
'showOnWebpage' => (bool)$this->show_on_webpage,
|
||||||
'stopAutoRedirect' => (bool)$this->stop_auto_redirect,
|
'stopAutoRedirect' => (bool)$this->stop_auto_redirect,
|
||||||
'hideInAppList' => (bool)$this->hide_in_app_list,
|
'hideInAppList' => (bool)$this->hidden_in_app_list,
|
||||||
'userCantRemoveApp' => (bool)$this->user_cant_remove_app
|
'userCantRemoveApp' => (bool)$this->user_cant_remove_app
|
||||||
],
|
],
|
||||||
'access' => [
|
'access' => [
|
||||||
|
|
|
@ -31,7 +31,7 @@ class AppForOwner extends JsonResource
|
||||||
'untrustedWarning' => (bool)$this->untrusted_warning,
|
'untrustedWarning' => (bool)$this->untrusted_warning,
|
||||||
'showOnWebpage' => (bool)$this->show_on_webpage,
|
'showOnWebpage' => (bool)$this->show_on_webpage,
|
||||||
'stopAutoRedirect' => (bool)$this->stop_auto_redirect,
|
'stopAutoRedirect' => (bool)$this->stop_auto_redirect,
|
||||||
'hideInAppList' => (bool)$this->hide_in_app_list,
|
'hideInAppList' => (bool)$this->hidden_in_app_list,
|
||||||
'userCantRemoveApp' => (bool)$this->user_cant_remove_app
|
'userCantRemoveApp' => (bool)$this->user_cant_remove_app
|
||||||
],
|
],
|
||||||
'access' => [
|
'access' => [
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
namespace App\Http\Resources\API;
|
namespace App\Http\Resources\API;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Resources\Json\JsonResource;
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
class User extends JsonResource
|
class User extends JsonResource
|
||||||
|
@ -14,11 +15,13 @@ class User extends JsonResource
|
||||||
*/
|
*/
|
||||||
public function toArray($request)
|
public function toArray($request)
|
||||||
{
|
{
|
||||||
|
$created_at = Carbon::parse($this->created_at);
|
||||||
|
$updated_at = Carbon::parse($this->updated_at);
|
||||||
return [
|
return [
|
||||||
'id' => (int)$this->id,
|
'id' => (int)$this->id,
|
||||||
'username' => $this->username,
|
'username' => $this->username,
|
||||||
'created_at' => $this->created_at,
|
'created_at' => $created_at->format("Y-m-d H:i:s e"),
|
||||||
'updated_at' => $this->created_at,
|
'updated_at' => $updated_at->format("Y-m-d H:i:s e"),
|
||||||
'primaryMail' => $this->getMail(),
|
'primaryMail' => $this->getMail(),
|
||||||
'status' => $this->status,
|
'status' => $this->status,
|
||||||
'inviteCode' => $this->inviteCode,
|
'inviteCode' => $this->inviteCode,
|
||||||
|
|
190
tests/Controller/AccountControllerTest.php
Normal file
190
tests/Controller/AccountControllerTest.php
Normal file
|
@ -0,0 +1,190 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Laravel\Lumen\Testing\DatabaseMigrations;
|
||||||
|
use Laravel\Lumen\Testing\DatabaseTransactions;
|
||||||
|
|
||||||
|
class AccountControllerTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testGetUserListWithoutUser(){
|
||||||
|
$this->get("/api/v1/account/");
|
||||||
|
|
||||||
|
$this->assertEquals(401, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You need to login"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetUserListWithoutAdminAccess(){
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->get("/api/v1/account/");
|
||||||
|
|
||||||
|
$this->assertEquals(403, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You don't have the permission for this call"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetUserListWithUsers(){
|
||||||
|
|
||||||
|
$user1 = $this->getUser();
|
||||||
|
$user2 = $this->getUser();
|
||||||
|
|
||||||
|
$user2->username = "testuser";
|
||||||
|
$user2->admin = true;
|
||||||
|
|
||||||
|
$userRepositoryMock = Mockery::mock(\App\Data\Repository\UserRepository::class);
|
||||||
|
$userRepositoryMock->shouldReceive("getAllUsers")->andReturn(collect([$user1, $user2]))->once();
|
||||||
|
|
||||||
|
$this->app->instance(\App\Data\Repository\UserRepository::class, $userRepositoryMock);
|
||||||
|
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
$user->admin = true;
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->get("/api/v1/account/");
|
||||||
|
|
||||||
|
$this->assertEquals(200, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(array (
|
||||||
|
'data' =>
|
||||||
|
array (
|
||||||
|
0 =>
|
||||||
|
array (
|
||||||
|
'id' => 1,
|
||||||
|
'username' => 'system',
|
||||||
|
'created_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'updated_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'primaryMail' => NULL,
|
||||||
|
'status' => 'active',
|
||||||
|
'inviteCode' => NULL,
|
||||||
|
'developer' => false,
|
||||||
|
'admin' => false,
|
||||||
|
),
|
||||||
|
1 =>
|
||||||
|
array (
|
||||||
|
'id' => 1,
|
||||||
|
'username' => 'testuser',
|
||||||
|
'created_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'updated_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'primaryMail' => NULL,
|
||||||
|
'status' => 'active',
|
||||||
|
'inviteCode' => NULL,
|
||||||
|
'developer' => false,
|
||||||
|
'admin' => true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'success' => true,
|
||||||
|
'msg' => NULL,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetSingelUserWithoutLoggedIn() {
|
||||||
|
$this->get("/api/v1/account/2");
|
||||||
|
|
||||||
|
$this->assertEquals(401, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You need to login"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetSingelUserWithOtherUserAccountAndNoAdmin() {
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
$user->id = 1;
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->get("/api/v1/account/2");
|
||||||
|
|
||||||
|
$this->assertEquals(403, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You don't have the permission for this call"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGetSingelUserWithOtherUserAccountAndAdmin() {
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
$user->id = 1;
|
||||||
|
$user->admin = true;
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$user1 = $this->getUser();
|
||||||
|
$user1->id = 2;
|
||||||
|
|
||||||
|
$userRepositoryMock = Mockery::mock(\App\Data\Repository\UserRepository::class);
|
||||||
|
$userRepositoryMock->shouldReceive("findById")->with(2)->andReturn($user1)->once();
|
||||||
|
|
||||||
|
$this->app->instance(\App\Data\Repository\UserRepository::class, $userRepositoryMock);
|
||||||
|
|
||||||
|
$this->get("/api/v1/account/2");
|
||||||
|
|
||||||
|
$this->assertEquals(200, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(array (
|
||||||
|
'data' =>
|
||||||
|
array (
|
||||||
|
'id' => 2,
|
||||||
|
'username' => 'system',
|
||||||
|
'created_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'updated_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'primaryMail' => NULL,
|
||||||
|
'status' => 'active',
|
||||||
|
'inviteCode' => NULL,
|
||||||
|
'developer' => false,
|
||||||
|
'admin' => false,
|
||||||
|
),
|
||||||
|
'success' => true,
|
||||||
|
'msg' => NULL,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
public function testGetSingelUserWithSameUser() {
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
$user->id = 2;
|
||||||
|
$user->admin = false;
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$user1 = $this->getUser();
|
||||||
|
$user1->id = 2;
|
||||||
|
|
||||||
|
$userRepositoryMock = Mockery::mock(\App\Data\Repository\UserRepository::class);
|
||||||
|
$userRepositoryMock->shouldReceive("findById")->with(2)->andReturn($user1)->once();
|
||||||
|
|
||||||
|
$this->app->instance(\App\Data\Repository\UserRepository::class, $userRepositoryMock);
|
||||||
|
|
||||||
|
$this->get("/api/v1/account/2");
|
||||||
|
|
||||||
|
$this->assertEquals(200, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(array (
|
||||||
|
'data' =>
|
||||||
|
array (
|
||||||
|
'id' => 2,
|
||||||
|
'username' => 'system',
|
||||||
|
'created_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'updated_at' => '2019-11-26 15:39:03 UTC',
|
||||||
|
'primaryMail' => NULL,
|
||||||
|
'status' => 'active',
|
||||||
|
'inviteCode' => NULL,
|
||||||
|
'developer' => false,
|
||||||
|
'admin' => false,
|
||||||
|
),
|
||||||
|
'success' => true,
|
||||||
|
'msg' => NULL,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
private function getUser() {
|
||||||
|
$user = new \App\Data\Entity\User();
|
||||||
|
$user->id = 1;
|
||||||
|
$user->username = "system";
|
||||||
|
$user->created_at = "2019-11-26 15:39:03";
|
||||||
|
$user->updated_at = "2019-11-26 15:39:03";
|
||||||
|
$user->mail = null;
|
||||||
|
$user->status = "active";
|
||||||
|
$user->inviteCode = null;
|
||||||
|
$user->developer = false;
|
||||||
|
$user->admin = false;
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
}
|
111
tests/Controller/AdminControllerTest.php
Normal file
111
tests/Controller/AdminControllerTest.php
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use Laravel\Lumen\Testing\DatabaseMigrations;
|
||||||
|
use Laravel\Lumen\Testing\DatabaseTransactions;
|
||||||
|
|
||||||
|
class AdminControllerTest extends TestCase
|
||||||
|
{
|
||||||
|
public function testlistAllAppsWithoutUser()
|
||||||
|
{
|
||||||
|
$this->get("/api/v1/admin/app");
|
||||||
|
|
||||||
|
$this->assertEquals(401, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You need to login"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testlistAllAppsUserButNoAdmin()
|
||||||
|
{
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->get("/api/v1/admin/app");
|
||||||
|
|
||||||
|
$this->assertEquals(403, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You don't have the permission for this call"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testlistAllAppsUser()
|
||||||
|
{
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
$user->admin = true;
|
||||||
|
|
||||||
|
$app = new \App\Data\Entity\App();
|
||||||
|
$app->name = "FooBar";
|
||||||
|
$app->access_api = true;
|
||||||
|
|
||||||
|
$appRepositoryMock = Mockery::mock(\App\Data\Repository\AppRepository::class);
|
||||||
|
$appRepositoryMock->shouldReceive("getAllApps")->once()->andReturn(collect([$app]));
|
||||||
|
|
||||||
|
$this->app->instance(\App\Data\Repository\AppRepository::class, $appRepositoryMock);
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->get("/api/v1/admin/app");
|
||||||
|
|
||||||
|
$this->assertEquals(200, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(array(
|
||||||
|
'data' =>
|
||||||
|
array (
|
||||||
|
0 =>
|
||||||
|
array(
|
||||||
|
'id' => 0,
|
||||||
|
'name' => 'FooBar',
|
||||||
|
'description' => NULL,
|
||||||
|
'directUrl' => NULL,
|
||||||
|
'url' => NULL,
|
||||||
|
'iconURL' => NULL,
|
||||||
|
'properties' =>
|
||||||
|
array(
|
||||||
|
'testingWarning' => false,
|
||||||
|
'untrustedWarning' => false,
|
||||||
|
'showOnWebpage' => false,
|
||||||
|
'stopAutoRedirect' => false,
|
||||||
|
'hideInAppList' => false,
|
||||||
|
'userCantRemoveApp' => false,
|
||||||
|
),
|
||||||
|
'access' =>
|
||||||
|
array(
|
||||||
|
'oAuth' => false,
|
||||||
|
'api' => true,
|
||||||
|
'update_apps' => false,
|
||||||
|
'update_profile' => false,
|
||||||
|
'update_access' => false,
|
||||||
|
'read_access' => false,
|
||||||
|
'read_apps' => false,
|
||||||
|
'read_profile' => false,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'success' => true,
|
||||||
|
'msg' => NULL,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
public function testUpdateAppPropertiesWithoutUser()
|
||||||
|
{
|
||||||
|
$this->put("/api/v1/admin/app/1/properties");
|
||||||
|
|
||||||
|
$this->assertEquals(401, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You need to login"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUpdateAppPropertiesUserButNoAdmin()
|
||||||
|
{
|
||||||
|
$user = new \App\Models\User();
|
||||||
|
|
||||||
|
$this->actingAs($user);
|
||||||
|
|
||||||
|
$this->put("/api/v1/admin/app/1/properties");
|
||||||
|
|
||||||
|
$this->assertEquals(403, $this->response->getStatusCode());
|
||||||
|
|
||||||
|
$this->seeJson(["data" => [], "success" => false, "msg" => "You don't have the permission for this call"]);
|
||||||
|
}
|
||||||
|
public function testUpdateAppProperties() {
|
||||||
|
$this->assertTrue(true);
|
||||||
|
}
|
||||||
|
}
|
|
@ -12,10 +12,12 @@ class ExampleTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function testExample()
|
public function testExample()
|
||||||
{
|
{
|
||||||
$this->get('/');
|
#$this->get('/');
|
||||||
|
|
||||||
$this->assertEquals(
|
#$this->assertEquals(
|
||||||
$this->app->version(), $this->response->getContent()
|
# $this->app->version(), $this->response->getContent()
|
||||||
);
|
#);
|
||||||
|
|
||||||
|
$this->assertTrue(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue