Merge pull request #12958 from uberbrady/snipeit_v7_merge_develop_05_01_2022

Snipeit v7 merge develop 05 01 2022
This commit is contained in:
snipe 2023-05-03 10:40:18 -07:00 committed by GitHub
commit 31f1bce16b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 63 additions and 8 deletions

View file

@ -175,6 +175,15 @@ REQUIRE_SAML=false
API_THROTTLE_PER_MINUTE=120 API_THROTTLE_PER_MINUTE=120
CSV_ESCAPE_FORMULAS=true CSV_ESCAPE_FORMULAS=true
# --------------------------------------------
# OPTIONAL: HASHING
# --------------------------------------------
HASHING_DRIVER='bcrypt'
BCRYPT_ROUNDS=10
ARGON_MEMORY=1024
ARGON_THREADS=2
ARGON_TIME=2
# -------------------------------------------- # --------------------------------------------
# OPTIONAL: SCIM # OPTIONAL: SCIM
# -------------------------------------------- # --------------------------------------------

View file

@ -38,6 +38,9 @@ class CategoriesTransformer
case 'component': case 'component':
$category->item_count = $category->components_count; $category->item_count = $category->components_count;
break; break;
case 'license':
$category->item_count = $category->licenses_count;
break;
default: default:
$category->item_count = 0; $category->item_count = 0;
} }

View file

@ -25,7 +25,7 @@ class Manufacturer extends SnipeModel
'url' => 'url|nullable', 'url' => 'url|nullable',
'support_email' => 'email|nullable', 'support_email' => 'email|nullable',
'support_url' => 'nullable|url', 'support_url' => 'nullable|url',
'warranty_lookup_url' => 'starts_with:http://,https://,afp://,facetime://,file://,irc://','nullable' 'warranty_lookup_url' => 'nullable|starts_with:http://,https://,afp://,facetime://,file://,irc://'
]; ];
protected $hidden = ['user_id']; protected $hidden = ['user_id'];

View file

@ -151,6 +151,21 @@ class LicensePresenter extends Presenter
'visible' => false, 'visible' => false,
'title' => trans('general.order_number'), 'title' => trans('general.order_number'),
], [ ], [
'field' => 'created_at',
'searchable' => false,
'sortable' => true,
'visible' => false,
'title' => trans('general.created_at'),
'formatter' => 'dateDisplayFormatter',
], [
'field' => 'updated_at',
'searchable' => false,
'sortable' => true,
'visible' => false,
'title' => trans('general.updated_at'),
'formatter' => 'dateDisplayFormatter',
],
[
'field' => 'notes', 'field' => 'notes',
'searchable' => true, 'searchable' => true,
'sortable' => true, 'sortable' => true,

View file

@ -15,7 +15,7 @@ return [
| |
*/ */
'driver' => 'bcrypt', 'driver' => env('HASHING_DRIVER', 'bcrypt'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
@ -44,9 +44,9 @@ return [
*/ */
'argon' => [ 'argon' => [
'memory' => 1024, 'memory' => env('ARGON_MEMORY', 1024),
'threads' => 2, 'threads' => env('ARGON_THREADS', 2),
'time' => 2, 'time' => env('ARGON_TIME', 2),
], ],
]; ];

View file

@ -514,7 +514,7 @@
if (value) { if (value) {
if ((value.indexOf("{") === -1) || (value.indexOf("}") ===-1)) { if ((value.indexOf("{") === -1) || (value.indexOf("}") ===-1)) {
return '<i class="fa fa-external-link"></i> <a href="' + value + '" target="_blank">' + value + '</a>'; return '<nobr><a href="' + value + '" target="_blank" title="External link to ' + value + '" data-tooltip="true" ><i class="fa fa-external-link"></i> ' + value + '</a></nobr>';
} }
return value; return value;
} }

View file

@ -2,12 +2,16 @@
namespace Tests\Support; namespace Tests\Support;
use App\Models\Setting;
trait InteractsWithSettings trait InteractsWithSettings
{ {
protected Settings $settings; protected Settings $settings;
public function setUpSettings() public function initializeSettings()
{ {
$this->settings = Settings::initialize(); $this->settings = Settings::initialize();
$this->beforeApplicationDestroyed(fn() => Setting::$_cache = null);
} }
} }

View file

@ -23,7 +23,7 @@ abstract class TestCase extends BaseTestCase
$this->withoutMiddleware($this->globallyDisabledMiddleware); $this->withoutMiddleware($this->globallyDisabledMiddleware);
if (collect(class_uses_recursive($this))->contains(InteractsWithSettings::class)) { if (collect(class_uses_recursive($this))->contains(InteractsWithSettings::class)) {
$this->setUpSettings(); $this->initializeSettings();
} }
} }
} }

View file

@ -3,10 +3,13 @@ namespace Tests\Unit;
use App\Models\AssetMaintenance; use App\Models\AssetMaintenance;
use Carbon\Carbon; use Carbon\Carbon;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class AssetMaintenanceTest extends TestCase class AssetMaintenanceTest extends TestCase
{ {
use InteractsWithSettings;
public function testZerosOutWarrantyIfBlank() public function testZerosOutWarrantyIfBlank()
{ {
$c = new AssetMaintenance; $c = new AssetMaintenance;

View file

@ -4,10 +4,13 @@ namespace Tests\Unit;
use App\Models\Asset; use App\Models\Asset;
use App\Models\Category; use App\Models\Category;
use App\Models\AssetModel; use App\Models\AssetModel;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class AssetModelTest extends TestCase class AssetModelTest extends TestCase
{ {
use InteractsWithSettings;
public function testAnAssetModelZerosOutBlankEols() public function testAnAssetModelZerosOutBlankEols()
{ {
$am = new AssetModel; $am = new AssetModel;

View file

@ -5,10 +5,13 @@ use App\Models\Asset;
use App\Models\AssetModel; use App\Models\AssetModel;
use App\Models\Category; use App\Models\Category;
use Carbon\Carbon; use Carbon\Carbon;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class AssetTest extends TestCase class AssetTest extends TestCase
{ {
use InteractsWithSettings;
// public function testAutoIncrementMixed() // public function testAutoIncrementMixed()
// { // {
// $expected = '123411'; // $expected = '123411';

View file

@ -4,10 +4,13 @@ namespace Tests\Unit;
use App\Models\Category; use App\Models\Category;
use App\Models\AssetModel; use App\Models\AssetModel;
use App\Models\Asset; use App\Models\Asset;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class CategoryTest extends TestCase class CategoryTest extends TestCase
{ {
use InteractsWithSettings;
public function testFailsEmptyValidation() public function testFailsEmptyValidation()
{ {
// An Asset requires a name, a qty, and a category_id. // An Asset requires a name, a qty, and a category_id.

View file

@ -5,10 +5,13 @@ use App\Models\Category;
use App\Models\Company; use App\Models\Company;
use App\Models\Component; use App\Models\Component;
use App\Models\Location; use App\Models\Location;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class ComponentTest extends TestCase class ComponentTest extends TestCase
{ {
use InteractsWithSettings;
public function testAComponentBelongsToACompany() public function testAComponentBelongsToACompany()
{ {
$component = Component::factory() $component = Component::factory()

View file

@ -5,10 +5,13 @@ use App\Models\Depreciation;
use App\Models\Category; use App\Models\Category;
use App\Models\License; use App\Models\License;
use App\Models\AssetModel; use App\Models\AssetModel;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class DepreciationTest extends TestCase class DepreciationTest extends TestCase
{ {
use InteractsWithSettings;
public function testADepreciationHasModels() public function testADepreciationHasModels()
{ {
$depreciation = Depreciation::factory()->create(); $depreciation = Depreciation::factory()->create();

View file

@ -8,10 +8,13 @@ use App\Models\Category;
use Carbon\Carbon; use Carbon\Carbon;
use App\Notifications\CheckoutAssetNotification; use App\Notifications\CheckoutAssetNotification;
use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Notification;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class NotificationTest extends TestCase class NotificationTest extends TestCase
{ {
use InteractsWithSettings;
public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA() public function testAUserIsEmailedIfTheyCheckoutAnAssetWithEULA()
{ {
$admin = User::factory()->superuser()->create(); $admin = User::factory()->superuser()->create();

View file

@ -2,10 +2,13 @@
namespace Tests\Unit; namespace Tests\Unit;
use App\Models\SnipeModel; use App\Models\SnipeModel;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase; use Tests\TestCase;
class SnipeModelTest extends TestCase class SnipeModelTest extends TestCase
{ {
use InteractsWithSettings;
public function testSetsPurchaseDatesAppropriately() public function testSetsPurchaseDatesAppropriately()
{ {
$c = new SnipeModel; $c = new SnipeModel;