1
0
Fork 0

Merge pull request #2651 from pixelfed/staging

Staging
This commit is contained in:
daniel 2021-02-12 23:16:56 -07:00 committed by GitHub
commit 2fddef80a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 142 additions and 35 deletions

View File

@ -41,6 +41,8 @@
- Updated Hashtag component, fix null infinite loading bug. Fixes #2637. ([55136518](https://github.com/pixelfed/pixelfed/commit/55136518))
- Updated filesystems config, add backup driver to store backups on other filesystems. ([ae90eef9](https://github.com/pixelfed/pixelfed/commit/ae90eef9))
- Updated Embeds. Fix Profile + Status embeds, remove following count and improve cache invalidation and hidden follower counts. ([5ac9d0e8](https://github.com/pixelfed/pixelfed/commit/5ac9d0e8))
- Updated FederationController, return 404 for invalid webfinger addresses. Fixes ([#2647](https://github.com/pixelfed/pixelfed/issues/2647)). ([deb6f115](https://github.com/pixelfed/pixelfed/commit/deb6f115))
- Updated InboxPipeline, fail earlier for invalid public keys. Fixes ([#2648](https://github.com/pixelfed/pixelfed/issues/2648)). ([d1c5e9b8](https://github.com/pixelfed/pixelfed/commit/d1c5e9b8))
- ([](https://github.com/pixelfed/pixelfed/commit/))
## [v0.10.10 (2021-01-28)](https://github.com/pixelfed/pixelfed/compare/v0.10.9...v0.10.10)

View File

@ -53,8 +53,8 @@ class FederationController extends Controller
$resource = $request->input('resource');
$parsed = Nickname::normalizeProfileUrl($resource);
if($parsed['domain'] !== config('pixelfed.domain.app')) {
abort(400);
if(empty($parsed) || $parsed['domain'] !== config('pixelfed.domain.app')) {
abort(404);
}
$username = $parsed['username'];
$profile = Profile::whereNull('domain')->whereUsername($username)->firstOrFail();

View File

@ -173,6 +173,9 @@ class InboxValidator implements ShouldQueue
return;
}
$pkey = openssl_pkey_get_public($actor->public_key);
if(!$pkey) {
return 0;
}
$inboxPath = "/users/{$profile->username}/inbox";
list($verified, $headers) = HttpSignature::verify($pkey, $signatureData, $headers, $inboxPath, $body);
if($verified == 1) {

View File

@ -161,6 +161,9 @@ class InboxWorker implements ShouldQueue
return;
}
$pkey = openssl_pkey_get_public($actor->public_key);
if(!$pkey) {
return 0;
}
$inboxPath = "/f/inbox";
list($verified, $headers) = HttpSignature::verify($pkey, $signatureData, $headers, $inboxPath, $body);
if($verified == 1) {

View File

@ -8,13 +8,14 @@ use Illuminate\Foundation\Testing\WithoutMiddleware;
class InstalledTest extends TestCase
{
/** @test */
public function nodeinfo_api()
{
$response = $this->get('/.well-known/nodeinfo');
$response->assertJson([
'links' => [
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0'],
], ]);
}
/** @test */
public function nodeinfo_api()
{
$response = $this->get('/.well-known/nodeinfo');
$response->assertJson([
'links' => [
['rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0'],
], ]);
}
}

View File

@ -9,12 +9,11 @@ use App\User;
class LoginTest extends TestCase
{
/** @test */
public function view_login_page()
{
$response = $this->get('login');
/** @test */
public function view_login_page()
{
$response = $this->get('login');
$response->assertSee('Forgot Password');
}
$response->assertSee('Forgot Password');
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace Tests\Unit;
use Carbon\Carbon;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class DateTimeTest extends TestCase
{
/** @test */
public function mastodonTimestamp()
{
$ts = Carbon::createFromFormat(\DateTime::ISO8601, '2019-09-16T02:41:57Z');
$this->assertEquals(9, $ts->month);
$this->assertEquals(16, $ts->day);
$this->assertEquals(2019, $ts->year);
$this->assertEquals(2, $ts->hour);
$this->assertEquals(41, $ts->minute);
}
/** @test */
public function p3kTimestamp()
{
$ts = Carbon::createFromFormat(\DateTime::ISO8601, '2019-09-16T08:40:55+10:00');
$this->assertEquals(9, $ts->month);
$this->assertEquals(16, $ts->day);
$this->assertEquals(2019, $ts->year);
$this->assertEquals(8, $ts->hour);
$this->assertEquals(40, $ts->minute);
}
}

View File

@ -6,13 +6,13 @@ use Tests\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}

View File

@ -9,12 +9,13 @@ use App\Util\Lexer\RestrictedNames;
class RestrictedNameTest extends TestCase
{
/** @test */
public function restrictedUsername()
{
$this->assertContains('p', RestrictedNames::get());
$this->assertContains('admin', RestrictedNames::get());
$this->assertNotContains('dansup', RestrictedNames::get());
$this->assertNotContains('lain', RestrictedNames::get());
}
/** @test */
public function restrictedUsername()
{
$names = RestrictedNames::get();
$this->assertContains('p', $names);
$this->assertContains('admin', $names);
$this->assertNotContains('dansup', $names);
$this->assertNotContains('earth', $names);
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Services\SnowflakeService;
class Snowflake extends TestCase
{
/** @test */
public function snowflakeTest()
{
$expected = 266077397319815168;
$actual = SnowflakeService::byDate(now()->parse('2021-02-13T05:36:35+00:00'));
$this->assertEquals($expected, $actual);
}
}

View File

@ -0,0 +1,48 @@
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Util\Lexer\Nickname;
class WebfingerTest extends TestCase
{
/** @test */
public function webfingerTest()
{
$expected = [
"domain" => "pixelfed.org",
"username" => "dansup",
];
$actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org');
$this->assertEquals($expected, $actual);
$expected = [
"domain" => "pixelfed.org",
"username" => "dansup_",
];
$actual = Nickname::normalizeProfileUrl('acct:dansup@pixelfed.org');
$this->assertNotEquals($expected, $actual);
$expected = [
"domain" => "pixelfed.org",
"username" => "dansup",
];
$actual = Nickname::normalizeProfileUrl('acct:@dansup@pixelfed.org');
$this->assertEquals($expected, $actual);
$expected = [
"domain" => "pixelfed.org",
"username" => "dansup",
];
$actual = Nickname::normalizeProfileUrl('dansup@pixelfed.org');
$this->assertEquals($expected, $actual);
$expected = [
"domain" => "pixelfed.org",
"username" => "dansup",
];
$actual = Nickname::normalizeProfileUrl('@dansup@pixelfed.org');
$this->assertEquals($expected, $actual);
}
}