logstash-input-salesforce 3.1.0 → 3.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 +4 -4
- data/CHANGELOG.md +7 -1
- data/docs/index.asciidoc +19 -6
- data/lib/logstash/inputs/salesforce.rb +17 -7
- data/logstash-input-salesforce.gemspec +1 -1
- data/spec/fixtures/vcr_cassettes/describe_apex_test_run_result_object.yml +162 -0
- data/spec/inputs/salesforce_spec.rb +54 -18
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 991a872d0042a97aeb4f9d7d27d6cc25fad15a62771a8a6c6b7eae9d427d55a8
|
4
|
+
data.tar.gz: 525f6d7d6796b4670dcd47faabc7dbbbd641355b763626693e5be7edfc059107
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aca114e8b09b4895136cbd398d5134e7ef2adf85d1a2e067fe7a5986940f7ec1bdf27293b07da43c95db946b873bd8cbabd30d5e2c62550bb96775f9bd15d0a2
|
7
|
+
data.tar.gz: b5f752607e86f8b9873d3c8e45477dd24007d5f97cbbd3305645608fcf185d088a7f478f7175cd4f288495f6d61e184aa038a75e1f0919c19e6516756e6e17eb
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
|
+
## 3.2.1
|
2
|
+
- Changes sensitive configs type to Password for better protection from leaks in debug logs. [#35](https://github.com/logstash-plugins/logstash-input-salesforce/pull/35)
|
3
|
+
|
4
|
+
## 3.2.0
|
5
|
+
- Added `use_tooling_api` configuration to connect to the Salesforce Tooling API instead of the regular Rest API. [#26](https://github.com/logstash-plugins/logstash-input-salesforce/pull/26)
|
6
|
+
|
1
7
|
## 3.1.0
|
2
|
-
- Added `sfdc_instance_url` configuration to connect to a specific url.
|
8
|
+
- Added `sfdc_instance_url` configuration to connect to a specific url. [#28](https://github.com/logstash-plugins/logstash-input-salesforce/pull/28)
|
3
9
|
- Switch to restforce v5+ (for logstash 8.x compatibility)
|
4
10
|
|
5
11
|
## 3.0.7
|
data/docs/index.asciidoc
CHANGED
@@ -76,15 +76,16 @@ This plugin supports the following configuration options plus the <<plugins-{typ
|
|
76
76
|
|Setting |Input type|Required
|
77
77
|
| <<plugins-{type}s-{plugin}-api_version>> |<<string,string>>|No
|
78
78
|
| <<plugins-{type}s-{plugin}-client_id>> |<<string,string>>|Yes
|
79
|
-
| <<plugins-{type}s-{plugin}-client_secret>> |<<
|
80
|
-
| <<plugins-{type}s-{plugin}-password>> |<<
|
81
|
-
| <<plugins-{type}s-{plugin}-security_token>> |<<
|
79
|
+
| <<plugins-{type}s-{plugin}-client_secret>> |<<password,password>>|Yes
|
80
|
+
| <<plugins-{type}s-{plugin}-password>> |<<password,password>>|Yes
|
81
|
+
| <<plugins-{type}s-{plugin}-security_token>> |<<password,password>>|Yes
|
82
82
|
| <<plugins-{type}s-{plugin}-sfdc_fields>> |<<array,array>>|No
|
83
83
|
| <<plugins-{type}s-{plugin}-sfdc_filters>> |<<string,string>>|No
|
84
84
|
| <<plugins-{type}s-{plugin}-sfdc_instance_url>> |<<string,string>>|No
|
85
85
|
| <<plugins-{type}s-{plugin}-sfdc_object_name>> |<<string,string>>|Yes
|
86
86
|
| <<plugins-{type}s-{plugin}-to_underscores>> |<<boolean,boolean>>|No
|
87
87
|
| <<plugins-{type}s-{plugin}-use_test_sandbox>> |<<boolean,boolean>>|No
|
88
|
+
| <<plugins-{type}s-{plugin}-use_tooling_api>> |<<boolean,boolean>>|No
|
88
89
|
| <<plugins-{type}s-{plugin}-username>> |<<string,string>>|Yes
|
89
90
|
|=======================================================================
|
90
91
|
|
@@ -118,7 +119,7 @@ https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm
|
|
118
119
|
===== `client_secret`
|
119
120
|
|
120
121
|
* This is a required setting.
|
121
|
-
* Value type is <<
|
122
|
+
* Value type is <<password,password>>
|
122
123
|
* There is no default value for this setting.
|
123
124
|
|
124
125
|
Consumer Secret from your oauth enabled connected app
|
@@ -127,7 +128,7 @@ Consumer Secret from your oauth enabled connected app
|
|
127
128
|
===== `password`
|
128
129
|
|
129
130
|
* This is a required setting.
|
130
|
-
* Value type is <<
|
131
|
+
* Value type is <<password,password>>
|
131
132
|
* There is no default value for this setting.
|
132
133
|
|
133
134
|
The password used to login to sfdc
|
@@ -136,7 +137,7 @@ The password used to login to sfdc
|
|
136
137
|
===== `security_token`
|
137
138
|
|
138
139
|
* This is a required setting.
|
139
|
-
* Value type is <<
|
140
|
+
* Value type is <<password,password>>
|
140
141
|
* There is no default value for this setting.
|
141
142
|
|
142
143
|
The security token for this account. For more information about
|
@@ -204,6 +205,18 @@ logging in through test.salesforce.com
|
|
204
205
|
Use either this or the `sfdc_instance_url` configuration option
|
205
206
|
but not both to configure the url to which the plugin connects to.
|
206
207
|
|
208
|
+
[id="plugins-{type}s-{plugin}-use_tooling_api"]
|
209
|
+
===== `use_tooling_api`
|
210
|
+
|
211
|
+
* Value type is <<boolean,boolean>>
|
212
|
+
* Default value is `false`
|
213
|
+
|
214
|
+
Set this to true to connect to the sfdc tooling api instead of the regular
|
215
|
+
sfdc rest api. See
|
216
|
+
https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling
|
217
|
+
for details about the sfdc tooling api. Use cases for the sfdc tooling api
|
218
|
+
include reading apex unit test results, flow coverage results (e.g. coverage
|
219
|
+
of elements of sfdc flows) and security health check risks.
|
207
220
|
|
208
221
|
[id="plugins-{type}s-{plugin}-username"]
|
209
222
|
===== `username`
|
@@ -49,6 +49,12 @@ class LogStash::Inputs::Salesforce < LogStash::Inputs::Base
|
|
49
49
|
config_name "salesforce"
|
50
50
|
default :codec, "plain" #not used
|
51
51
|
|
52
|
+
# Set this to true to connect via the Tooling API instead of the Rest API.
|
53
|
+
# This allows accessing information like Apex Unit Test Results,
|
54
|
+
# Flow Coverage Results, Security Health Check Risks, etc.
|
55
|
+
# See https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling
|
56
|
+
# for more details about the Tooling API
|
57
|
+
config :use_tooling_api, :validate => :boolean, :default => false
|
52
58
|
# Set this to true to connect to a sandbox sfdc instance
|
53
59
|
# logging in through test.salesforce.com
|
54
60
|
config :use_test_sandbox, :validate => :boolean, :default => false
|
@@ -66,17 +72,17 @@ class LogStash::Inputs::Salesforce < LogStash::Inputs::Base
|
|
66
72
|
# https://help.salesforce.com/apex/HTViewHelpDoc?id=connected_app_create.htm
|
67
73
|
config :client_id, :validate => :string, :required => true
|
68
74
|
# Consumer Secret from your oauth enabled connected app
|
69
|
-
config :client_secret, :validate => :
|
75
|
+
config :client_secret, :validate => :password, :required => true
|
70
76
|
# A valid salesforce user name, usually your email address.
|
71
77
|
# Used for authentication and will be the user all objects
|
72
78
|
# are created or modified by
|
73
79
|
config :username, :validate => :string, :required => true
|
74
80
|
# The password used to login to sfdc
|
75
|
-
config :password, :validate => :
|
81
|
+
config :password, :validate => :password, :required => true
|
76
82
|
# The security token for this account. For more information about
|
77
83
|
# generting a security token, see:
|
78
84
|
# https://help.salesforce.com/apex/HTViewHelpDoc?id=user_security_token.htm
|
79
|
-
config :security_token, :validate => :
|
85
|
+
config :security_token, :validate => :password, :required => true
|
80
86
|
# The name of the salesforce object you are creating or updating
|
81
87
|
config :sfdc_object_name, :validate => :string, :required => true
|
82
88
|
# These are the field names to return in the Salesforce query
|
@@ -124,17 +130,21 @@ class LogStash::Inputs::Salesforce < LogStash::Inputs::Base
|
|
124
130
|
|
125
131
|
private
|
126
132
|
def client
|
127
|
-
@
|
133
|
+
if @use_tooling_api
|
134
|
+
@client ||= Restforce.tooling client_options
|
135
|
+
else
|
136
|
+
@client ||= Restforce.new client_options
|
137
|
+
end
|
128
138
|
end
|
129
139
|
|
130
140
|
private
|
131
141
|
def client_options
|
132
142
|
options = {
|
133
143
|
:username => @username,
|
134
|
-
:password => @password,
|
135
|
-
:security_token => @security_token,
|
144
|
+
:password => @password.value,
|
145
|
+
:security_token => @security_token.value,
|
136
146
|
:client_id => @client_id,
|
137
|
-
:client_secret => @client_secret
|
147
|
+
:client_secret => @client_secret.value
|
138
148
|
}
|
139
149
|
# configure the endpoint to which restforce connects to for authentication
|
140
150
|
if @sfdc_instance_url && @use_test_sandbox
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-salesforce'
|
3
|
-
s.version = '3.1
|
3
|
+
s.version = '3.2.1'
|
4
4
|
s.licenses = ['Apache License (2.0)']
|
5
5
|
s.summary = "Creates events based on a Salesforce SOQL query"
|
6
6
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
@@ -0,0 +1,162 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://login.salesforce.com/services/oauth2/token
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: grant_type=password&client_id=xxxx&client_secret=xxxx&username=xxxx&password=xxxx
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Faraday v0.9.1
|
12
|
+
Content-Type:
|
13
|
+
- application/x-www-form-urlencoded
|
14
|
+
Accept:
|
15
|
+
- '*/*'
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Date:
|
22
|
+
- Thu, 27 Aug 2015 21:31:28 GMT
|
23
|
+
Set-Cookie:
|
24
|
+
- BrowserId=xxxx;Path=/;Domain=.salesforce.com;Expires=Mon, 26-Oct-2015 21:31:28 GMT
|
25
|
+
Expires:
|
26
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
27
|
+
Pragma:
|
28
|
+
- no-cache
|
29
|
+
Cache-Control:
|
30
|
+
- no-cache, no-store
|
31
|
+
Content-Type:
|
32
|
+
- application/json;charset=UTF-8
|
33
|
+
Transfer-Encoding:
|
34
|
+
- chunked
|
35
|
+
body:
|
36
|
+
encoding: US-ASCII
|
37
|
+
string: '{"id":"https://login.salesforce.com/id/xxxx/xxxx","issued_at":"1440711088469","token_type":"Bearer","instance_url":"https://eu2.salesforce.com","signature":"xxxx","access_token":"xxxx"}'
|
38
|
+
http_version:
|
39
|
+
recorded_at: Thu, 27 Aug 2015 21:31:28 GMT
|
40
|
+
- request:
|
41
|
+
method: get
|
42
|
+
uri: https://eu2.salesforce.com/services/data/v52.0/tooling/sobjects/ApexTestRunResult/describe
|
43
|
+
body:
|
44
|
+
encoding: US-ASCII
|
45
|
+
string: ''
|
46
|
+
headers:
|
47
|
+
User-Agent:
|
48
|
+
- Faraday v0.9.1
|
49
|
+
Authorization:
|
50
|
+
- OAuth xxxx
|
51
|
+
Accept-Encoding:
|
52
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
53
|
+
Accept:
|
54
|
+
- '*/*'
|
55
|
+
response:
|
56
|
+
status:
|
57
|
+
code: 200
|
58
|
+
message: OK
|
59
|
+
headers:
|
60
|
+
Date:
|
61
|
+
- Thu, 27 Aug 2015 21:31:29 GMT
|
62
|
+
Set-Cookie:
|
63
|
+
- BrowserId=xxxx;Path=/;Domain=.salesforce.com;Expires=Mon, 26-Oct-2015 21:31:29 GMT
|
64
|
+
Expires:
|
65
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
66
|
+
Sforce-Limit-Info:
|
67
|
+
- api-usage=204568/451000
|
68
|
+
Org.eclipse.jetty.server.include.etag:
|
69
|
+
- f3049665
|
70
|
+
Last-Modified:
|
71
|
+
- Thu, 27 Aug 2015 18:14:47 GMT
|
72
|
+
Content-Type:
|
73
|
+
- application/json;charset=UTF-8
|
74
|
+
Etag:
|
75
|
+
- f304966-gzip"
|
76
|
+
Transfer-Encoding:
|
77
|
+
- chunked
|
78
|
+
body:
|
79
|
+
encoding: UTF-8
|
80
|
+
string: '{"actionOverrides":[],"activateable":false,"associateEntityType":null,"associateParentEntity":null,"childRelationships":[],"compactLayoutable":false,"createable":true,"custom":false,"customSetting":false,"deepCloneable":false,"defaultImplementation":null,
|
81
|
+
"deletable":true,"deprecatedAndHidden":false,"extendedBy":null,"extendsInterfaces":null,"feedEnabled":false,"fields":[{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":18,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,
|
82
|
+
"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":false,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":true,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,
|
83
|
+
"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":true,
|
84
|
+
"inlineHelpText":null,"label":"ApexTestRunResult ID","length":18,"mask":null,"maskType":null,"name":"Id","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,
|
85
|
+
"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"tns:ID","sortable":true,"type":"id",
|
86
|
+
"unique":false,"updateable":false,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":18,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":true,"compoundFieldName":null,
|
87
|
+
"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,
|
88
|
+
"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Apex Job ID","length":18,"mask":null,
|
89
|
+
"maskType":null,"name":"AsyncApexJobId","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":["AsyncApexJob"],
|
90
|
+
"relationshipName":"AsyncApexJob","relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"tns:ID","sortable":true,"type":"reference","unique":true,"updateable":true,
|
91
|
+
"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":18,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,
|
92
|
+
"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,
|
93
|
+
"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"User ID","length":18,"mask":null,"maskType":null,"name":"UserId",
|
94
|
+
"nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":["User"],"relationshipName":"User","relationshipOrder":null,
|
95
|
+
"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"tns:ID","sortable":true,"type":"reference","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,
|
96
|
+
"autoNumber":false,"byteLength":765,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,
|
97
|
+
"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,
|
98
|
+
"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Name of the job","length":255,"mask":null,"maskType":null,"name":"JobName","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,
|
99
|
+
"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,
|
100
|
+
"searchPrefilterable":false,"soapType":"xsd:string","sortable":true,"type":"string","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":false,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,
|
101
|
+
"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":false,"defaultValueFormula":null,"defaultedOnCreate":true,"dependentPicklist":false,
|
102
|
+
"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,
|
103
|
+
"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"allTests","length":0,"mask":null,"maskType":null,"name":"IsAllTests","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],
|
104
|
+
"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,
|
105
|
+
"soapType":"xsd:boolean","sortable":true,"type":"boolean","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":765,"calculated":false,"calculatedFormula":null,
|
106
|
+
"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,
|
107
|
+
"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,
|
108
|
+
"inlineHelpText":null,"label":"Client that kicked off the test run","length":255,"mask":null,"maskType":null,"name":"Source","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,
|
109
|
+
"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:string","sortable":true,
|
110
|
+
"type":"string","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,
|
111
|
+
"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,
|
112
|
+
"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":false,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,
|
113
|
+
"label":"Start time of the test run","length":0,"mask":null,"maskType":null,"name":"StartTime","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,
|
114
|
+
"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:dateTime","sortable":true,"type":"datetime","unique":false,
|
115
|
+
"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,
|
116
|
+
"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,
|
117
|
+
"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":false,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"End time of the test run","length":0,"mask":null,"maskType":null,
|
118
|
+
"name":"EndTime","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,
|
119
|
+
"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:dateTime","sortable":true,"type":"datetime","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,
|
120
|
+
"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,
|
121
|
+
"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":9,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,
|
122
|
+
"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Time(ms) actually spent running tests","length":0,"mask":null,"maskType":null,"name":"TestTime","nameField":false,
|
123
|
+
"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,
|
124
|
+
"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,
|
125
|
+
"autoNumber":false,"byteLength":765,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,
|
126
|
+
"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":0,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,
|
127
|
+
"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Status of the test run","length":255,"mask":null,"maskType":null,"name":"Status","nameField":false,"namePointing":false,"nillable":false,
|
128
|
+
"permissionable":false,"picklistValues":[{"active":true,"defaultValue":false,"label":"Queued","validFor":null,"value":"Queued"},{"active":true,"defaultValue":false,"label":"Processing","validFor":null,"value":"Processing"},{"active":true,"defaultValue":false,
|
129
|
+
"label":"Aborted","validFor":null,"value":"Aborted"},{"active":true,"defaultValue":false,"label":"Completed","validFor":null,"value":"Completed"},{"active":true,"defaultValue":false,"label":"Failed","validFor":null,"value":"Failed"},{"active":true,
|
130
|
+
"defaultValue":false,"label":"Preparing","validFor":null,"value":"Preparing"},{"active":true,"defaultValue":false,"label":"Holding","validFor":null,"value":"Holding"}],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,
|
131
|
+
"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":true,"scale":0,"searchPrefilterable":false,"soapType":"xsd:string","sortable":true,"type":"picklist","unique":false,
|
132
|
+
"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,
|
133
|
+
"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":9,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,
|
134
|
+
"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Number of classes enqueued in this test run",
|
135
|
+
"length":0,"mask":null,"maskType":null,"name":"ClassesEnqueued","nameField":false,"namePointing":false,"nillable":false,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,
|
136
|
+
"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false},
|
137
|
+
{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,
|
138
|
+
"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":9,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,
|
139
|
+
"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Number of classes completed in this test run","length":0,"mask":null,"maskType":null,"name":"ClassesCompleted",
|
140
|
+
"nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,
|
141
|
+
"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,
|
142
|
+
"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,
|
143
|
+
"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":9,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,
|
144
|
+
"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Number of methods enqueued in this test run","length":0,"mask":null,"maskType":null,"name":"MethodsEnqueued","nameField":false,"namePointing":false,
|
145
|
+
"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,
|
146
|
+
"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,
|
147
|
+
"calculated":false,"calculatedFormula":null,"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,
|
148
|
+
"deprecatedAndHidden":false,"digits":9,"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,
|
149
|
+
"htmlFormatted":false,"idLookup":false,"inlineHelpText":null,"label":"Number of methods completed in this test run","length":0,"mask":null,"maskType":null,"name":"MethodsCompleted","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,
|
150
|
+
"picklistValues":[],"polymorphicForeignKey":false,"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,
|
151
|
+
"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false},{"aggregatable":true,"aiPredictionField":false,"autoNumber":false,"byteLength":0,"calculated":false,"calculatedFormula":null,
|
152
|
+
"cascadeDelete":false,"caseSensitive":false,"compoundFieldName":null,"controllerName":null,"createable":true,"custom":false,"defaultValue":null,"defaultValueFormula":null,"defaultedOnCreate":false,"dependentPicklist":false,"deprecatedAndHidden":false,"digits":9,
|
153
|
+
"displayLocationInDecimal":false,"encrypted":false,"externalId":false,"extraTypeInfo":null,"filterable":true,"filteredLookupInfo":null,"formulaTreatNullNumberAsZero":false,"groupable":true,"highScaleNumber":false,"htmlFormatted":false,"idLookup":false,
|
154
|
+
"inlineHelpText":null,"label":"Number of methods failed in this test run","length":0,"mask":null,"maskType":null,"name":"MethodsFailed","nameField":false,"namePointing":false,"nillable":true,"permissionable":false,"picklistValues":[],"polymorphicForeignKey":false,
|
155
|
+
"precision":0,"queryByDistance":false,"referenceTargetField":null,"referenceTo":[],"relationshipName":null,"relationshipOrder":null,"restrictedDelete":false,"restrictedPicklist":false,"scale":0,"searchPrefilterable":false,"soapType":"xsd:int","sortable":true,
|
156
|
+
"type":"int","unique":false,"updateable":true,"writeRequiresMasterRead":false}],"hasSubtypes":false,"implementedBy":null,"implementsInterfaces":null,"isInterface":false,"isSubtype":false,"keyPrefix":"05m","label":"Apex Test Run Result",
|
157
|
+
"labelPlural":"Apex Test Run Result","layoutable":false,"listviewable":null,"lookupLayoutable":null,"mergeable":false,"mruEnabled":false,"name":"ApexTestRunResult","namedLayoutInfos":[],"networkScopeFieldName":null,"queryable":true,"recordTypeInfos":[],
|
158
|
+
"replicateable":false,"retrieveable":true,"searchLayoutable":false,"searchable":false,"sobjectDescribeOption":"FULL","supportedScopes":[{"label":"All apex test run results","name":"everything"}],"triggerable":false,"undeletable":false,"updateable":true,
|
159
|
+
"urls":{"rowTemplate":"/services/data/v52.0/tooling/sobjects/ApexTestRunResult/{ID}","describe":"/services/data/v52.0/tooling/sobjects/ApexTestRunResult/describe","sobject":"/services/data/v52.0/tooling/sobjects/ApexTestRunResult"}}'
|
160
|
+
http_version:
|
161
|
+
recorded_at: Thu, 27 Aug 2015 21:31:30 GMT
|
162
|
+
recorded_with: VCR 2.9.3
|
@@ -8,10 +8,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
8
8
|
let(:options) do
|
9
9
|
{
|
10
10
|
"client_id" => "",
|
11
|
-
"client_secret" => "",
|
11
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
12
12
|
"username" => "",
|
13
|
-
"password" => "",
|
14
|
-
"security_token" => "",
|
13
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
14
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
15
15
|
"sfdc_object_name" => ""
|
16
16
|
}
|
17
17
|
end
|
@@ -35,10 +35,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
35
35
|
let(:options) do
|
36
36
|
{
|
37
37
|
"client_id" => "",
|
38
|
-
"client_secret" => "",
|
38
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
39
39
|
"username" => "",
|
40
|
-
"password" => "",
|
41
|
-
"security_token" => "",
|
40
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
41
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
42
42
|
"sfdc_object_name" => "Lead",
|
43
43
|
"sfdc_fields" => ["Something"]
|
44
44
|
}
|
@@ -67,10 +67,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
67
67
|
let(:options) do
|
68
68
|
{
|
69
69
|
"client_id" => "",
|
70
|
-
"client_secret" => "",
|
70
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
71
71
|
"username" => "",
|
72
|
-
"password" => "",
|
73
|
-
"security_token" => "",
|
72
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
73
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
74
74
|
"sfdc_object_name" => "Lead"
|
75
75
|
}
|
76
76
|
end
|
@@ -94,10 +94,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
94
94
|
let(:options) do
|
95
95
|
{
|
96
96
|
"client_id" => "",
|
97
|
-
"client_secret" => "",
|
97
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
98
98
|
"username" => "",
|
99
|
-
"password" => "",
|
100
|
-
"security_token" => "",
|
99
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
100
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
101
101
|
"sfdc_object_name" => "Lead",
|
102
102
|
"sfdc_fields" => ["Id", "IsDeleted", "LastName", "FirstName", "Salutation"],
|
103
103
|
"sfdc_filters" => "Email LIKE '%@elastic.co'"
|
@@ -137,10 +137,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
137
137
|
let(:options) do
|
138
138
|
{
|
139
139
|
"client_id" => "",
|
140
|
-
"client_secret" => "",
|
140
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
141
141
|
"username" => "",
|
142
|
-
"password" => "",
|
143
|
-
"security_token" => "",
|
142
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
143
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
144
144
|
"sfdc_instance_url" => "my-domain.my.salesforce.com",
|
145
145
|
"sfdc_object_name" => "Lead"
|
146
146
|
}
|
@@ -165,10 +165,10 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
165
165
|
let(:options) do
|
166
166
|
{
|
167
167
|
"client_id" => "",
|
168
|
-
"client_secret" => "",
|
168
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
169
169
|
"username" => "",
|
170
|
-
"password" => "",
|
171
|
-
"security_token" => "",
|
170
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
171
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
172
172
|
"sfdc_instance_url" => "my-domain.my.salesforce.com",
|
173
173
|
"sfdc_object_name" => "Lead",
|
174
174
|
"use_test_sandbox" => true
|
@@ -181,5 +181,41 @@ RSpec.describe LogStash::Inputs::Salesforce do
|
|
181
181
|
end
|
182
182
|
end
|
183
183
|
end
|
184
|
+
|
185
|
+
context "use Tooling Api" do
|
186
|
+
VCR.configure do |config|
|
187
|
+
config.cassette_library_dir = File.join(File.dirname(__FILE__), '..', 'fixtures', 'vcr_cassettes')
|
188
|
+
config.hook_into :webmock
|
189
|
+
config.before_record do |i|
|
190
|
+
if i.response.body.encoding.to_s == 'ASCII-8BIT'
|
191
|
+
# required because sfdc doesn't send back the content encoding and it
|
192
|
+
# confuses the yaml parser
|
193
|
+
json_body = JSON.load(i.response.body.encode("ASCII-8BIT").force_encoding("utf-8"))
|
194
|
+
i.response.body = json_body.to_json
|
195
|
+
i.response.update_content_length_header
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
let(:options) do
|
200
|
+
{
|
201
|
+
"api_version" => "52.0",
|
202
|
+
"client_id" => "",
|
203
|
+
"client_secret" => ::LogStash::Util::Password.new("secret-key"),
|
204
|
+
"username" => "",
|
205
|
+
"password" => ::LogStash::Util::Password.new("secret-password"),
|
206
|
+
"security_token" => ::LogStash::Util::Password.new("secret-token"),
|
207
|
+
"use_tooling_api" => true,
|
208
|
+
"sfdc_object_name" => "ApexTestRunResult"
|
209
|
+
}
|
210
|
+
end
|
211
|
+
let(:input) { LogStash::Inputs::Salesforce.new(options) }
|
212
|
+
subject { input }
|
213
|
+
it "should use the Tooling Api Query resource path" do
|
214
|
+
VCR.use_cassette("describe_apex_test_run_result_object",:decode_compressed_response => true) do
|
215
|
+
subject.register
|
216
|
+
expect(subject.send(:client).send(:api_path, "query")).to eq('/services/data/v52.0/tooling/query')
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
184
220
|
end
|
185
221
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-salesforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.1
|
4
|
+
version: 3.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Russ Savage
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,6 +151,7 @@ files:
|
|
151
151
|
- docs/index.asciidoc
|
152
152
|
- lib/logstash/inputs/salesforce.rb
|
153
153
|
- logstash-input-salesforce.gemspec
|
154
|
+
- spec/fixtures/vcr_cassettes/describe_apex_test_run_result_object.yml
|
154
155
|
- spec/fixtures/vcr_cassettes/describe_lead_object.yml
|
155
156
|
- spec/fixtures/vcr_cassettes/load_some_lead_objects.yml
|
156
157
|
- spec/fixtures/vcr_cassettes/login_into_mydomain.yml
|
@@ -177,11 +178,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
178
|
- !ruby/object:Gem::Version
|
178
179
|
version: '0'
|
179
180
|
requirements: []
|
180
|
-
rubygems_version: 3.
|
181
|
+
rubygems_version: 3.2.33
|
181
182
|
signing_key:
|
182
183
|
specification_version: 4
|
183
184
|
summary: Creates events based on a Salesforce SOQL query
|
184
185
|
test_files:
|
186
|
+
- spec/fixtures/vcr_cassettes/describe_apex_test_run_result_object.yml
|
185
187
|
- spec/fixtures/vcr_cassettes/describe_lead_object.yml
|
186
188
|
- spec/fixtures/vcr_cassettes/load_some_lead_objects.yml
|
187
189
|
- spec/fixtures/vcr_cassettes/login_into_mydomain.yml
|