diff --git a/qa/qa/resource/user.rb b/qa/qa/resource/user.rb
index 6bf2bd81cfe581b9869de04616bdeba4a7168079..69a92e5364b6ceea5b7b21cf88d459bcbafd294a 100644
--- a/qa/qa/resource/user.rb
+++ b/qa/qa/resource/user.rb
@@ -21,6 +21,42 @@ class User < Base
         :last_name,
         :email
 
+      def self.default
+        Resource::User.init do |user|
+          user.username = Runtime::User.ldap_user? ? Runtime::User.ldap_username : Runtime::User.username
+          user.password = Runtime::User.ldap_user? ? Runtime::User.ldap_password : Runtime::User.password
+        end
+      end
+
+      def self.fabricate_or_use(username = nil, password = nil)
+        if Runtime::Env.signup_disabled? && !Runtime::Env.personal_access_tokens_disabled?
+          fabricate_via_api! do |user|
+            user.username = username
+            user.password = password
+          end
+        else
+          fabricate! do |user|
+            user.username = username if username
+            user.password = password if password
+          end
+        end
+      end
+
+      # Get users from the API
+      #
+      # @param [Integer] per_page the number of pages to traverse (used for pagination)
+      # @return [Array<Hash>] parsed response body
+      def self.all(per_page: 100)
+        response = nil
+        Resource::User.init do |user|
+          response = user.get(Runtime::API::Request.new(
+            Runtime::API::Client.as_admin, '/users', per_page: per_page.to_s
+          ).url)
+
+          raise ResourceQueryError unless response.code == 200
+        end.parse_body(response)
+      end
+
       def initialize
         @admin = false
         @hard_delete_on_api_removal = false
@@ -29,11 +65,11 @@ def initialize
         @email_domain = 'example.com'
       end
 
-      def self.default
-        Resource::User.init do |user|
-          user.username = Runtime::User.ldap_user? ? Runtime::User.ldap_username : Runtime::User.username
-          user.password = Runtime::User.ldap_user? ? Runtime::User.ldap_password : Runtime::User.password
-        end
+      # Override api_client to make sure admin pat is always used
+      #
+      # @return [QA::Runtime::API::Client]
+      def api_client
+        @api_client ||= Runtime::API::Client.as_admin
       end
 
       def admin?
@@ -157,35 +193,6 @@ def api_post_body
         }.merge(ldap_post_body)
       end
 
-      def self.fabricate_or_use(username = nil, password = nil)
-        if Runtime::Env.signup_disabled? && !Runtime::Env.personal_access_tokens_disabled?
-          fabricate_via_api! do |user|
-            user.username = username
-            user.password = password
-          end
-        else
-          fabricate! do |user|
-            user.username = username if username
-            user.password = password if password
-          end
-        end
-      end
-
-      # Get users from the API
-      #
-      # @param [Integer] per_page the number of pages to traverse (used for pagination)
-      # @return [Array<Hash>] parsed response body
-      def self.all(per_page: 100)
-        response = nil
-        Resource::User.init do |user|
-          response = user.get(Runtime::API::Request.new(
-            Runtime::API::Client.as_admin, '/users', per_page: per_page.to_s
-          ).url)
-
-          raise ResourceQueryError unless response.code == 200
-        end.parse_body(response)
-      end
-
       def approve!
         response = post(Runtime::API::Request.new(api_client, api_approve_path).url, nil)
         return if response.code == 201