oncall-engine/engine/apps/api/tests
Joey Orlando eb777f5415
address Google OAuth2 issues where user didn't grant us the https://www.googleapis.com/auth/calendar.events.readonly scope (#4802)
# What this PR does

Follow up PR to https://github.com/grafana/oncall/pull/4792

Basically if when communicating with Google Calendar's API we encounter
an HTTP 403, or the Google client throws a
`google.auth.exceptions.RefreshError` this means one of three things:
1. the refresh token we have persisted for the user is missing the
`https://www.googleapis.com/auth/calendar.events.readonly` scope (HTTP
403)
2. the Google user has been deleted
(`google.auth.exceptions.RefreshError`)
3. the refresh token has expired (`google.auth.exceptions.RefreshError`)

To prevent scenario 1 above from happening in the future we now will
check that the token has been granted the required scopes. If the user
doesn't grant us all the necessary scopes, we will show them an error
message in the UI:
https://www.loom.com/share/0055ef03192b4154b894c2221cecbd5f

For tokens that were granted prior to this PR and which are missing the
required scope, we will show the user a dismissible warning banner in
the UI letting them know that they will need to reconnect their account
and grant us the missing permissions (see [this second demo
video](https://www.loom.com/share/bf2ee8b840864a64893165370a892bcd)
showing this).

## Checklist

- [x] Unit, integration, and e2e (if applicable) tests updated
- [x] Documentation added (or `pr:no public docs` PR label added if not
required)
- [x] Added the relevant release notes label (see labels prefixed w/
`release:`). These labels dictate how your PR will
    show up in the autogenerated release notes.

---------

Co-authored-by: Dominik <dominik.broj@grafana.com>
2024-08-14 18:02:34 -04:00
..
__init__.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
conftest.py Address deprecation warnings in tests (#4681) 2024-08-13 20:51:18 +00:00
test_alert_group.py Address deprecation warnings in tests (#4681) 2024-08-13 20:51:18 +00:00
test_alert_group_escalation_snapshot.py cleanup CustomButton backend code + add ngrok/express outgoing webhook e2e test (#2544) 2024-03-28 15:37:22 +00:00
test_alert_group_table_settings.py Fix alert group columns validation (#3577) 2023-12-15 17:15:50 +00:00
test_alert_receive_channel.py Fix docs and UI for connecting Grafana Alerting from other stack (#4243) 2024-04-24 08:02:51 +00:00
test_alert_receive_channel_template.py Adds new templates cheatsheats (#3643) 2024-01-17 13:49:36 +00:00
test_auth.py address Google OAuth2 issues where user didn't grant us the https://www.googleapis.com/auth/calendar.events.readonly scope (#4802) 2024-08-14 18:02:34 -04:00
test_channel_filter.py Update regex to jinja route conversion to correctly escape double quotes (#4705) 2024-07-19 11:56:22 +00:00
test_escalation_chain.py Fix team changing on PUT request if team is not in request data (#3530) 2023-12-07 14:44:52 +00:00
test_escalation_policy.py Allow custom wait delay (#4446) 2024-06-03 13:06:47 +00:00
test_features.py Improve OpenAPI schema coverage (#3629) 2024-01-12 15:11:22 +00:00
test_integration_heartbeat.py Add reset button to disable integration heartbeat (#3959) 2024-03-04 19:20:00 +00:00
test_labels.py Support prescribed labels (#3848) 2024-02-20 14:42:51 +08:00
test_live_settings.py Telegram long polling (#2250) 2023-08-24 09:12:24 +02:00
test_oncall_shift.py Update schedule events internal API to return default priority level (#4697) 2024-07-18 14:15:58 +00:00
test_openapi_schema.py allow specifying more than one redis server URI in the REDIS_URI env var (#3368) 2023-11-16 10:48:36 -05:00
test_organization.py Update chatops connected integration organization check (#4268) 2024-04-23 16:34:44 +00:00
test_paging.py Updates to POST /direct_paging internal API endpoint to support Grafana Incident use-cases (#3232) 2023-11-01 17:19:44 -04:00
test_permissions.py Permissions for labels (#3173) 2023-10-23 11:03:51 +00:00
test_preview_template_options.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
test_public_api_tokens.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_resolution_note.py Resolution note source mobile app (#3174) 2023-10-20 15:22:45 +01:00
test_route_regex_debugger.py World, meet OnCall! 2022-06-03 08:09:47 -06:00
test_schedule_export.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_schedules.py Update schedule events internal API to return default priority level (#4697) 2024-07-18 14:15:58 +00:00
test_set_general_log_channel.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_shift_swaps.py Google Calendar Out of Office events - autogenerated shift swap requests (#4104) 2024-04-02 20:10:16 +00:00
test_slack_channels.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_slack_team_settings.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_team.py cleanup CustomButton backend code + add ngrok/express outgoing webhook e2e test (#2544) 2024-03-28 15:37:22 +00:00
test_telegram_channel.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_user.py address Google OAuth2 issues where user didn't grant us the https://www.googleapis.com/auth/calendar.events.readonly scope (#4802) 2024-08-14 18:02:34 -04:00
test_user_groups.py Add endpoint to get a single user group (#4395) 2024-05-24 20:26:28 +00:00
test_user_notification_policy.py Allow custom wait delay (#4446) 2024-06-03 13:06:47 +00:00
test_user_schedule_export.py Handle None role when syncing users from Grafana (#3147) 2023-10-19 17:39:08 +00:00
test_webhook_presets.py Migrate webhooks integration_filter to use a m2m field instead (#3946) 2024-02-23 11:55:44 +00:00
test_webhooks.py Allow getting details from connected integration webhooks (#4153) 2024-04-08 14:13:17 +00:00