Sha256: 468fa5e07551926d15ed68d9cd3c3eb8ad67c4d7e34658ec610c1ec4e9aaf81e
Contents?: true
Size: 1.19 KB
Versions: 15
Compression:
Stored size: 1.19 KB
Contents
require 'mediawiki_api' module MediawikiSelenium # Factory class used to provision test user fixtures via the MW API. # class UserFactory # Create a user factory. This should typically be done anew for each test # case. # # @param api [MediawikiApi::Client] API client used to create users. # def initialize(api) @api = api @users = {} end # Return a unique name for the given user ID. Each account will be created # via the MW API if it has not already been created. # # @param id [Symbol, nil] Alternative ID or `nil` for the primary user. # # @return [Hash] # def create(id = nil) return @users[id] if @users.include?(id) user = unique(id, 'User') pass = unique(id, 'Pass') create_account(user, pass) @users[id] = { user: user, password: pass } end private def create_account(user, password) @api.create_account(user, password) rescue MediawikiApi::ApiError => e raise e unless e.code == 'userexists' end def unique(id, label) prefix = label prefix += "-#{id.to_s.gsub('_', '-')}" if id "#{prefix}-#{Random.rand(36**10).to_s(36)}" end end end
Version data entries
15 entries across 15 versions & 1 rubygems