mxhero-api 1.2.3 → 1.2.8

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NDZmOTU2YmQ5ZWI3MDgyYTU1ODdiMjc5ZTllMzY1MmJlMzEwZGMwNg==
5
- data.tar.gz: !binary |-
6
- YWViNTg2OTAxMGRhYTcwOWI3NjMyMGZjMDE3YmQ3NWZmZGM3MDQ2OQ==
2
+ SHA1:
3
+ metadata.gz: 98333e3bb84f6ffadd098d5786d3ed69f25f8da4
4
+ data.tar.gz: 57e0eefff6ee290646606bd24fd0c664932c21e4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- NjEwOWYyZTA2YjdjOWFjODMwZTVkOGEyYWMyOGU2NzYxMDRhM2E0M2FiYmQ4
10
- MDc1OWZjNzY0N2RlN2Q3ZWYzZjE2NDZkYWIxZTAxYmIxZTJhODc4ZTA3OTIw
11
- N2FkMGZlODEwMWMzOTk3YTViNGVjOGQxYWNlNTE1MjBiZGMxYTk=
12
- data.tar.gz: !binary |-
13
- NzdiNzA2YzQxNWIwZmQ2MTg1M2M3YjI4MzY1ZDgyMTBlY2E3MTFhNThkMWU0
14
- NjY2ZDkzNTE5MzE2OTMwY2NhZjc3MWM4OTRhMTA5ZmM5MmU5ZWZiMzc5NGQ1
15
- MWIxNjQyMjUzZTE1OTc0MWE1ZTJlYzJlMDU2YTI4N2ZiMWI5Yzg=
6
+ metadata.gz: d7750ef9ad95224f185224cb8545fd499548ba294c8a080b7052c179935fd9ceb6eedcc1599a92b3b5a6e5d62c01eb20661413006e6ff8176a5a09016d850604
7
+ data.tar.gz: 91197d516036befbfdddc77044184f294f58f479334b19ccb45b6d9d442d69df382f08d0fb1e34fdbf7e0ca320d1f6bc0932e9bd03e1e0b9999b58df271e0e33
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.3
1
+ 1.2.8
@@ -1,6 +1,7 @@
1
1
  require 'httpclient'
2
2
  require 'json'
3
3
  require_relative 'response'
4
+ require 'base64'
4
5
 
5
6
  module MxHero
6
7
  module API
@@ -15,7 +16,7 @@ module MxHero
15
16
  # @return [HTTP::Message](http://www.rubydoc.info/gems/httpclient/HTTP/Message)
16
17
  def call(method, url, body = nil, more_options = {})
17
18
  unless @client
18
- @client ||= HTTPClient.new
19
+ @client ||= HTTPClient.new(:force_basic_auth => true)
19
20
  end
20
21
  @client.set_auth(url, @username, @password)
21
22
  response = @client.request(method, url, nil, body, headers)
@@ -28,7 +29,11 @@ module MxHero
28
29
 
29
30
  # Default headers
30
31
  def headers
31
- @headers ||= { 'Accept' => 'application/json', 'Content-Type' => 'application/json' }
32
+ {
33
+ 'Accept' => 'application/json',
34
+ 'Content-Type' => 'application/json',
35
+ "Authorization" => "Basic " + ::Base64.encode64(@username + ':' + @password).gsub("\n",''),
36
+ }.merge(@as_user ? { "X-MxHero-As-User" => @as_user } : {})
32
37
  end
33
38
 
34
39
  # @return [Hash]
@@ -98,12 +98,20 @@ module MxHero::API
98
98
 
99
99
  attr_reader :domain
100
100
 
101
+ # @param [String] domain
102
+ # @param [Hash] config the options of configuration
103
+ # @option config [String] :api_url The URL to consume the API
104
+ # @option config [String] :username The username for access the API
105
+ # @option config [String] :password The password for the user that access the API
106
+ # @option config [Boolean] :verbose (false) If true puts information about http operations
107
+ # @option config [String] :as_user Send to the API to indentify the end user (app user email)
101
108
  def initialize(domain, config = {})
102
109
  @domain = domain
103
110
  @service_url = config[:api_url]
104
111
  @username = config[:username]
105
112
  @password = config[:password]
106
113
  @verbose = config[:verbose] || false
114
+ @as_user = config[:as_user]
107
115
  end
108
116
 
109
117
 
@@ -178,7 +186,7 @@ module MxHero::API
178
186
  end
179
187
 
180
188
  def directories_url
181
- domain_by_id_url(domain) + 'adldap'
189
+ domain_by_id_url(domain) + '/adldap'
182
190
  end
183
191
  end
184
192
 
@@ -10,13 +10,19 @@ module MxHero::API
10
10
  include Communication
11
11
  include Urls
12
12
 
13
- #attr_reader :domain
14
13
 
14
+ # @param [Hash] config the options of configuration
15
+ # @option config [String] :api_url The URL to consume the API
16
+ # @option config [String] :username The username for access the API
17
+ # @option config [String] :password The password for the user that access the API
18
+ # @option config [Boolean] :verbose (false) If true puts information about http operations
19
+ # @option config [String] :as_user Send to the API to indentify the end user (app user email)
15
20
  def initialize(config = {})
16
21
  @service_url = config[:api_url]
17
- @username = config[:username]
18
- @password = config[:password]
19
- @verbose = config[:verbose] || false
22
+ @username = config[:username]
23
+ @password = config[:password]
24
+ @verbose = config[:verbose] || false
25
+ @as_user = config[:as_user]
20
26
  end
21
27
 
22
28
  def all(domain, params = {})
@@ -2,7 +2,7 @@
2
2
  require_relative 'communication'
3
3
  require_relative 'urls'
4
4
 
5
- require 'open-uri'
5
+ require 'open-uri'
6
6
  require 'delegate'
7
7
 
8
8
  module MxHero::API
@@ -24,11 +24,12 @@ module MxHero::API
24
24
  attr_reader :domain
25
25
 
26
26
  def initialize(domain, config = {})
27
- @domain = domain
27
+ @domain = domain
28
28
  @service_url = config[:api_url]
29
- @username = config[:username]
30
- @password = config[:password]
31
- @verbose = config[:verbose] || false
29
+ @username = config[:username]
30
+ @password = config[:password]
31
+ @verbose = config[:verbose] || false
32
+ @as_user = config[:as_user]
32
33
  end
33
34
 
34
35
  # Retrieve all the groups
@@ -36,7 +37,7 @@ module MxHero::API
36
37
  # @params pagination info. Ex.: page: 2, per_page: 10 or simple page: 2
37
38
  #
38
39
  # @return [PaginatedElement] that contains an array of Group elements
39
- # Basically its an Array with instances of [MxHero::API::Group] with the methods total_elements, total_pages and actual_page
40
+ # Basically its an Array with instances of [MxHero::API::Group] with the methods total_elements, total_pages and actual_page
40
41
  #
41
42
  def all(pagination = { page: nil, per_page: nil })
42
43
  response = call(:get, groups_url(pagination))
@@ -45,6 +46,12 @@ module MxHero::API
45
46
  end
46
47
  end
47
48
 
49
+ # Search available accounts
50
+ def search_accounts(term)
51
+ response = call(:get, search_accounts_url(term) ,nil, throw_exception: false)
52
+ Response.new(response.status, json_parse(response.content))
53
+ end
54
+
48
55
  # Save a new group
49
56
  #
50
57
  # @param group [MxHero::API::Group]
@@ -59,8 +66,8 @@ module MxHero::API
59
66
  #
60
67
  # @param group_name [String]
61
68
  #
62
- # @return [MxHero::API::Response] with content empty.
63
- # In case on error, may be one of the following:
69
+ # @return [MxHero::API::Response] with content empty.
70
+ # In case on error, may be one of the following:
64
71
  # + domain.group.not.found : Inexistent group
65
72
  def delete(group_name)
66
73
  response = call(:delete, group_url(group_name), nil, throw_exception: false)
@@ -86,8 +93,8 @@ module MxHero::API
86
93
  # @param group_name [String]
87
94
  # @param account_name [String]
88
95
  #
89
- # @return [MxHero::API::Response] with content empty.
90
- # In case on error, may be one of the following:
96
+ # @return [MxHero::API::Response] with content empty.
97
+ # In case on error, may be one of the following:
91
98
  # + domain.account.not.found : Inexistent account
92
99
  # + domain.group.account.already.has.group : Try to add an account to a group when already is in that
93
100
  def add_account(group_name, account_name)
@@ -98,17 +105,17 @@ module MxHero::API
98
105
  # @param group_name [String]
99
106
  # @param account_name [String]
100
107
  #
101
- # @return [MxHero::API::Response] with content empty.
102
- # In case on error, may be one of the following:
108
+ # @return [MxHero::API::Response] with content empty.
109
+ # In case on error, may be one of the following:
103
110
  # + domain.account.not.found : Inexistent account
104
111
  # + domain.group.account.not.in.group : Try to remove an account that is not in the group
105
- #
112
+ #
106
113
  def remove_account(group_name, account_name)
107
114
  response = call(:delete, group_remove_accounts_url(group_name, account_name), nil, throw_exception: false)
108
115
  wrap_response_from response
109
116
  end
110
117
 
111
- private
118
+ private
112
119
 
113
120
  def paginate_wrap(response, &block)
114
121
  raise 'an error ocurred when try to communicate with the API' if response.status != 200
@@ -118,7 +125,7 @@ module MxHero::API
118
125
 
119
126
  def wrap_response_from(response)
120
127
  content = (200..299).include?(response.code) ? group_from(response) : json_parse(response.content)
121
- Response.new(response.status, content)
128
+ Response.new(response.status, content)
122
129
  end
123
130
 
124
131
  def group_from(response)
@@ -132,7 +139,7 @@ module MxHero::API
132
139
  end
133
140
 
134
141
  def groups_url(pagination = {})
135
- domain_by_id_url(domain) + 'groups' + pagination_query(pagination)
142
+ domain_by_id_url(domain) + '/groups' + pagination_query(pagination)
136
143
  end
137
144
 
138
145
  def pagination_query(params = { page: nil, per_page: nil })
@@ -142,7 +149,7 @@ module MxHero::API
142
149
  section << "offset=#{params[:page]}" if params[:page]
143
150
  end.join('&')
144
151
  end
145
-
152
+
146
153
  def group_url(group_name)
147
154
  groups_url + "/#{URI::encode(group_name)}"
148
155
  end
@@ -154,10 +161,15 @@ module MxHero::API
154
161
  def group_add_accounts_url(group_name, account_name)
155
162
  group_accounts_url(group_name) + "/#{account_name}/add"
156
163
  end
157
-
164
+
158
165
  def group_remove_accounts_url(group_name, account_name)
159
166
  group_accounts_url(group_name) + "/#{account_name}/remove"
160
167
  end
168
+
169
+ def search_accounts_url(term)
170
+ "#{groups_url}/accounts/available?account=#{term}"
171
+ end
172
+
161
173
  end
162
174
 
163
175
 
@@ -30,11 +30,13 @@ module MxHero::API
30
30
  # @option config [String] :username The username for access the API
31
31
  # @option config [String] :password The password for the user that access the API
32
32
  # @option config [Boolean] :verbose (false) If true puts information about http operations
33
+ # @option config [String] :as_user Send to the API to indentify the end user (app user email)
33
34
  def initialize(config = {})
34
35
  @service_url = config[:api_url]
35
36
  @username = config[:username]
36
37
  @password = config[:password]
37
38
  @verbose = config[:verbose] || false
39
+ @as_user = config[:as_user]
38
40
  end
39
41
 
40
42
  # Expose directories api
@@ -42,7 +44,8 @@ module MxHero::API
42
44
  # @return MxHero::API::Directories
43
45
  def directories(domain)
44
46
  @directories ||= Directories.new(domain, api_url: @service_url,
45
- username: @username, password: @password, verbose: @verbose)
47
+ username: @username, password: @password,
48
+ verbose: @verbose, as_user: @as_user)
46
49
  end
47
50
 
48
51
  # Find a rule by domain and ID
@@ -502,7 +505,7 @@ module MxHero::API
502
505
  # Validate if the an user and password match
503
506
  #
504
507
  def valid_user_credentials?(user, password)
505
- validate_user_credential_url = user_url(user) + "password/#{password}"
508
+ validate_user_credential_url = user_url(user) + "/password/#{CGI::escape(password)}"
506
509
  response = call(:get, validate_user_credential_url)
507
510
  response.status == 204
508
511
  end
@@ -560,11 +563,11 @@ module MxHero::API
560
563
  end
561
564
 
562
565
  def user_url(user)
563
- users_url + "/#{user}/"
566
+ users_url + "/#{user}"
564
567
  end
565
568
 
566
569
  def user_domains_url(user)
567
- user_url(user) + "domains"
570
+ user_url(user) + "/domains"
568
571
  end
569
572
 
570
573
  def users_for_domain_url(domain)
@@ -572,7 +575,7 @@ module MxHero::API
572
575
  end
573
576
 
574
577
  def user_with_domain_url(user,domain)
575
- user_url(user) + "domains/#{domain}/"
578
+ user_url(user) + "/domains/#{domain}/"
576
579
  end
577
580
 
578
581
  def user_url_set_password(user,new_password)
@@ -648,7 +651,7 @@ module MxHero::API
648
651
 
649
652
  def accounts_by_domain_url(domain, filter_account = nil)
650
653
  filter = filter_account ? "?account=#{filter_account}" : ''
651
- domain_by_id_url(domain) + 'accounts' + filter
654
+ domain_by_id_url(domain) + '/accounts' + filter
652
655
  end
653
656
 
654
657
  def domain_rule_url(domain, id)
@@ -14,9 +14,10 @@ module MxHero::API
14
14
 
15
15
  def initialize(config = {})
16
16
  @service_url = config[:api_url]
17
- @username = config[:username]
18
- @password = config[:password]
19
- @verbose = config[:verbose] || false
17
+ @username = config[:username]
18
+ @password = config[:password]
19
+ @verbose = config[:verbose] || false
20
+ @as_user = config[:as_user]
20
21
  end
21
22
 
22
23
  # Retrieve all tasks for {account} in status {status}
@@ -5,15 +5,15 @@ module MxHero
5
5
  def service_url
6
6
  @service_url
7
7
  end
8
-
8
+
9
9
  def domains_url
10
10
  service_url + '/domains'
11
11
  end
12
12
 
13
13
  def domain_by_id_url(domain)
14
- domains_url + "/#{domain}/"
14
+ domains_url + "/#{domain}"
15
15
  end
16
-
16
+
17
17
  end
18
18
  end
19
19
  end
@@ -1,23 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: mxhero-api 1.2.3 ruby lib
2
+ # stub: mxhero-api 1.2.8 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "mxhero-api"
6
- s.version = "1.2.3"
6
+ s.version = "1.2.8"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib"]
9
10
  s.authors = ["Maximiliano Dello Russo", "Juan Pablo Royo", "mxHero"]
10
- s.date = "2017-01-31"
11
+ s.date = "2020-05-27"
11
12
  s.description = "A gem to provide easy access to the API of MxHero platform (http://www.mxhero.com/)"
12
13
  s.email = ["maxidr@mxhero.com", "juanpablo.royo@gmail.com", "mxhero@mxhero.com"]
13
- s.files = [".gitignore", ".ruby-gemset", ".ruby-version", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "VERSION", "lib/communication.rb", "lib/directories.rb", "lib/dto.rb", "lib/email-sync.rb", "lib/groups.rb", "lib/mxhero-api.rb", "lib/pst-converter.rb", "lib/resource.rb", "lib/resources/account.rb", "lib/resources/domain.rb", "lib/resources/group.rb", "lib/response.rb", "lib/urls.rb", "mxhero-api.gemspec", "test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts.yml", "test/fixtures/api/accounts_filtered.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/accounts_from_domain_paginated.yml", "test/fixtures/api/accounts_without_group.yml", "test/fixtures/api/add_an_inexistent_account_to_group.yml", "test/fixtures/api/add_and_remove_account.yml", "test/fixtures/api/add_feature.yml", "test/fixtures/api/all_groups.yml", "test/fixtures/api/associate_user_domain.yml", "test/fixtures/api/create_directory.yml", "test/fixtures/api/create_domain.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_user.yml", "test/fixtures/api/delete_directory.yml", "test/fixtures/api/delete_group.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/emailsync_delete.yml", "test/fixtures/api/emailsync_fetch_all.yml", "test/fixtures/api/emailsync_task_by_id.yml", "test/fixtures/api/fetch_directory.yml", "test/fixtures/api/fetch_user.yml", "test/fixtures/api/ldap_info.yml", "test/fixtures/api/move_to_trial.yml", "test/fixtures/api/pst_inactive_tasks.yml", "test/fixtures/api/refresh_directory.yml", "test/fixtures/api/remove_account_from_group_twice.yml", "test/fixtures/api/remove_inexistente_account_from_group.yml", "test/fixtures/api/rule_status.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/rules_for_domain_by_component.yml", "test/fixtures/api/save_group.yml", "test/fixtures/api/system_properties.yml", "test/fixtures/api/system_properties_create.yml", "test/fixtures/api/system_properties_element.yml", "test/fixtures/api/test_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_accounts_group_scope.yml", "test/fixtures/api/update_accounts_properties_scope.yml", "test/fixtures/api/update_directory.yml", "test/fixtures/api/update_rule.yml", "test/fixtures/api/update_user.yml", "test/fixtures/api/user_domains.yml", "test/fixtures/api/users_for_domain.yml", "test/fixtures/api/validate_user_credential.yml", "test/fixtures/domain.rb", "test/helper.rb", "test/test_directories.rb", "test/test_domain.rb", "test/test_dto.rb", "test/test_emailsync.rb", "test/test_feature.rb", "test/test_groups.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb", "test/test_pst-converter.rb", "test/test_resource.rb"]
14
+ s.files = [".gitignore", ".ruby-gemset", ".ruby-version", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", "VERSION", "lib/communication.rb", "lib/directories.rb", "lib/dto.rb", "lib/email-sync.rb", "lib/groups.rb", "lib/mxhero-api.rb", "lib/pst-converter.rb", "lib/resource.rb", "lib/resources/account.rb", "lib/resources/domain.rb", "lib/resources/group.rb", "lib/response.rb", "lib/urls.rb", "mxhero-api.gemspec", "test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts.yml", "test/fixtures/api/accounts_filtered.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/accounts_from_domain_paginated.yml", "test/fixtures/api/accounts_without_group.yml", "test/fixtures/api/add_an_inexistent_account_to_group.yml", "test/fixtures/api/add_and_remove_account.yml", "test/fixtures/api/add_feature.yml", "test/fixtures/api/all_groups.yml", "test/fixtures/api/associate_user_domain.yml", "test/fixtures/api/create_directory.yml", "test/fixtures/api/create_domain.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_user.yml", "test/fixtures/api/delete_directory.yml", "test/fixtures/api/delete_group.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/emailsync_delete.yml", "test/fixtures/api/emailsync_fetch_all.yml", "test/fixtures/api/emailsync_task_by_id.yml", "test/fixtures/api/fetch_directory.yml", "test/fixtures/api/fetch_user.yml", "test/fixtures/api/ldap_info.yml", "test/fixtures/api/move_to_trial.yml", "test/fixtures/api/pst_inactive_tasks.yml", "test/fixtures/api/refresh_directory.yml", "test/fixtures/api/remove_account_from_group_twice.yml", "test/fixtures/api/remove_inexistente_account_from_group.yml", "test/fixtures/api/rule_status.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/rules_for_domain_by_component.yml", "test/fixtures/api/save_group.yml", "test/fixtures/api/search_accounts_starts_with_a.yml", "test/fixtures/api/search_accounts_starts_with_ab.yml", "test/fixtures/api/system_properties.yml", "test/fixtures/api/system_properties_create.yml", "test/fixtures/api/system_properties_element.yml", "test/fixtures/api/test_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_accounts_group_scope.yml", "test/fixtures/api/update_accounts_properties_scope.yml", "test/fixtures/api/update_directory.yml", "test/fixtures/api/update_rule.yml", "test/fixtures/api/update_user.yml", "test/fixtures/api/user_domains.yml", "test/fixtures/api/users_for_domain.yml", "test/fixtures/api/validate_user_credential.yml", "test/fixtures/domain.rb", "test/helper.rb", "test/test_directories.rb", "test/test_domain.rb", "test/test_dto.rb", "test/test_emailsync.rb", "test/test_feature.rb", "test/test_groups.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb", "test/test_pst-converter.rb", "test/test_resource.rb"]
14
15
  s.homepage = "http://github.com/mxhero/mxhero-api"
15
16
  s.licenses = ["GPL-3"]
16
- s.require_paths = ["lib"]
17
17
  s.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
18
- s.rubygems_version = "2.1.9"
18
+ s.rubygems_version = "2.5.1"
19
19
  s.summary = "A MxHero API client for ruby"
20
- s.test_files = ["test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts.yml", "test/fixtures/api/accounts_filtered.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/accounts_from_domain_paginated.yml", "test/fixtures/api/accounts_without_group.yml", "test/fixtures/api/add_an_inexistent_account_to_group.yml", "test/fixtures/api/add_and_remove_account.yml", "test/fixtures/api/add_feature.yml", "test/fixtures/api/all_groups.yml", "test/fixtures/api/associate_user_domain.yml", "test/fixtures/api/create_directory.yml", "test/fixtures/api/create_domain.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_user.yml", "test/fixtures/api/delete_directory.yml", "test/fixtures/api/delete_group.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/emailsync_delete.yml", "test/fixtures/api/emailsync_fetch_all.yml", "test/fixtures/api/emailsync_task_by_id.yml", "test/fixtures/api/fetch_directory.yml", "test/fixtures/api/fetch_user.yml", "test/fixtures/api/ldap_info.yml", "test/fixtures/api/move_to_trial.yml", "test/fixtures/api/pst_inactive_tasks.yml", "test/fixtures/api/refresh_directory.yml", "test/fixtures/api/remove_account_from_group_twice.yml", "test/fixtures/api/remove_inexistente_account_from_group.yml", "test/fixtures/api/rule_status.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/rules_for_domain_by_component.yml", "test/fixtures/api/save_group.yml", "test/fixtures/api/system_properties.yml", "test/fixtures/api/system_properties_create.yml", "test/fixtures/api/system_properties_element.yml", "test/fixtures/api/test_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_accounts_group_scope.yml", "test/fixtures/api/update_accounts_properties_scope.yml", "test/fixtures/api/update_directory.yml", "test/fixtures/api/update_rule.yml", "test/fixtures/api/update_user.yml", "test/fixtures/api/user_domains.yml", "test/fixtures/api/users_for_domain.yml", "test/fixtures/api/validate_user_credential.yml", "test/fixtures/domain.rb", "test/helper.rb", "test/test_directories.rb", "test/test_domain.rb", "test/test_dto.rb", "test/test_emailsync.rb", "test/test_feature.rb", "test/test_groups.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb", "test/test_pst-converter.rb", "test/test_resource.rb"]
20
+ s.test_files = ["test/fixtures/api/account_properties.yml", "test/fixtures/api/account_properties_not_found.yml", "test/fixtures/api/accounts.yml", "test/fixtures/api/accounts_filtered.yml", "test/fixtures/api/accounts_from_domain.yml", "test/fixtures/api/accounts_from_domain_paginated.yml", "test/fixtures/api/accounts_without_group.yml", "test/fixtures/api/add_an_inexistent_account_to_group.yml", "test/fixtures/api/add_and_remove_account.yml", "test/fixtures/api/add_feature.yml", "test/fixtures/api/all_groups.yml", "test/fixtures/api/associate_user_domain.yml", "test/fixtures/api/create_directory.yml", "test/fixtures/api/create_domain.yml", "test/fixtures/api/create_rule_for_domain.yml", "test/fixtures/api/create_user.yml", "test/fixtures/api/delete_directory.yml", "test/fixtures/api/delete_group.yml", "test/fixtures/api/delete_rule.yml", "test/fixtures/api/domain_by_id.yml", "test/fixtures/api/domain_by_id_not_found.yml", "test/fixtures/api/domain_rule.yml", "test/fixtures/api/domains.yml", "test/fixtures/api/emailsync_delete.yml", "test/fixtures/api/emailsync_fetch_all.yml", "test/fixtures/api/emailsync_task_by_id.yml", "test/fixtures/api/fetch_directory.yml", "test/fixtures/api/fetch_user.yml", "test/fixtures/api/ldap_info.yml", "test/fixtures/api/move_to_trial.yml", "test/fixtures/api/pst_inactive_tasks.yml", "test/fixtures/api/refresh_directory.yml", "test/fixtures/api/remove_account_from_group_twice.yml", "test/fixtures/api/remove_inexistente_account_from_group.yml", "test/fixtures/api/rule_status.yml", "test/fixtures/api/rules_for_domain.yml", "test/fixtures/api/rules_for_domain_by_component.yml", "test/fixtures/api/save_group.yml", "test/fixtures/api/search_accounts_starts_with_a.yml", "test/fixtures/api/search_accounts_starts_with_ab.yml", "test/fixtures/api/system_properties.yml", "test/fixtures/api/system_properties_create.yml", "test/fixtures/api/system_properties_element.yml", "test/fixtures/api/test_domain.yml", "test/fixtures/api/update_account_properties.yml", "test/fixtures/api/update_accounts_group_scope.yml", "test/fixtures/api/update_accounts_properties_scope.yml", "test/fixtures/api/update_directory.yml", "test/fixtures/api/update_rule.yml", "test/fixtures/api/update_user.yml", "test/fixtures/api/user_domains.yml", "test/fixtures/api/users_for_domain.yml", "test/fixtures/api/validate_user_credential.yml", "test/fixtures/domain.rb", "test/helper.rb", "test/test_directories.rb", "test/test_domain.rb", "test/test_dto.rb", "test/test_emailsync.rb", "test/test_feature.rb", "test/test_groups.rb", "test/test_mxhero_api.rb", "test/test_mxhero_api_response.rb", "test/test_pst-converter.rb", "test/test_resource.rb"]
21
21
 
22
22
  if s.respond_to? :specification_version then
23
23
  s.specification_version = 4
@@ -0,0 +1,34 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/groups/accounts/available?account=a
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Basic YWRtaW46cGFzc3dvcmQ=
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - Apache-Coyote/1.1
23
+ Content-Type:
24
+ - application/json
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Date:
28
+ - Tue, 06 Jun 2017 15:17:42 GMT
29
+ body:
30
+ encoding: UTF-8
31
+ string: '{"totalElements":3,"totalPages":1,"actualPage":1,"elements":[{"account":"abuse","domain":"mxhero.com","createdDate":1395439948000,"updatedDate":1465322769000,"group":null,"dataSource":"manual","isEmailList":true,"aliases":[{"name":"abuse","domain":"mail2box.io","dataSource":"manual"},{"name":"abuse","domain":"mail2cloud.io","dataSource":"manual"},{"name":"abuse","domain":"mxhero.com","dataSource":"manual"},{"name":"abuse","domain":"mxhero.net","dataSource":"manual"},{"name":"abuse","domain":"mxheromail.com","dataSource":"manual"}],"properties":null},{"account":"antonio","domain":"mxhero.com","createdDate":1465308356000,"updatedDate":1465322769000,"group":null,"dataSource":"manual","isEmailList":false,"aliases":[{"name":"antonio","domain":"mail2box.io","dataSource":"manual"},{"name":"antonio","domain":"mail2cloud.io","dataSource":"manual"},{"name":"antonio","domain":"mxhero.com","dataSource":"manual"},{"name":"antonio","domain":"mxhero.net","dataSource":"manual"},{"name":"antonio","domain":"mxheromail.com","dataSource":"manual"},{"name":"antoniodelaheria","domain":"mail2box.io","dataSource":"manual"},{"name":"antoniodelaheria","domain":"mail2cloud.io","dataSource":"manual"},{"name":"antoniodelaheria","domain":"mxhero.com","dataSource":"manual"},{"name":"antoniodelaheria","domain":"mxhero.net","dataSource":"manual"},{"name":"antoniodelaheria","domain":"mxheromail.com","dataSource":"manual"}],"properties":null},{"account":"archive","domain":"mxhero.com","createdDate":1395439948000,"updatedDate":1465322769000,"group":null,"dataSource":"manual","isEmailList":true,"aliases":[{"name":"archive","domain":"mail2box.io","dataSource":"manual"},{"name":"archive","domain":"mail2cloud.io","dataSource":"manual"},{"name":"archive","domain":"mxhero.com","dataSource":"manual"},{"name":"archive","domain":"mxhero.net","dataSource":"manual"},{"name":"archive","domain":"mxheromail.com","dataSource":"manual"}],"properties":null}]}'
32
+ http_version:
33
+ recorded_at: Tue, 06 Jun 2017 15:17:42 GMT
34
+ recorded_with: VCR 3.0.1
@@ -0,0 +1,34 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: http://admin:password@test.mxhero.com/webapi/api/v1/domains/tesla.com/groups/accounts/available?account=ab
6
+ body:
7
+ encoding: UTF-8
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - application/json
12
+ Content-Type:
13
+ - application/json
14
+ Authorization:
15
+ - Basic YWRtaW46cGFzc3dvcmQ=
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Server:
22
+ - Apache-Coyote/1.1
23
+ Content-Type:
24
+ - application/json
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Date:
28
+ - Tue, 06 Jun 2017 15:20:32 GMT
29
+ body:
30
+ encoding: UTF-8
31
+ string: '{"totalElements":1,"totalPages":1,"actualPage":1,"elements":[{"account":"abuse","domain":"mxhero.com","createdDate":1395439948000,"updatedDate":1465322769000,"group":null,"dataSource":"manual","isEmailList":true,"aliases":[{"name":"abuse","domain":"mail2box.io","dataSource":"manual"},{"name":"abuse","domain":"mail2cloud.io","dataSource":"manual"},{"name":"abuse","domain":"mxhero.com","dataSource":"manual"},{"name":"abuse","domain":"mxhero.net","dataSource":"manual"},{"name":"abuse","domain":"mxheromail.com","dataSource":"manual"}],"properties":null}]}'
32
+ http_version:
33
+ recorded_at: Tue, 06 Jun 2017 15:20:32 GMT
34
+ recorded_with: VCR 3.0.1
@@ -116,7 +116,7 @@ class DirectoriesTest < MiniTest::Test
116
116
  override: true, dn_authenticate: 'dn_autheticate message'
117
117
  }
118
118
  directory.update_properties changes
119
- changes.keys.each { |prop| assert_equal changes[prop], directory.send(prop) }
119
+ changes.keys.each { |prop| assert_equal(changes[prop], directory.send(prop)) }
120
120
  end
121
121
 
122
122
  def test_initialize_properties
@@ -120,5 +120,21 @@ class GroupsTest < Minitest::Test
120
120
  assert_equal '?limit=10&offset=2', @groups.send(:pagination_query, per_page: 10, page: 2)
121
121
  end
122
122
 
123
+ def test_search_accounts
124
+ VCR.use_cassette('search_accounts_starts_with_a') do
125
+ response = @groups.search_accounts('a')
126
+ assert response.success?
127
+ assert_equal 3, response.msg[:totalElements]
128
+ assert_equal [ 'abuse', 'antonio', 'archive' ], response.msg[:elements].map { |e| e[:account] }
129
+ end
130
+
131
+ VCR.use_cassette('search_accounts_starts_with_ab') do
132
+ response = @groups.search_accounts('ab')
133
+ assert response.success?
134
+ assert_equal 1, response.msg[:totalElements]
135
+ assert_equal [ 'abuse' ], response.msg[:elements].map { |e| e[:account] }
136
+ end
137
+ end
138
+
123
139
  end
124
140
 
@@ -3,7 +3,7 @@ require_relative 'helper'
3
3
  class MxHeroAPITest < Minitest::Test
4
4
 
5
5
  def setup
6
- @api = MxHero::API::Client.new(username: TEST_API_USER, password: TEST_API_PASSWORD, verbose: false, api_url: TEST_API_URL)
6
+ @api = MxHero::API::Client.new(username: TEST_API_USER, password: TEST_API_PASSWORD, verbose: false, api_url: TEST_API_URL, as_user: 'tester@mxhero.com')
7
7
  end
8
8
 
9
9
  def domain
@@ -18,6 +18,7 @@ class MxHeroAPITest < Minitest::Test
18
18
  assert api.verbose?, 'Verbose state must be changed'
19
19
  end
20
20
 
21
+
21
22
  def test_update_rule
22
23
  VCR.use_cassette('update_rule') do
23
24
  rules = obtain_rules(domain)
@@ -35,6 +36,7 @@ class MxHeroAPITest < Minitest::Test
35
36
  end
36
37
  end
37
38
 
39
+ =begin
38
40
  def test_rule_status
39
41
  VCR.use_cassette('rule_status') do
40
42
  mx_domain = 'mxhero.com'
@@ -169,7 +171,7 @@ class MxHeroAPITest < Minitest::Test
169
171
  def test_delete_rule
170
172
  VCR.use_cassette('delete_rule') do
171
173
  rules = obtain_rules(domain)
172
- one_rule = rules.first
174
+ one_rule = rules.first
173
175
  response = @api.delete_rule(domain, one_rule[:id])
174
176
  assert response
175
177
  end
@@ -423,7 +425,7 @@ class MxHeroAPITest < Minitest::Test
423
425
  refute @api.valid_user_credentials?('inexistent.user', 'xxx')
424
426
  end
425
427
  end
426
-
428
+ =end
427
429
  private
428
430
 
429
431
  def delete_all_rules
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mxhero-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maximiliano Dello Russo
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-01-31 00:00:00.000000000 Z
13
+ date: 2020-05-27 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: vcr
@@ -63,9 +63,9 @@ executables: []
63
63
  extensions: []
64
64
  extra_rdoc_files: []
65
65
  files:
66
- - .gitignore
67
- - .ruby-gemset
68
- - .ruby-version
66
+ - ".gitignore"
67
+ - ".ruby-gemset"
68
+ - ".ruby-version"
69
69
  - Gemfile
70
70
  - LICENSE.txt
71
71
  - README.md
@@ -123,6 +123,8 @@ files:
123
123
  - test/fixtures/api/rules_for_domain.yml
124
124
  - test/fixtures/api/rules_for_domain_by_component.yml
125
125
  - test/fixtures/api/save_group.yml
126
+ - test/fixtures/api/search_accounts_starts_with_a.yml
127
+ - test/fixtures/api/search_accounts_starts_with_ab.yml
126
128
  - test/fixtures/api/system_properties.yml
127
129
  - test/fixtures/api/system_properties_create.yml
128
130
  - test/fixtures/api/system_properties_element.yml
@@ -158,17 +160,17 @@ require_paths:
158
160
  - lib
159
161
  required_ruby_version: !ruby/object:Gem::Requirement
160
162
  requirements:
161
- - - ! '>='
163
+ - - ">="
162
164
  - !ruby/object:Gem::Version
163
165
  version: 2.3.0
164
166
  required_rubygems_version: !ruby/object:Gem::Requirement
165
167
  requirements:
166
- - - ! '>='
168
+ - - ">="
167
169
  - !ruby/object:Gem::Version
168
170
  version: '0'
169
171
  requirements: []
170
172
  rubyforge_project:
171
- rubygems_version: 2.1.9
173
+ rubygems_version: 2.5.1
172
174
  signing_key:
173
175
  specification_version: 4
174
176
  summary: A MxHero API client for ruby
@@ -211,6 +213,8 @@ test_files:
211
213
  - test/fixtures/api/rules_for_domain.yml
212
214
  - test/fixtures/api/rules_for_domain_by_component.yml
213
215
  - test/fixtures/api/save_group.yml
216
+ - test/fixtures/api/search_accounts_starts_with_a.yml
217
+ - test/fixtures/api/search_accounts_starts_with_ab.yml
214
218
  - test/fixtures/api/system_properties.yml
215
219
  - test/fixtures/api/system_properties_create.yml
216
220
  - test/fixtures/api/system_properties_element.yml