<%= render SupportInterface::TileComponent.new(
count: @api_tokens.count,
label: 'API tokens issued',
@@ -11,7 +11,7 @@
href: '#not-connected',
) %>
+
<%= render SupportInterface::TileComponent.new(
count: @api_tokens_last_3_months_count,
label: 'API tokens used in the last 3 months',
diff --git a/spec/system/support_interface/api_tokens/view_tokens_spec.rb b/spec/system/support_interface/api_tokens/view_tokens_spec.rb
new file mode 100644
index 00000000000..acd381a3381
--- /dev/null
+++ b/spec/system/support_interface/api_tokens/view_tokens_spec.rb
@@ -0,0 +1,40 @@
+require 'rails_helper'
+
+RSpec.describe 'API tokens' do
+ include DfESignInHelpers
+
+ scenario 'Support views vendors with api tokens' do
+ given_i_am_signed_in
+ and_api_tokens_exist
+ when_i_visit_the_tokens_page
+ then_i_see_all_the_providers_with_api_tokens
+ end
+
+ def given_i_am_signed_in
+ sign_in_as_support_user
+ end
+
+ def and_api_tokens_exist
+ vendor = create(:vendor, name: 'vendor_1')
+ provider_1 = create(:provider, name: 'Provider 1', vendor:)
+ provider_2 = create(:provider, name: 'Provider 2', vendor:)
+
+ create(:vendor_api_token, provider: provider_1, last_used_at: 1.month.ago)
+ create(:vendor_api_token, provider: provider_2)
+ end
+
+ def when_i_visit_the_tokens_page
+ visit support_interface_api_tokens_path
+ end
+
+ def then_i_see_all_the_providers_with_api_tokens
+ expect(page).to have_content '2 API tokens issued'
+ expect(page).to have_content '1 API tokens used in the last 3 months'
+
+ within '.govuk-table' do
+ expect(page).to have_content 'Provider 1'
+ expect(page).to have_content 'Provider 2'
+ expect(page).to have_content 'vendor_1'
+ end
+ end
+end
From ff6077cc21fdf8db33bd3c6f6be4ecc5bc2765aa Mon Sep 17 00:00:00 2001
From: CatalinVoineag <11318084+CatalinVoineag@users.noreply.github.com>
Date: Thu, 23 Jan 2025 09:57:25 +0000
Subject: [PATCH 3/3] Add scope to vendor api tokens for support dashboard
---
app/controllers/support_interface/api_tokens_controller.rb | 2 +-
app/models/vendor_api_token.rb | 2 ++
app/views/support_interface/api_tokens/index.html.erb | 2 --
spec/system/support_interface/api_tokens/view_tokens_spec.rb | 4 ++--
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/app/controllers/support_interface/api_tokens_controller.rb b/app/controllers/support_interface/api_tokens_controller.rb
index 3db745589da..6c6e26e03a8 100644
--- a/app/controllers/support_interface/api_tokens_controller.rb
+++ b/app/controllers/support_interface/api_tokens_controller.rb
@@ -5,7 +5,7 @@ def index
VendorAPIToken.arel_table[:last_used_at].desc.nulls_last,
created_at: :desc,
)
- @api_tokens_last_3_months_count = @api_tokens.where('last_used_at >= ?', 3.months.ago).count
+ @api_tokens_last_3_months_count = VendorAPIToken.used_in_last_3_months.count
end
def new
diff --git a/app/models/vendor_api_token.rb b/app/models/vendor_api_token.rb
index 8d59879d9d9..da31a6ea5c9 100644
--- a/app/models/vendor_api_token.rb
+++ b/app/models/vendor_api_token.rb
@@ -3,6 +3,8 @@ class VendorAPIToken < ApplicationRecord
audited associated_with: :provider
+ scope :used_in_last_3_months, -> { where('last_used_at >= ?', 3.months.ago) }
+
def self.create_with_random_token!(provider:)
unhashed_token, hashed_token = Devise.token_generator.generate(VendorAPIToken, :hashed_token)
create!(hashed_token:, provider:)
diff --git a/app/views/support_interface/api_tokens/index.html.erb b/app/views/support_interface/api_tokens/index.html.erb
index 37744a5246c..b6e9223f5bd 100644
--- a/app/views/support_interface/api_tokens/index.html.erb
+++ b/app/views/support_interface/api_tokens/index.html.erb
@@ -8,7 +8,6 @@
count: @api_tokens.count,
label: 'API tokens issued',
colour: :blue,
- href: '#not-connected',
) %>
@@ -16,7 +15,6 @@
count: @api_tokens_last_3_months_count,
label: 'API tokens used in the last 3 months',
colour: :blue,
- href: '#not-synced',
) %>
diff --git a/spec/system/support_interface/api_tokens/view_tokens_spec.rb b/spec/system/support_interface/api_tokens/view_tokens_spec.rb
index acd381a3381..8786261e17b 100644
--- a/spec/system/support_interface/api_tokens/view_tokens_spec.rb
+++ b/spec/system/support_interface/api_tokens/view_tokens_spec.rb
@@ -7,7 +7,7 @@
given_i_am_signed_in
and_api_tokens_exist
when_i_visit_the_tokens_page
- then_i_see_all_the_providers_with_api_tokens
+ then_i_see_the_count_of_providers_with_api_tokens
end
def given_i_am_signed_in
@@ -27,7 +27,7 @@ def when_i_visit_the_tokens_page
visit support_interface_api_tokens_path
end
- def then_i_see_all_the_providers_with_api_tokens
+ def then_i_see_the_count_of_providers_with_api_tokens
expect(page).to have_content '2 API tokens issued'
expect(page).to have_content '1 API tokens used in the last 3 months'