leap_salesforce 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: abbfab4a385a6d834dfcaf784c14d232669e85e0e2f7f9aaa8a4fdc99398b288
4
- data.tar.gz: 4292651ae00e51421a0dc4260cd44e7f77539e8753431008c8fd30e7acd1f5ef
3
+ metadata.gz: 44ffa8e3367450ab36724adf3fc899d2cb95afe6f53d35e691f0b195abb76951
4
+ data.tar.gz: 913a39e2840894dd0c1a906a301ae864b1e368b9ebc80fa4e547315c06c25497
5
5
  SHA512:
6
- metadata.gz: 8937117f55d69b733902bb49ded422a5602cb6040da7f987f2de5d36dbdfbab597fef81db1b256cf036cf7dea0ee3452fa7ccbbd10482c57b2f0104500785812
7
- data.tar.gz: 12aa02241dbe430e5b048a0ca6c1bf683cb2fb279592a2adcc6203fe5861dc3ff8029b2573c76c035ec6168f093ead8e3bd0f10a53788399fadcead161302d6d
6
+ metadata.gz: b0f4e1e61acf32114e51fe16451ea745d92198eb3944177885bc0f3cbc36bada65bc70c5efaa596978422b31246eaf3cd16aeab927ede42662dff79aa74d97dd
7
+ data.tar.gz: a8f1cfaea86a0766dbe58889e46c9a51370c2a934140bb37f55d5da235b31af7640aa2b79d70125aa6b9626d92d722d35c19d85d89e018f21d0b3f8210409ba1
data/ChangeLog CHANGED
@@ -1,3 +1,17 @@
1
+ Version 1.2.1
2
+ * Debug SOAP login request so it can be debugged
3
+
4
+ Version 1.2.0
5
+ * Ability to set security token on leap_salesforce user by setting an environment variable with the format
6
+ `ENV["#{key}_token"]``
7
+ * Remove deprecated method of create_enum within soql_settings class
8
+
9
+ Version 1.1.2
10
+ * Fix user_id from session
11
+
12
+ Version 1.1.1
13
+ * Allow session information from SOAP login to be available with LeapSalesforce::Session class
14
+
1
15
  Version 1.1.0
2
16
  * Proper fix to work with activerecord 7 - requires ruby > 2.7
3
17
 
data/README.md CHANGED
@@ -104,6 +104,10 @@ Credentials are not stored in stored in source control. They can be setting thro
104
104
  * 'client_secret'
105
105
  * 'password'
106
106
 
107
+ > Security tokens can be set for each user (adding to password in OAuth like in [this article](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_login.htm))
108
+ > To do that set an environment variable as USER_KEY_token. E.g, so for a user with a key of :admin
109
+ > the token would be set with the `admin_token` environment variable
110
+
107
111
  Tests can be run using the default `Rake` task.
108
112
 
109
113
  E.g.,
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'config/credentials/token' if File.exist? 'config/credentials/token.rb'
3
4
  require 'bundler/gem_tasks'
4
5
  require 'rspec/core/rake_task'
5
6
  require 'rake/clean'
@@ -14,6 +15,7 @@ RSpec::Core::RakeTask.new(:spec)
14
15
 
15
16
  desc 'Check Salesforce OAuth2 authentication is working'
16
17
  task :check_oauth do
18
+ Soaspec::OAuth2.debug_oauth = true
17
19
  LeapSalesforce.oauth_working?
18
20
  end
19
21
 
data/bin/console CHANGED
@@ -7,6 +7,7 @@ require 'leap_salesforce'
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
9
9
 
10
- require 'pry'
10
+ require 'irb'
11
+ require 'irb/completion'
11
12
 
12
- Pry.start
13
+ IRB.start(__FILE__)
data/config/general.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Set environment variable to set a security token that will be sent for a user
4
+ # ENV['admin_token'] = 'test'
5
+
3
6
  # Add users to LeapSalesforce context. First user is the default
4
7
  module LeapSalesforce
5
8
  Users.add User.new :admin, 'samuel.garratt@brave-otter-ttxype.com'
data/exe/leap_salesforce CHANGED
@@ -36,6 +36,7 @@ module LeapSalesforce
36
36
  exit if oauth_setup.downcase == 'n'
37
37
  end
38
38
  query_for_parameters # TODO: for sfdx
39
+ has_ignore_file = File.exist?('.gitignore')
39
40
  generate_files binding, ['Gemfile', 'Rakefile', '.leap_salesforce.yml', '.rspec', '.gitignore',
40
41
  { config: ['general.rb', { credentials: 'salesforce_oauth2.yml' }] },
41
42
  { spec: %w[spec_helper.rb limit_spec.rb crud_eg_spec.rb picklists_spec.rb] }]
@@ -52,6 +53,10 @@ module LeapSalesforce
52
53
  puts `rake leaps:create_soql_objects`
53
54
  puts 'Creating enums'.colorize :yellow
54
55
  puts `rake leaps:create_enums`
56
+ return unless has_ignore_file
57
+
58
+ puts 'Your .gitignore is already present so not updated.
59
+ Please ignore "config/credentials/" and "logs/"'.colorize :red
55
60
  end
56
61
  end
57
62
  end
@@ -76,14 +76,13 @@ module LeapSalesforce
76
76
  # using sfdx
77
77
  # @return [Hash] OAuth2 parameters used in connecting to salesforce
78
78
  def oauth_settings
79
- settings = {
80
- username: '<%= LeapSalesforce.api_user %>', password: LeapSalesforce.password,
79
+ {
80
+ username: '<%= LeapSalesforce.api_user %>',
81
+ password: '<%= LeapSalesforce.password + LeapSalesforce.security_token.to_s %>',
81
82
  client_id: LeapSalesforce.client_id,
82
83
  client_secret: LeapSalesforce.client_secret,
83
84
  token_url: "#{LeapSalesforce.general_url}/services/oauth2/token"
84
85
  }
85
- settings[:security_token] = LeapSalesforce.security_token if LeapSalesforce.security_token
86
- settings
87
86
  end
88
87
 
89
88
  # @return [String] General salesforce URL for logging in to
@@ -98,6 +97,8 @@ module LeapSalesforce
98
97
  else
99
98
  LeapSalesforce::Users.where(user)&.username
100
99
  end
100
+ leaps_user = LeapSalesforce::Users.where username: @api_user
101
+ LeapSalesforce.security_token = leaps_user.security_token
101
102
  Soaspec::SpecLogger.info "Using user '#{@api_user}' for API"
102
103
  end
103
104
 
@@ -0,0 +1,45 @@
1
+ require_relative 'auth'
2
+ require 'savon'
3
+ require 'json'
4
+
5
+ module LeapSalesforce
6
+ # Holds information about a login session
7
+ class Session
8
+ # @return [String] Session id returned from SOAP API
9
+ attr_accessor :session_id
10
+ # @return [String] User id returned from SOAP API
11
+ attr_accessor :user_id
12
+ # @return [Hash] Login response
13
+ attr_accessor :login_response
14
+
15
+ def initialize(username, password, security_token = '')
16
+ login_body = LeapSalesforce::Session.soap_login username, password, security_token
17
+
18
+ self.session_id = login_body[:login_response][:result][:session_id]
19
+ self.user_id = login_body[:login_response][:result][:user_id]
20
+ self.login_response = login_body[:login_response]
21
+ end
22
+
23
+ class << self
24
+
25
+ # Login via SOAP API
26
+ def soap_login(username, password, security_token)
27
+ client = Savon.client do
28
+ endpoint "#{SoqlHandler.instance_url}/services/Soap/u/51.0"
29
+ namespace "urn:partner.soap.sforce.com"
30
+ log true # See request and response. (Put this in traffic file)
31
+ log_level :debug
32
+ logger Soaspec::SpecLogger.create
33
+ pretty_print_xml true # Prints XML pretty
34
+ end
35
+
36
+ response = client.call(:login, message:
37
+ {
38
+ username: username,
39
+ password: password + security_token.to_s
40
+ })
41
+ response.body
42
+ end
43
+ end
44
+ end
45
+ end
@@ -13,10 +13,4 @@ module SoqlSettings
13
13
  def soql_object_name
14
14
  @soql_object_name || to_s
15
15
  end
16
-
17
- # @deprecated Not used, setting in '.leap_salesforce.yml' controls this now
18
- def create_enum(_set)
19
- LeapSalesforce.logger.warn "Method 'create_enum' called when it is deprecated" \
20
- " from #{caller_locations[0]}"
21
- end
22
16
  end
@@ -14,11 +14,16 @@ module LeapSalesforce
14
14
  # readable format is required such as in a Cucumber test
15
15
  attr_accessor :description
16
16
 
17
- # @param [String, Symbol] key Key used to identify a test user
18
- # @param [String] username Name used to login with user. In email address format.
17
+ # @return [String] Security token of user. Recommend this be set through ENV variable
18
+ attr_accessor :security_token
19
+
20
+ # @param [String, Symbol] user_params[0] key Key used to identify a test user
21
+ # @param [String] user_params[1] username Name used to login with user. In email address format.
22
+ # @param [String] user_params[1] security_token Security token of user
19
23
  def initialize(*user_params, description: nil)
20
24
  self.key = user_params[0]
21
25
  self.username = user_params[1]
26
+ self.security_token = ENV["#{key}_token"] || nil
22
27
  self.description = description
23
28
  end
24
29
 
@@ -2,5 +2,5 @@
2
2
 
3
3
  module LeapSalesforce
4
4
  # @return [String] Version of leap salesforce
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.1'
6
6
  end
@@ -19,6 +19,7 @@ require 'factory_bot' # For mass production of data
19
19
  require 'faker' # For fake data
20
20
  require 'leap_salesforce/error'
21
21
  require 'leap_salesforce/loader'
22
+ require 'leap_salesforce/session'
22
23
 
23
24
  # If variable is present within LeapSalesforce set it
24
25
  def load_variables_from(file)
@@ -82,3 +83,5 @@ module LeapSalesforce
82
83
 
83
84
  self.objects_to_verify = SoqlData.descendants if objects_to_verify.empty?
84
85
  end
86
+
87
+ LeapSalesforce.api_user = LeapSalesforce::Users.list.first.username
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leap_salesforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - IQA
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-01-13 00:00:00.000000000 Z
12
+ date: 2022-02-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -333,6 +333,7 @@ files:
333
333
  - lib/leap_salesforce/rake.rb
334
334
  - lib/leap_salesforce/rake/setup.rake
335
335
  - lib/leap_salesforce/rake/sfdx.rake
336
+ - lib/leap_salesforce/session.rb
336
337
  - lib/leap_salesforce/soql_data/common_enum_methods.rb
337
338
  - lib/leap_salesforce/soql_data/data_relationships.rb
338
339
  - lib/leap_salesforce/soql_data/meta_data_handler.rb