From ea1b598246cb6935ca806309b9e814cbfd94a0fa Mon Sep 17 00:00:00 2001 From: Emelia Smith Date: Tue, 12 Nov 2024 23:06:13 +0100 Subject: [PATCH] Add client_secret_expires_at to OAuth Applications (#30317) --- app/serializers/rest/credential_application_serializer.rb | 8 +++++++- spec/requests/api/v1/apps/credentials_spec.rb | 1 + spec/requests/api/v1/apps_spec.rb | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/serializers/rest/credential_application_serializer.rb b/app/serializers/rest/credential_application_serializer.rb index bfec7d03e8..0532390c9a 100644 --- a/app/serializers/rest/credential_application_serializer.rb +++ b/app/serializers/rest/credential_application_serializer.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class REST::CredentialApplicationSerializer < REST::ApplicationSerializer - attributes :client_id, :client_secret + attributes :client_id, :client_secret, :client_secret_expires_at def client_id object.uid @@ -10,4 +10,10 @@ class REST::CredentialApplicationSerializer < REST::ApplicationSerializer def client_secret object.secret end + + # Added for future forwards compatibility when we may decide to expire OAuth + # Applications. Set to zero means that the client_secret never expires. + def client_secret_expires_at + 0 + end end diff --git a/spec/requests/api/v1/apps/credentials_spec.rb b/spec/requests/api/v1/apps/credentials_spec.rb index 8e5fa14b7e..3aca53ed0a 100644 --- a/spec/requests/api/v1/apps/credentials_spec.rb +++ b/spec/requests/api/v1/apps/credentials_spec.rb @@ -44,6 +44,7 @@ RSpec.describe 'Credentials' do expect(response.parsed_body) .to not_include(client_id: be_present) .and not_include(client_secret: be_present) + .and not_include(client_secret_expires_at: be_present) end end diff --git a/spec/requests/api/v1/apps_spec.rb b/spec/requests/api/v1/apps_spec.rb index cf43e14d62..4e9147ba32 100644 --- a/spec/requests/api/v1/apps_spec.rb +++ b/spec/requests/api/v1/apps_spec.rb @@ -42,6 +42,7 @@ RSpec.describe 'Apps' do id: app.id.to_s, client_id: app.uid, client_secret: app.secret, + client_secret_expires_at: 0, name: client_name, website: website, scopes: ['read', 'write'],