Class: LeapSalesforce::User

Inherits:
Object
  • Object
show all
Defined in:
lib/leap_salesforce/users/user.rb

Overview

A test user used to execute tests TODO: Handle approach of assigning a profile including role hierarchy.

I.e, Sales user and Sales Manager have one role but different position

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*user_params, description: nil) ⇒ User



19
20
21
22
23
# File 'lib/leap_salesforce/users/user.rb', line 19

def initialize(*user_params, description: nil)
  self.key = user_params[0]
  self.username = user_params[1]
  self.description = description
end

Instance Attribute Details

#descriptionString



15
16
17
# File 'lib/leap_salesforce/users/user.rb', line 15

def description
  @description
end

#keyString



9
10
11
# File 'lib/leap_salesforce/users/user.rb', line 9

def key
  @key
end

#usernameString

Returns Username of User interpreted by ERB (in email address format). Use ERB to define users that can vary according to environment.



43
44
45
46
47
# File 'lib/leap_salesforce/users/user.rb', line 43

def username
  raise LeapSalesforce::SetupError, "User #{inspect} has no username" if @username.nil? || @username.empty?

  ERB.new(@username).result(binding)
end

Instance Method Details

#exists?Boolean

Query for user in Salesforce instance



37
38
39
# File 'lib/leap_salesforce/users/user.rb', line 37

def exists?
  admin_query_user { ::User.any?(username: username) }
end

#first_nameString



31
32
33
# File 'lib/leap_salesforce/users/user.rb', line 31

def first_name
  admin_query_user { soql_object.first_name }
end

#match?(field, criteria) ⇒ Boolean



76
77
78
79
80
81
82
83
# File 'lib/leap_salesforce/users/user.rb', line 76

def match?(field, criteria)
  actual_value = send(field.to_s)
  case criteria
  when Regexp then !actual_value[criteria].nil?
  else
    actual_value == criteria
  end
end

#password=(password) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/leap_salesforce/users/user.rb', line 50

def password=(password)
  user = ::User.find(username: username)
  set = ::User.new("Set password for #{username}, #{user.id} to '#{password}'",
                   method: :post, suburl: "sobjects/User/#{user.id}/password",
                   body: { NewPassword: password })
  set.successful?
end

#reset_password(password = nil) ⇒ Object

Using developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_sobject_user_password.htm @todo: Setting temp password is currently not working. Need to investigate



61
62
63
64
65
66
67
68
69
70
71
# File 'lib/leap_salesforce/users/user.rb', line 61

def reset_password(password = nil)
  admin_query_user do
    user = ::User.find(username: username)
    params = { method: :delete, suburl: "sobjects/User/#{user.id}/password" }
    params.merge!(body: { NewPassword: password }) if password
    reset = ::User.new("Reset password for #{username}, #{user.id} to '#{password}'",
                       **params)
    reset.successful?
    return reset[:NewPassword]
  end
end

#soql_objectUser



26
27
28
# File 'lib/leap_salesforce/users/user.rb', line 26

def soql_object
  admin_query_user { ::User.find username: username }
end