diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index b4c6deee06785474888d2757ba7e70903da0086e..b9412e7bed746d178479074a07c410b97ced0093 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -4,7 +4,7 @@ on: [push, pull_request] jobs: release-tarball: - runs-on: ubuntu-18.04 + runs-on: ubuntu-latest name: Build release tarball steps: - name: Checkout @@ -22,8 +22,8 @@ jobs: coverage: none - name: Install Krankerl run: | - wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.3/krankerl_0.12.3_amd64.deb - sudo dpkg -i krankerl_0.12.3_amd64.deb + wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb + sudo dpkg -i krankerl_0.14.0_amd64.deb - name: Package app run: krankerl package - uses: actions/upload-artifact@v2 diff --git a/.github/workflows/php-test.yml b/.github/workflows/php-test.yml index b8d2a931098e23926874aa3c977268bf8975cc1d..7fef20f0172016e4a6dfe6c59810e1efaedffb30 100644 --- a/.github/workflows/php-test.yml +++ b/.github/workflows/php-test.yml @@ -20,12 +20,6 @@ jobs: nextcloud-versions: 'stable24' - php-versions: '8.1' nextcloud-versions: 'stable24' - - php-versions: '7.4' - nextcloud-versions: 'master' - - php-versions: '8.0' - nextcloud-versions: 'master' - - php-versions: '8.1' - nextcloud-versions: 'master' name: php${{ matrix.php-versions }} on ${{ matrix.nextcloud-versions }} unit tests env: CI: true diff --git a/CHANGELOG.md b/CHANGELOG.md index b64cf20c88521b7f26aff72b189af1bcaf3ced32..bbb124b9609e75df0d056b73d6a9c3771197c545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ # Changelog +## 3.5.5 - 2023-02-01 +### Fixed +- Error handling in booking controller + ## 3.5.4 - 2022-12-22 ### Fixed - Handling of Email VALARMs diff --git a/appinfo/info.xml b/appinfo/info.xml index 195c859c98ff72c11baf5cbff4251033fa851f9b..2f1757145ac1a19f85fa31fcb9080b8bb21363ef 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -15,7 +15,7 @@ * ☑️ Tasks! See tasks with a due date directly in the calendar * 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries. ]]> - 3.5.4 + 3.5.5 agpl Anna Larch Nextcloud Groupware Team diff --git a/lib/Controller/BookingController.php b/lib/Controller/BookingController.php index a8a564c2decb1e42ed527b368f2fadd1a80e8c28..4339c14308b068fef05f4aec240632b2014cb37d 100644 --- a/lib/Controller/BookingController.php +++ b/lib/Controller/BookingController.php @@ -42,6 +42,7 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\AppFramework\Services\IInitialState; use OCP\AppFramework\Utility\ITimeFactory; use OCP\DB\Exception; +use OCP\IConfig; use OCP\IRequest; use OCP\Mail\IMailer; use Psr\Log\LoggerInterface; @@ -68,6 +69,7 @@ class BookingController extends Controller { /** @var IMailer */ private $mailer; + private IConfig $systemConfig; public function __construct(string $appName, IRequest $request, @@ -77,7 +79,8 @@ class BookingController extends Controller { AppointmentConfigService $appointmentConfigService, URLGenerator $urlGenerator, LoggerInterface $logger, - IMailer $mailer) { + IMailer $mailer, + IConfig $systemConfig) { parent::__construct($appName, $request); $this->bookingService = $bookingService; @@ -87,6 +90,7 @@ class BookingController extends Controller { $this->urlGenerator = $urlGenerator; $this->logger = $logger; $this->mailer = $mailer; + $this->systemConfig = $systemConfig; } /** @@ -191,7 +195,17 @@ class BookingController extends Controller { return JsonResponse::fail(null, Http::STATUS_UNPROCESSABLE_ENTITY); } catch (ServiceException $e) { $this->logger->error($e->getMessage(), ['exception' => $e]); - return JsonResponse::errorFromThrowable($e, $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR); + + if ($this->systemConfig->getSystemValue('debug', false)) { + return JsonResponse::errorFromThrowable($e, $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR, + ['debug' => true,] + ); + } + + return JsonResponse::error( + 'Server error', + $e->getHttpCode() ?? Http::STATUS_INTERNAL_SERVER_ERROR + ); } return JsonResponse::success($booking); diff --git a/package-lock.json b/package-lock.json index 48205b81d5428790b9b524984f6a43ee0d6474c7..bed327aa5683e9d96001708a90f83f2153b7a631 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "calendar", - "version": "3.5.4", + "version": "3.5.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "calendar", - "version": "3.5.4", + "version": "3.5.5", "license": "agpl", "dependencies": { "@fullcalendar/core": "5.11.0", diff --git a/package.json b/package.json index b4067d429cffeeee6394285c13d2007717319ad3..fc97e1175fbd3f0a1145a2572b0ea20da9bea09c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "calendar", "description": "A calendar app for Nextcloud. Easily sync events from various devices, share and edit them online.", - "version": "3.5.4", + "version": "3.5.5", "author": "Georg Ehrke ", "contributors": [ "Georg Ehrke ", diff --git a/tests/php/unit/Controller/BookingControllerTest.php b/tests/php/unit/Controller/BookingControllerTest.php index 529cc2f49fbaf9fc9a6c0134ba650e0c96280e7f..5c60cc283d75551ac95b7c6e47b222f88af5d6f8 100644 --- a/tests/php/unit/Controller/BookingControllerTest.php +++ b/tests/php/unit/Controller/BookingControllerTest.php @@ -39,6 +39,7 @@ use OCP\AppFramework\Services\IInitialState; use OCP\AppFramework\Utility\ITimeFactory; use OCP\Calendar\ICalendarQuery; use OCP\Contacts\IManager; +use OCP\IConfig; use OCP\IInitialStateService; use OCP\IRequest; use OCP\IUser; @@ -88,6 +89,9 @@ class BookingControllerTest extends TestCase { /** @var IMailer|MockObject */ private $mailer; + /** @var IConfig|MockObject */ + private $systemConfig; + protected function setUp():void { parent::setUp(); @@ -104,6 +108,7 @@ class BookingControllerTest extends TestCase { $this->urlGenerator = $this->createMock(URLGenerator::class); $this->logger = $this->createMock(LoggerInterface::class); $this->mailer = $this->createMock(IMailer::class); + $this->systemConfig = $this->createMock(IConfig::class); $this->controller = new BookingController( $this->appName, $this->request, @@ -113,7 +118,8 @@ class BookingControllerTest extends TestCase { $this->apptService, $this->urlGenerator, $this->logger, - $this->mailer + $this->mailer, + $this->systemConfig, ); } @@ -255,6 +261,10 @@ class BookingControllerTest extends TestCase { ->method('book') ->with($config, 1, 1, 'Europe/Berlin', 'Test', $email, 'Test') ->willThrowException(new ServiceException()); + $this->systemConfig->expects(self::once()) + ->method('getSystemValue') + ->with('debug') + ->willReturn(false); $this->controller->bookSlot(1, 1, 1, 'Test', $email, 'Test', 'Europe/Berlin'); }