Check for root namespace before creating add-on purchase
What does this MR do and why?
Part of https://gitlab.com/gitlab-org/gitlab/-/issues/414605+
This change checks for the namespace to be a root namespace before creating a subscription add-on purchase. It aligns with the restrictions that only root namespaces can purchase a SaaS subscription.
How to set up and validate locally
-
Create the code suggestions add-on in the rails console (note: This record will be created via the API endpoints in !123382 (merged) if it's missing):
add_on = GitlabSubscriptions::AddOn.create(name: :code_suggestions, description: 'Add-on for code suggestions')
-
Load a sub group and user to use:
namespace = Group.where.not(parent_id: nil).first user = User.find(<USER_ID>)
-
Test the create service with the sub group:
params = { quantity: 1, expires_on: Date.current + 1.month, purchase_xid: '1a2b3c' } GitlabSubscriptions::AddOnPurchases::CreateService.new( user, namespace, add_on, params ).execute
Expected result: Error with the message that the namespace is not a root namespace.
-
Load a root namespace:
namespace = Group.where(parent_id: nil).first
-
Test the create service with the root namespace:
params = { quantity: 1, expires_on: Date.current + 1.month, purchase_xid: '1a2b3c' } GitlabSubscriptions::AddOnPurchases::CreateService.new( user, namespace, add_on, params ).execute
Expected result: Success.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.