Commit Graph

29 Commits (7a96cd2e915290226de9bdbaee874c85bec32c71)

Author SHA1 Message Date
Your Name 579a581de8 test: add admin access and API scope security tests (360 total)
Security/AdminAccessTest: verifies non-admin users are blocked from
  all admin web routes (dashboard, users, reports, settings, instances,
  curated onboarding) and admin API endpoints.

Security/ApiScopeSecurityTest: verifies read-only tokens cannot write
  (follow, favourite, delete, mute, block), write tokens can read+write,
  cross-user access is denied, and private statuses are protected.

BUG FOUND: CheckForAnyScope middleware (referenced in v1/admin routes)
  was removed in Passport 13. All /api/v1/admin/* routes throw
  BindingResolutionException. 6 tests skipped pending fix.
1 month ago
Your Name 0f3820e7bf test: add notification, search, compose, report, and collection tests (332 total)
Api/NotificationTest: notification isolation, correct user filtering
Api/SearchTest: v2 search auth, structure, account lookup
Api/CollectionTest: self/user collections, auth requirement
Compose/ComposeTest: page access, settings, media validation, autocomplete
Account/ReportTest: report creation, type validation, auth requirement
1 month ago
Your Name e1f883a41b test: add status, timeline, federation, and privacy tests (309 total)
Api/StatusTest: get/delete statuses, favourite/unfavourite, bookmark,
  status creation validation, ownership checks
Api/TimelineTest: public/home/hashtag timelines, private exclusion,
  pagination support
Federation/NodeInfoTest: nodeinfo, webfinger, host-meta endpoints
Account/PrivacyTest: private profile visibility, blocked user access,
  privacy settings toggle
1 month ago
Your Name 891e282808 test: add settings, mute/block, and follow tests (278 total)
Settings/ProfileUpdateTest: profile name, bio, website validation,
  password change flow with Mail::fake assertion
Account/MuteBlockTest: mute/unmute, block/unblock, self-protection,
  admin block protection, validation
Account/FollowTest: follow/unfollow via API, self-follow rejection,
  followers/following list endpoints
1 month ago
Your Name 18c288f88f chore: add TODO to replace custom FrameGuard with Laravel built-in security headers 1 month ago
Your Name 4ce28d9144 feat: add framework integration tests for Laravel 12→13 upgrade readiness
Framework tests verify core Laravel integration points:
- ServiceProviderTest: app boot, guard resolution, route loading, config_cache
- RoutingTest: named routes, duplicates, api/oauth prefixes, middleware groups
- EloquentTest: User/Profile/Status factories, relationships, casts, soft deletes
- QueueTest: job dispatch, serialization, middleware, unique IDs
- ConfigTest: config loading, env overrides, auth/cache/queue settings
- MiddlewarePipelineTest: CSRF, auth, throttle, password confirm, 2FA, admin

Also:
- Add HasFactory trait to Status model
- Fix StatusFactory: remove non-existent 'place' column, add 'rendered' field
- Add Api/AccountTest for account endpoint coverage (254 total tests)
1 month ago
Your Name ec8a393020 test: expect oauth endpoints to return 200 (will pass after route syntax fix merge) 1 month ago
Your Name 97929f0876 fix: resolve str_ends_with TypeError in RegisterController
PHP's str_ends_with() only accepts a string needle, not an array.
The username validation was passing an array of extensions which
caused a TypeError on every registration attempt.

Replace with a loop over a configurable array of disallowed extensions,
making it easy to add new entries.

Also updates RegisterTest to properly test the registration flow
including the RT anti-bot token and age verification fields.
1 month ago
Your Name 8a2649b3ff feat: add critical path test suite and fix auth/config issues
Test Infrastructure:
- Modernize phpunit.xml (bootstrap, source block, Laravel 12 env vars)
- Configure tests/Pest.php with pest()->extend(TestCase::class)->in('Feature')
- Add docker-compose.test.yml (Redis for test suite)
- Add composer test/test:quick scripts
- Rename CACHE_DRIVER to CACHE_STORE across config (backwards compatible)
- Update .env.testing for in-memory SQLite + Docker Redis

Test Coverage (190 tests):
- CriticalRoutes: public routes, auth routes, API endpoints, middleware, schedule
- Auth/LoginTest: login, logout, rate limiting, redirect behavior
- Auth/RegisterTest: registration flow, validation, disabled registration
- Auth/PasswordResetTest: reset request, token validation, password update
- Auth/TwoFactorTest: 2FA checkpoint, setup behind password confirmation
- Auth/PasswordConfirmationTest: sudo mode flow via Laravel password.confirm
- Api/ScopeTest: scope enforcement, public endpoints, admin access

Bugs Fixed:
- Fix unauthenticated API returning 500 instead of 401 (AuthenticationException
  not handled in custom exception renderer in bootstrap/app.php)
- Replace custom DangerZone middleware with Laravel password.confirm
- Add HasFactory trait to Profile model for test factories

Bugs Documented (known-bugs group):
- Registration crashes with str_ends_with TypeError (RegisterController:82)
- OAuth routes use legacy array syntax causing ReflectionFunction TypeError
1 month ago
Your Name c807a8524c refactor: replace short facade aliases with fully-qualified imports
Convert all 273 short facade alias imports (e.g. 'use Cache;') to their
fully-qualified class names (e.g. 'use Illuminate\Support\Facades\Cache;')
across 193 files.

This resolves 643 PHPStan 'class.notFound' errors caused by the static
analyzer being unable to resolve global aliases, and aligns with modern
Laravel conventions. It also unblocks removing the aliases array from
config/app.php in a future change.

All 107 tests pass.
1 month ago
Your Name 30db57448f fix: replace str_random/str_limit/str_slug in Blade templates and tests
These deprecated helpers will throw 'undefined function' errors at
runtime since laravel/helpers was removed. Replace with Str::random(),
Str::limit(), and Str::slug() respectively.
1 month ago
Your Name de3375a9f9 Apply Pint formatting to tests/ 1 month ago
daniel 3861e7ddfe
Staging (#5978)
* Added current title as value for input so that the current value remains stored by default

* Added parameter 'show_legal_notice_link' => (bool) config_cache('instance.has_legal_notice'),

* Added conditional display of a link to legal notice if the page is active

* Added key 'legalNotice'

* feat translate story

* translate auth

- register
- login

* add remove follow

* Update ApiV1Controller.php

Co-Authored-By: Mathieu <385764+Casmo@users.noreply.github.com>

* New translations web.php (Chinese Simplified)
[ci skip]

* Added current title as value for input so that the current value remains stored by default

* Added parameter 'show_legal_notice_link' => (bool) config_cache('instance.has_legal_notice'),

* Added conditional display of a link to legal notice if the page is active

* Added key 'legalNotice'

* add missing key

* add missing keys

* New translations web.php (Portuguese, Brazilian)
[ci skip]

* New translations web.php (Turkish)
[ci skip]

* New translations web.php (Italian)
[ci skip]

* translate custom  filter

* New translations web.php (Italian)
[ci skip]

* use configured alt text length limit when uploading multiple photos

* in notifications sidebar, show popover on shared posts too, not just liked posts

* use case insensitive search when tagging accounts

* New translations web.php (Portuguese, Brazilian)
[ci skip]

* Generic OIDC Support

* Everything should be configurable by env variables
* Basic request tests

* Fixes for items highlighted by review.ai

* Consider using `hash_equals()` instead of `==` when comparing the state values to prevent timing attacks:
`abort_unless(hash_equals($request->input('state'), $request->session()->pull('oauth2state')), 400, 'invalid
state');`
* For better data integrity, consider adding a foreign key constraint to the user_id column: `$table-
>foreign('user_id')->references('id')->on('users')->onDelete('cascade');`
* Does the OIDC provider guarantee that the username field exists in the userInfo data? Consider adding a
null check or fallback: `$userInfoData[config('remote-auth.oidc.field_username')] ?? null`

* field isnt accessTokenResourceOwnerId but responseResourceOwnerId

* New translations web.php (Dutch)
[ci skip]

* Fix components

* Update LandingService and Config util to properly support the legal_notice setting

* Update footer to use legalNotice i18n

* Update i18n

* Update sidebar with gap padding for footer links

* Update compiled assets

* Update i18n json

* Update OIDC config with comments, and disable tests as we dont have db tests configured

* Update remove_from_followers api endpoint

* Update i18n

* Update compiled assets

* Update changelog

* New supported formats, Preserve ICC Color Profiles, libvips support

Update image pipeline to handle avif, heic and webp and preserve ICC color profiles and added libvips support.

* Fix tests

* Update CHANGELOG.md

---------

Co-authored-by: Samy Elshamy <elshamy@coderbutze.de>
Co-authored-by: Felipe Mateus <eu@felipemateus.com>
Co-authored-by: Mathieu <385764+Casmo@users.noreply.github.com>
Co-authored-by: Mackenzie Morgan <macoafi@gmail.com>
Co-authored-by: Gavin Mogan <git@gavinmogan.com>
1 year ago
daniel 0158941fb6
API improvements + test fixes (#5925)
* migrate PHPUnit configuration

* replace @test annotations with #[Test] attributes, and add it where it was missing

* remove test prefix from test method names

* add PHPUnit cache to .gitignore

* Update ApiV1Controller, fix notifications favourited/reblogged/bookmarked state. Fixes #5901

* Update ApiV1Controller, fix relationship fields. Fixes #5900

* Update instance config, return proper matrix limits. Fixes #4780

* Update SearchApiV2Service, fix offset bug. Fixes #5875

* Update ApiV1Controller, add better direct error message. Fixes #4789

* Update changelog

---------

Co-authored-by: Daniel Simon <daniel.simon.dev@proton.me>
1 year ago
Daniel Supernault 4fa1f2d1e7
Update tests 3 years ago
Sven Luijten 13d359a3c5
Clean up styling in the tests 4 years ago
Daniel Supernault 2598520bbe
Update tests 6 years ago
Daniel Supernault 16beb56d21
Remove test until upstream bug is fixed 7 years ago
Daniel Supernault ec18c80c13
Fix broken LoginTest 7 years ago
Daniel Supernault 6d0a908329
Fix tests 8 years ago
Daniel Supernault 3350035975
Fix landing page text 8 years ago
Daniel Supernault 13e1b51140
Fix tests 8 years ago
Daniel Supernault 5d91fb2051
Update LoginTest 8 years ago
Daniel Supernault 45a48270d6
Update LoginTest 8 years ago
Daniel Supernault f6ed376dc1
Update LoginTest 8 years ago
Joshua 6288df391d Login Test 8 years ago
daniel b8abbdd90f Apply fixes from StyleCI 8 years ago
Daniel Supernault b3827566a2
Update tests 8 years ago
Daniel Supernault a034358c98 Add Laravel Framework 9 years ago