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
CSV_ESCAPE_FORMULAS=true
# --------------------------------------------
# OPTIONAL: HASHING
# --------------------------------------------
HASHING_DRIVER='bcrypt'
BCRYPT_ROUNDS=10
ARGON_MEMORY=1024
ARGON_THREADS=2
ARGON_TIME=2
# --------------------------------------------
# OPTIONAL: SCIM
# --------------------------------------------

View file

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

View file

@ -25,7 +25,7 @@ class Manufacturer extends SnipeModel
'url' => 'url|nullable',
'support_email' => 'email|nullable',
'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'];

View file

@ -151,6 +151,21 @@ class LicensePresenter extends Presenter
'visible' => false,
'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',
'searchable' => true,
'sortable' => true,

View file

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

View file

@ -514,7 +514,7 @@
if (value) {
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;
}

View file

@ -2,12 +2,16 @@
namespace Tests\Support;
use App\Models\Setting;
trait InteractsWithSettings
{
protected Settings $settings;
public function setUpSettings()
public function initializeSettings()
{
$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);
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 Carbon\Carbon;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase;
class AssetMaintenanceTest extends TestCase
{
use InteractsWithSettings;
public function testZerosOutWarrantyIfBlank()
{
$c = new AssetMaintenance;

View file

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

View file

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

View file

@ -4,10 +4,13 @@ namespace Tests\Unit;
use App\Models\Category;
use App\Models\AssetModel;
use App\Models\Asset;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase;
class CategoryTest extends TestCase
{
use InteractsWithSettings;
public function testFailsEmptyValidation()
{
// 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\Component;
use App\Models\Location;
use Tests\Support\InteractsWithSettings;
use Tests\TestCase;
class ComponentTest extends TestCase
{
use InteractsWithSettings;
public function testAComponentBelongsToACompany()
{
$component = Component::factory()

View file

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

View file

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

View file

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