From 0eff6852774d7ad43e91ba58a871f5f8069a376f Mon Sep 17 00:00:00 2001 From: Henry Whitaker Date: Tue, 25 Aug 2020 19:01:48 +0100 Subject: [PATCH] Added some tests for listeners and updated workflows with secrets --- .github/workflows/laravel-dev.yml | 5 + .github/workflows/laravel-pr.yml | 5 + .github/workflows/laravel-stable.yml | 5 + .../SpeedtestCompleteListener/SlackTest.php | 127 ++++++++++++++++++ .../TelegramTest.php | 107 +++++++++++++++ .../SpeedtestFailedListener/SlackTest.php | 18 +++ .../SpeedtestFailedListener/TelegramTest.php | 18 +++ .../SpeedtestOverviewListener/SlackTest.php | 18 +++ .../TelegramTest.php | 18 +++ 9 files changed, 321 insertions(+) create mode 100644 tests/Unit/Listeners/SpeedtestCompleteListener/SlackTest.php create mode 100644 tests/Unit/Listeners/SpeedtestCompleteListener/TelegramTest.php create mode 100644 tests/Unit/Listeners/SpeedtestFailedListener/SlackTest.php create mode 100644 tests/Unit/Listeners/SpeedtestFailedListener/TelegramTest.php create mode 100644 tests/Unit/Listeners/SpeedtestOverviewListener/SlackTest.php create mode 100644 tests/Unit/Listeners/SpeedtestOverviewListener/TelegramTest.php diff --git a/.github/workflows/laravel-dev.yml b/.github/workflows/laravel-dev.yml index 7fe3c175..1f52d9dc 100644 --- a/.github/workflows/laravel-dev.yml +++ b/.github/workflows/laravel-dev.yml @@ -13,6 +13,11 @@ jobs: - uses: actions/checkout@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" + - name: Update .env with secrets + run: | + echo SLACK_WEBHOOK=${{ secrets.SLACK_WEBHOOK }} >> .env + echo TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }} >> .env + echo TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }} >> .env - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - name: Create Database diff --git a/.github/workflows/laravel-pr.yml b/.github/workflows/laravel-pr.yml index f3bb7e9a..0df96984 100644 --- a/.github/workflows/laravel-pr.yml +++ b/.github/workflows/laravel-pr.yml @@ -13,6 +13,11 @@ jobs: - uses: actions/checkout@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" + - name: Update .env with secrets + run: | + echo SLACK_WEBHOOK=${{ secrets.SLACK_WEBHOOK }} >> .env + echo TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }} >> .env + echo TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }} >> .env - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - name: Create Database diff --git a/.github/workflows/laravel-stable.yml b/.github/workflows/laravel-stable.yml index 474432aa..c9e36bda 100644 --- a/.github/workflows/laravel-stable.yml +++ b/.github/workflows/laravel-stable.yml @@ -13,6 +13,11 @@ jobs: - uses: actions/checkout@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" + - name: Update .env with secrets + run: | + echo SLACK_WEBHOOK=${{ secrets.SLACK_WEBHOOK }} >> .env + echo TELEGRAM_BOT_TOKEN=${{ secrets.TELEGRAM_BOT_TOKEN }} >> .env + echo TELEGRAM_CHAT_ID=${{ secrets.TELEGRAM_CHAT_ID }} >> .env - name: Install Dependencies run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist - name: Create Database diff --git a/tests/Unit/Listeners/SpeedtestCompleteListener/SlackTest.php b/tests/Unit/Listeners/SpeedtestCompleteListener/SlackTest.php new file mode 100644 index 00000000..65708a8e --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestCompleteListener/SlackTest.php @@ -0,0 +1,127 @@ + 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } + + /** + * A basic unit test example. + * + * @return void + */ + public function testInvalidSlackWebhook() + { + SettingsHelper::set('speedtest_notifications', true); + SettingsHelper::set('slack_webhook', 'invalid'); + + $l = new SpeedtestCompleteListener(); + $test = Speedtest::create([ 'download' => 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } + + /** + * A basic unit test example. + * + * @return void + */ + public function testSlackPercentageThresholdNotification() + { + SettingsHelper::set('speedtest_notifications', false); + SettingsHelper::set('slack_webhook', env('SLACK_WEBHOOK')); + SettingsHelper::set('threshold_alert_percentage_notifications', 1); + Speedtest::create([ 'download' => 50, 'upload' => 50, 'ping' => 1 ]); + + $l = new SpeedtestCompleteListener(); + $test = Speedtest::create([ 'download' => 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } + + /** + * A basic unit test example. + * + * @return void + */ + public function testSlackAbsoluteThresholdNotification() + { + SettingsHelper::set('speedtest_notifications', false); + SettingsHelper::set('slack_webhook', env('SLACK_WEBHOOK')); + SettingsHelper::set('threshold_alert_absolute_notifications', 1); + SettingsHelper::set('threshold_alert_absolute_download', 50); + SettingsHelper::set('threshold_alert_absolute_upload', 50); + SettingsHelper::set('threshold_alert_absolute_ping', 1); + + + $l = new SpeedtestCompleteListener(); + $test = Speedtest::create([ 'download' => 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } +} diff --git a/tests/Unit/Listeners/SpeedtestCompleteListener/TelegramTest.php b/tests/Unit/Listeners/SpeedtestCompleteListener/TelegramTest.php new file mode 100644 index 00000000..8c37051b --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestCompleteListener/TelegramTest.php @@ -0,0 +1,107 @@ + 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } + + /** + * A basic unit test example. + * + * @return void + */ + public function testTelegramPercentageThresholdNotification() + { + SettingsHelper::set('speedtest_notifications', false); + SettingsHelper::set('telegram_bot_token', env('TELEGRAM_BOT_TOKEN')); + SettingsHelper::set('telegram_chat_id', env('TELEGRAM_CHAT_ID')); + SettingsHelper::set('slack_webhook', false); + SettingsHelper::set('threshold_alert_percentage_notifications', 1); + Speedtest::create([ 'download' => 50, 'upload' => 50, 'ping' => 1 ]); + + $l = new SpeedtestCompleteListener(); + $test = Speedtest::create([ 'download' => 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } + + /** + * A basic unit test example. + * + * @return void + */ + public function testTelegramAbsoluteThresholdNotification() + { + SettingsHelper::set('speedtest_notifications', false); + SettingsHelper::set('telegram_bot_token', env('TELEGRAM_BOT_TOKEN')); + SettingsHelper::set('telegram_chat_id', env('TELEGRAM_CHAT_ID')); + SettingsHelper::set('slack_webhook', false); + SettingsHelper::set('threshold_alert_absolute_notifications', 1); + SettingsHelper::set('threshold_alert_absolute_download', 50); + SettingsHelper::set('threshold_alert_absolute_upload', 50); + SettingsHelper::set('threshold_alert_absolute_ping', 1); + + + $l = new SpeedtestCompleteListener(); + $test = Speedtest::create([ 'download' => 5, 'upload' => 5, 'ping' => 5 ]); + + $event = new stdClass(); + $event->speedtest = $test; + + try { + $l->handle($event); + } catch(Exception $e) { + $this->assertTrue(false); + return false; + } + + $this->assertTrue(true); + } +} diff --git a/tests/Unit/Listeners/SpeedtestFailedListener/SlackTest.php b/tests/Unit/Listeners/SpeedtestFailedListener/SlackTest.php new file mode 100644 index 00000000..48bdaa05 --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestFailedListener/SlackTest.php @@ -0,0 +1,18 @@ +assertTrue(true); + } +} diff --git a/tests/Unit/Listeners/SpeedtestFailedListener/TelegramTest.php b/tests/Unit/Listeners/SpeedtestFailedListener/TelegramTest.php new file mode 100644 index 00000000..c7476869 --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestFailedListener/TelegramTest.php @@ -0,0 +1,18 @@ +assertTrue(true); + } +} diff --git a/tests/Unit/Listeners/SpeedtestOverviewListener/SlackTest.php b/tests/Unit/Listeners/SpeedtestOverviewListener/SlackTest.php new file mode 100644 index 00000000..9d90032f --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestOverviewListener/SlackTest.php @@ -0,0 +1,18 @@ +assertTrue(true); + } +} diff --git a/tests/Unit/Listeners/SpeedtestOverviewListener/TelegramTest.php b/tests/Unit/Listeners/SpeedtestOverviewListener/TelegramTest.php new file mode 100644 index 00000000..2ca16b0f --- /dev/null +++ b/tests/Unit/Listeners/SpeedtestOverviewListener/TelegramTest.php @@ -0,0 +1,18 @@ +assertTrue(true); + } +}