diff --git a/flexiapi/app/Http/Controllers/Account/RegisterController.php b/flexiapi/app/Http/Controllers/Account/RegisterController.php
index fa99b6b..61c4bdc 100644
--- a/flexiapi/app/Http/Controllers/Account/RegisterController.php
+++ b/flexiapi/app/Http/Controllers/Account/RegisterController.php
@@ -36,6 +36,7 @@ use App\Libraries\OvhSMS;
use App\Mail\RegisterConfirmation;
use App\Mail\NewsletterRegistration;
use App\Rules\BlacklistedUsername;
+use App\Rules\SIPUsername;
class RegisterController extends Controller
{
@@ -81,7 +82,8 @@ class RegisterController extends Controller
'filled',
new WithoutSpaces,
new IsNotPhoneNumber,
- new BlacklistedUsername
+ new BlacklistedUsername,
+ new SIPUsername
],
'g-recaptcha-response' => 'required|captcha',
'email' => config('app.account_email_unique')
@@ -129,7 +131,8 @@ class RegisterController extends Controller
'nullable',
new WithoutSpaces,
new IsNotPhoneNumber,
- new BlacklistedUsername
+ new BlacklistedUsername,
+ new SIPUsername
],
'phone' => [
'required', 'unique:aliases,alias',
diff --git a/flexiapi/app/Http/Controllers/Admin/AccountController.php b/flexiapi/app/Http/Controllers/Admin/AccountController.php
index 4040ce7..d768cc0 100644
--- a/flexiapi/app/Http/Controllers/Admin/AccountController.php
+++ b/flexiapi/app/Http/Controllers/Admin/AccountController.php
@@ -35,6 +35,7 @@ use App\Http\Controllers\Account\AuthenticateController as WebAuthenticateContro
use App\Rules\BlacklistedUsername;
use App\Rules\IsNotPhoneNumber;
use App\Rules\NoUppercase;
+use App\Rules\SIPUsername;
use App\Rules\WithoutSpaces;
use Illuminate\Validation\Rule;
@@ -78,6 +79,7 @@ class AccountController extends Controller
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) use ($request) {
$query->where('domain', $this->resolveDomain($request));
}),
@@ -132,6 +134,7 @@ class AccountController extends Controller
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) use ($request) {
$query->where('domain', $this->resolveDomain($request));
})->ignore($id),
diff --git a/flexiapi/app/Http/Controllers/Api/AccountController.php b/flexiapi/app/Http/Controllers/Api/AccountController.php
index a60c471..70637b0 100644
--- a/flexiapi/app/Http/Controllers/Api/AccountController.php
+++ b/flexiapi/app/Http/Controllers/Api/AccountController.php
@@ -37,6 +37,7 @@ use App\Mail\RegisterConfirmation;
use App\Rules\BlacklistedUsername;
use App\Rules\IsNotPhoneNumber;
use App\Rules\NoUppercase;
+use App\Rules\SIPUsername;
use App\Rules\WithoutSpaces;
class AccountController extends Controller
@@ -91,6 +92,7 @@ class AccountController extends Controller
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) use ($request) {
$query->where('domain', $request->has('domain') ? $request->get('domain') : config('app.sip_domain'));
}),
@@ -225,6 +227,7 @@ class AccountController extends Controller
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) use ($request) {
$query->where('domain', config('app.sip_domain'));
}),
diff --git a/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php b/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php
index 75407e6..b81ec89 100644
--- a/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php
+++ b/flexiapi/app/Http/Controllers/Api/Admin/AccountController.php
@@ -36,6 +36,7 @@ use App\Http\Controllers\Account\AuthenticateController as WebAuthenticateContro
use App\Rules\BlacklistedUsername;
use App\Rules\IsNotPhoneNumber;
use App\Rules\NoUppercase;
+use App\Rules\SIPUsername;
use App\Rules\WithoutSpaces;
class AccountController extends Controller
@@ -112,6 +113,7 @@ class AccountController extends Controller
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) use ($request) {
$query->where('domain', $this->resolveDomain($request));
}),
diff --git a/flexiapi/app/Http/Requests/CreateAccountRequest.php b/flexiapi/app/Http/Requests/CreateAccountRequest.php
index 698ca36..40f6b3a 100644
--- a/flexiapi/app/Http/Requests/CreateAccountRequest.php
+++ b/flexiapi/app/Http/Requests/CreateAccountRequest.php
@@ -9,6 +9,7 @@ use App\Account;
use App\Rules\BlacklistedUsername;
use App\Rules\IsNotPhoneNumber;
use App\Rules\NoUppercase;
+use App\Rules\SIPUsername;
use App\Rules\WithoutSpaces;
class CreateAccountRequest extends FormRequest
@@ -26,6 +27,7 @@ class CreateAccountRequest extends FormRequest
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) {
$query->where('domain', config('app.sip_domain'));
}),
diff --git a/flexiapi/app/Http/Requests/UpdateAccountRequest.php b/flexiapi/app/Http/Requests/UpdateAccountRequest.php
index 2e1dab9..7133a70 100644
--- a/flexiapi/app/Http/Requests/UpdateAccountRequest.php
+++ b/flexiapi/app/Http/Requests/UpdateAccountRequest.php
@@ -9,6 +9,7 @@ use App\Account;
use App\Rules\BlacklistedUsername;
use App\Rules\IsNotPhoneNumber;
use App\Rules\NoUppercase;
+use App\Rules\SIPUsername;
use App\Rules\WithoutSpaces;
class UpdateAccountRequest extends FormRequest
@@ -26,6 +27,7 @@ class UpdateAccountRequest extends FormRequest
new NoUppercase,
new IsNotPhoneNumber,
new BlacklistedUsername,
+ new SIPUsername,
Rule::unique('accounts', 'username')->where(function ($query) {
$query->where('domain', config('app.sip_domain'));
})->ignore($this->route('id'), 'id'),
diff --git a/flexiapi/app/Rules/SIP.php b/flexiapi/app/Rules/SIPUsername.php
similarity index 75%
rename from flexiapi/app/Rules/SIP.php
rename to flexiapi/app/Rules/SIPUsername.php
index 4a36ad6..bd9defe 100644
--- a/flexiapi/app/Rules/SIP.php
+++ b/flexiapi/app/Rules/SIPUsername.php
@@ -1,7 +1,7 @@
validate($value);
}
public function message()
{
- return 'The :attribute must be a SIP address.';
+ return 'The :attribute should be a valid SIP username';
}
}
diff --git a/flexiapi/phpunit.xml b/flexiapi/phpunit.xml
index 2c8e571..79f1b3a 100644
--- a/flexiapi/phpunit.xml
+++ b/flexiapi/phpunit.xml
@@ -12,7 +12,7 @@
./tests/Feature
- ./tests/Feature/AccountMessageTest.php
+ ./tests/Feature/ApiAccountMessageTest.php
diff --git a/flexiapi/tests/Feature/AccountActionTest.php b/flexiapi/tests/Feature/ApiAccountActionTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AccountActionTest.php
rename to flexiapi/tests/Feature/ApiAccountActionTest.php
index 06d6dd6..7c17053 100644
--- a/flexiapi/tests/Feature/AccountActionTest.php
+++ b/flexiapi/tests/Feature/ApiAccountActionTest.php
@@ -26,7 +26,7 @@ use App\Admin;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
-class AccountActionTest extends TestCase
+class ApiAccountActionTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountApiKeyTest.php b/flexiapi/tests/Feature/ApiAccountApiKeyTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AccountApiKeyTest.php
rename to flexiapi/tests/Feature/ApiAccountApiKeyTest.php
index 957b6a9..6a87c44 100644
--- a/flexiapi/tests/Feature/AccountApiKeyTest.php
+++ b/flexiapi/tests/Feature/ApiAccountApiKeyTest.php
@@ -24,7 +24,7 @@ use Tests\TestCase;
use App\Password;
-class AccountApiKeyTest extends TestCase
+class ApiAccountApiKeyTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountContactsTest.php b/flexiapi/tests/Feature/ApiAccountContactsTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AccountContactsTest.php
rename to flexiapi/tests/Feature/ApiAccountContactsTest.php
index d642fdb..135b61c 100644
--- a/flexiapi/tests/Feature/AccountContactsTest.php
+++ b/flexiapi/tests/Feature/ApiAccountContactsTest.php
@@ -27,7 +27,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\DB;
use Tests\TestCase;
-class AccountContactTest extends TestCase
+class ApiAccountContactTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountCreationTokenTest.php b/flexiapi/tests/Feature/ApiAccountCreationTokenTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AccountCreationTokenTest.php
rename to flexiapi/tests/Feature/ApiAccountCreationTokenTest.php
index 8754bea..d02a511 100644
--- a/flexiapi/tests/Feature/AccountCreationTokenTest.php
+++ b/flexiapi/tests/Feature/ApiAccountCreationTokenTest.php
@@ -24,7 +24,7 @@ use Tests\TestCase;
use App\AccountCreationToken;
-class AccountCreationTokenTest extends TestCase
+class ApiAccountCreationTokenTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountMessageTest.php b/flexiapi/tests/Feature/ApiAccountMessageTest.php
similarity index 97%
rename from flexiapi/tests/Feature/AccountMessageTest.php
rename to flexiapi/tests/Feature/ApiAccountMessageTest.php
index 2cdd5c0..55a46eb 100644
--- a/flexiapi/tests/Feature/AccountMessageTest.php
+++ b/flexiapi/tests/Feature/ApiAccountMessageTest.php
@@ -25,7 +25,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Testing\Fluent\AssertableJson;
use Tests\TestCase;
-class AccountMessageTest extends TestCase
+class ApiAccountMessageTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountPhoneChangeTest.php b/flexiapi/tests/Feature/ApiAccountPhoneChangeTest.php
similarity index 98%
rename from flexiapi/tests/Feature/AccountPhoneChangeTest.php
rename to flexiapi/tests/Feature/ApiAccountPhoneChangeTest.php
index 29788db..bfc0f0b 100644
--- a/flexiapi/tests/Feature/AccountPhoneChangeTest.php
+++ b/flexiapi/tests/Feature/ApiAccountPhoneChangeTest.php
@@ -25,7 +25,7 @@ use App\PhoneChangeCode;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
-class AccountPhoneChangeTest extends TestCase
+class ApiAccountPhoneChangeTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AccountApiTest.php b/flexiapi/tests/Feature/ApiAccountTest.php
similarity index 96%
rename from flexiapi/tests/Feature/AccountApiTest.php
rename to flexiapi/tests/Feature/ApiAccountTest.php
index 53b491b..5e14388 100644
--- a/flexiapi/tests/Feature/AccountApiTest.php
+++ b/flexiapi/tests/Feature/ApiAccountTest.php
@@ -30,7 +30,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
-class AccountApiTest extends TestCase
+class ApiAccountTest extends TestCase
{
use RefreshDatabase;
@@ -97,7 +97,41 @@ class AccountApiTest extends TestCase
'password' => '123456',
]);
- $response->assertStatus(422);
+ $response->assertJsonValidationErrors(['username']);
+ }
+
+ public function testUsernameNotSIP()
+ {
+ $admin = Admin::factory()->create();
+ $password = $admin->account->passwords()->first();
+ $password->account->generateApiKey();
+ $password->account->save();
+
+ $username = 'blablaš„';
+ $domain = 'example.com';
+
+ $response = $this->keyAuthenticated($password->account)
+ ->json($this->method, $this->route, [
+ 'username' => $username,
+ 'domain' => $domain,
+ 'algorithm' => 'SHA-256',
+ 'password' => '123456',
+ ]);
+
+ $response->assertJsonValidationErrors(['username']);
+
+ $username = 'blabla hop';
+ $domain = 'example.com';
+
+ $response = $this->keyAuthenticated($password->account)
+ ->json($this->method, $this->route, [
+ 'username' => $username,
+ 'domain' => $domain,
+ 'algorithm' => 'SHA-256',
+ 'password' => '123456',
+ ]);
+
+ $response->assertJsonValidationErrors(['username']);
}
public function testDomain()
diff --git a/flexiapi/tests/Feature/AccountTypeTest.php b/flexiapi/tests/Feature/ApiAccountTypeTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AccountTypeTest.php
rename to flexiapi/tests/Feature/ApiAccountTypeTest.php
index 77fa37d..39847d7 100644
--- a/flexiapi/tests/Feature/AccountTypeTest.php
+++ b/flexiapi/tests/Feature/ApiAccountTypeTest.php
@@ -27,7 +27,7 @@ use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\DB;
use Tests\TestCase;
-class AccountTypeTest extends TestCase
+class ApiAccountTypeTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/AuthenticateDigestAndKeyTest.php b/flexiapi/tests/Feature/ApiAuthenticationTest.php
similarity index 99%
rename from flexiapi/tests/Feature/AuthenticateDigestAndKeyTest.php
rename to flexiapi/tests/Feature/ApiAuthenticationTest.php
index 0e783db..4b3db3a 100644
--- a/flexiapi/tests/Feature/AuthenticateDigestAndKeyTest.php
+++ b/flexiapi/tests/Feature/ApiAuthenticationTest.php
@@ -24,7 +24,7 @@ use App\Password;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
-class AuthenticateDigestAndKeyTest extends TestCase
+class ApiAuthenticationTest extends TestCase
{
use RefreshDatabase;
diff --git a/flexiapi/tests/Feature/ExternalAccountTest.php b/flexiapi/tests/Feature/ApiExternalAccountTest.php
similarity index 98%
rename from flexiapi/tests/Feature/ExternalAccountTest.php
rename to flexiapi/tests/Feature/ApiExternalAccountTest.php
index 5f5de39..746bdcd 100644
--- a/flexiapi/tests/Feature/ExternalAccountTest.php
+++ b/flexiapi/tests/Feature/ApiExternalAccountTest.php
@@ -25,7 +25,7 @@ use App\ExternalAccount;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
-class ExternalAccountTest extends TestCase
+class ApiExternalAccountTest extends TestCase
{
use RefreshDatabase;