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

Version Path
mediawiki_selenium-1.8.1 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.8.0 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.7.4 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.7.3 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.7.2 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.7.1 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.7.0 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.5 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.4 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.3 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.2 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.1 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.6.0 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.5.0 lib/mediawiki_selenium/user_factory.rb
mediawiki_selenium-1.4.0 lib/mediawiki_selenium/user_factory.rb