Skip to content
代码片段 群组 项目
未验证 提交 6dbca4ea 编辑于 作者: Alejandro Rodríguez's avatar Alejandro Rodríguez 提交者: GitLab
浏览文件

Merge branch '479121-cut-off-expired-feature-flags' into 'master'

Resolve "Allow testing AI features after the cut_off date on Gitlab.com staging environment"

See merge request https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165312



Merged-by: default avatarAlejandro Rodríguez <alejandro@gitlab.com>
Approved-by: default avatarSam Figueroa <sfigueroa@gitlab.com>
Approved-by: default avatarAlejandro Rodríguez <alejandro@gitlab.com>
Reviewed-by: default avatarAlejandro Rodríguez <alejandro@gitlab.com>
Reviewed-by: default avatarMatthias Käppler <mkaeppler@gitlab.com>
Co-authored-by: default avatarNikola Milojevic <nmilojevic@gitlab.com>
No related branches found
No related tags found
无相关合并请求
---
name: cloud_connector_cut_off_date_expired
feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/479121
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/165312
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/483364
milestone: '17.5'
group: group::cloud connector
type: ops
default_enabled: false
......@@ -14,6 +14,11 @@ def initialize(name, cut_off_date, bundled_with, backend)
@backend = backend
end
override :free_access?
def free_access?
cut_off_date_expired_enabled? ? false : super
end
override :access_token
def access_token(resource = nil, extra_claims: {})
::Gitlab::CloudConnector::SelfIssuedToken.new(
......@@ -26,6 +31,12 @@ def access_token(resource = nil, extra_claims: {})
private
def cut_off_date_expired_enabled?
return false unless ::Gitlab.dev_or_test_env? || ::Gitlab.staging?
Feature.enabled?(:cloud_connector_cut_off_date_expired, :instance, type: :ops)
end
def scopes_for(resource)
free_access? ? allowed_scopes_during_free_access : allowed_scopes_from_purchased_bundles_for(resource)
end
......
......@@ -3,16 +3,40 @@
require 'spec_helper'
RSpec.describe CloudConnector::SelfSigned::AvailableServiceData, feature_category: :cloud_connector do
let(:cut_off_date) { 1.month.ago }
let(:bundled_with) { {} }
let(:backend) { 'gitlab-ai-gateway' }
let(:available_service_data) { described_class.new(:duo_chat, cut_off_date, bundled_with, backend) }
describe '#free_access?' do
subject(:free_access) { available_service_data.free_access? }
let(:cut_off_date) { 1.month.from_now }
context 'when cloud_connector_cut_off_date_expired feature flag is disabled' do
before do
stub_feature_flags(cloud_connector_cut_off_date_expired: false)
end
it { is_expected.to be true }
end
context 'when cloud_connector_cut_off_date_expired feature flag is enabled' do
before do
stub_feature_flags(cloud_connector_cut_off_date_expired: true)
end
it { is_expected.to be false }
end
end
describe '#access_token' do
let(:resource) { create(:user) }
let(:encoded_token_string) { 'token_string' }
let(:cut_off_date) { 1.month.ago }
let(:dc_unit_primitives) { [:duo_chat_up1, :duo_chat_up2] }
let(:duo_pro_scopes) { dc_unit_primitives + [:duo_chat_up3] }
let(:duo_extra_scopes) { dc_unit_primitives + [:duo_chat_up4] }
let(:bundled_with) { { "duo_pro" => duo_pro_scopes, "duo_extra" => duo_extra_scopes } }
let(:backend) { 'gitlab-ai-gateway' }
let(:available_service_data) { described_class.new(:duo_chat, cut_off_date, bundled_with, backend) }
let(:extra_claims) { {} }
let(:expected_token) do
instance_double('Gitlab::CloudConnector::SelfIssuedToken', encoded: encoded_token_string)
......
......@@ -29,6 +29,13 @@
metadata[:without_license] = true
end
config.before do |example|
if example.metadata.fetch(:stub_feature_flags, true)
# Specs should not require cut_off_date to be expired by default for cloud connector features.
stub_feature_flags(cloud_connector_cut_off_date_expired: false)
end
end
config.before(:context, :with_license) do
License.destroy_all # rubocop: disable Cop/DestroyAll
TestLicense.init
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册