zendesk2 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a5501867637d62174442f46e0f9119117c5b36b
4
- data.tar.gz: a9242b5fe3c07db88175db6254be1fa1a2b4766f
3
+ metadata.gz: 930984502b3ffcce83fd01762bb8d48a07d760d5
4
+ data.tar.gz: 901281d2b7f73eeedbb0405ab259f62d6ab920aa
5
5
  SHA512:
6
- metadata.gz: f3d724891660d349ec816798a226deddfe4a9cfbf4eed4f572b25678f981427f720e6ab0973213b1e89ffeefe9834f58b0495755055744606793e2889df4bf19
7
- data.tar.gz: 04bbf03267e9ad8a67502d9da874be66735b6069ad2faf67059d7b8f1c7df63b211a33d1272f047110ecc0ca053d1f34aa87d95e46a5d52503de0bdb11112ee6
6
+ metadata.gz: f642fe7199612809c97ec24c1f3a680ac33a270944d4205c6316bf4a6a4429224f0b09d331f1af5b4d671345b1450029be7af405d96471fadfb12064d277fa40
7
+ data.tar.gz: 76141a4780845418663435b0ef1cd769d0fe5ba5cbcc277d31df3c8978587c5f497d3802e75e1b32497bcf5e6e627c97565241ce59e90b5c8c4fe7da917dbfe3
@@ -1,7 +1,7 @@
1
1
  class Zendesk2::Client
2
2
  class Real
3
3
  def get_user_identities(params={})
4
- user_id = params["user_id"]
4
+ user_id = require_parameters(params, "user_id")
5
5
  page_params = Zendesk2.paging_parameters(params)
6
6
 
7
7
  request(
@@ -14,9 +14,9 @@ class Zendesk2::Client
14
14
 
15
15
  class Mock
16
16
  def get_user_identities(params={})
17
- user_id = params["user_id"]
17
+ user_id = require_parameters(params, "user_id")
18
18
 
19
- page(params, :identities, "/users/#{user_id}/identities.json", "identities", filter: lambda{|c| c.select{|a| a["user_id"] == user_id}})
19
+ page(params, :identities, "/users/#{user_id}/identities.json", "identities", filter: lambda { |c| c.select { |a| a["user_id"] == user_id } })
20
20
  end
21
21
  end # Mock
22
22
  end
@@ -17,25 +17,36 @@ class Zendesk2::Client
17
17
  user_id = params.delete("id")
18
18
  path = "/users/#{user_id}.json"
19
19
 
20
- if (email = params["email"]) && self.data[:identities].find { |k,i| i["type"] == "email" && i["value"] == email && i["user_id"] != user_id }
21
- error!(:invalid, details: {"email" => [ { "description" => "Email #{params["email"]} is already being used by another user" } ] })
20
+ email = params["email"]
21
+
22
+ existing_identity = self.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
23
+
24
+ if existing_identity && existing_identity["user_id"] != user_id
25
+ # email not allowed to conflict across users
26
+ error!(:invalid, details: { "email" => [ {
27
+ "description" => "Email #{params["email"]} is already being used by another user",
28
+ } ] })
29
+ elsif existing_identity && existing_identity["user_id"] == user_id
30
+ # no-op email already used
31
+ else
32
+ # add a new identity
33
+ user_identity_id = self.class.new_id # ugh
34
+
35
+ user_identity = {
36
+ "id" => user_identity_id,
37
+ "url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
38
+ "created_at" => Time.now.iso8601,
39
+ "updated_at" => Time.now.iso8601,
40
+ "type" => "email",
41
+ "value" => email,
42
+ "verified" => false,
43
+ "primary" => false,
44
+ "user_id" => user_id,
45
+ }
46
+
47
+ self.data[:identities][user_identity_id] = user_identity
22
48
  end
23
49
 
24
- user_identity_id = self.class.new_id # ugh
25
-
26
- user_identity = {
27
- "id" => user_identity_id,
28
- "url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
29
- "created_at" => Time.now.iso8601,
30
- "updated_at" => Time.now.iso8601,
31
- "type" => "email",
32
- "value" => params["email"],
33
- "verified" => false,
34
- "primary" => false,
35
- "user_id" => user_id,
36
- }
37
-
38
- self.data[:identities][user_identity_id] = user_identity
39
50
  body = self.data[:users][user_id].merge!(params)
40
51
  response(
41
52
  :method => :put,
@@ -44,6 +55,7 @@ class Zendesk2::Client
44
55
  "user" => body
45
56
  },
46
57
  )
58
+
47
59
  end
48
60
  end
49
61
  end
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
data/spec/users_spec.rb CHANGED
@@ -32,11 +32,7 @@ describe "users" do
32
32
  end
33
33
 
34
34
  describe "#save" do
35
- before(:each) do
36
- @user = client.users.create!(email: "zendesk2+#{Zendesk2.uuid}@example.org", name: Zendesk2.uuid)
37
- end
38
-
39
- let(:user) { @user }
35
+ let!(:user) { client.users.create!(email: "zendesk2+#{Zendesk2.uuid}@example.org", name: Zendesk2.uuid) }
40
36
 
41
37
  it "should update organization" do
42
38
  user.organization = organization = client.organizations.create!(name: Zendesk2.uuid)
@@ -125,22 +121,29 @@ describe "users" do
125
121
  end
126
122
 
127
123
  it "should create another identity when updating email" do
124
+ expect(user.identities.size).to eq(1)
125
+
128
126
  original_email = user.email
129
127
  user.email = (new_email = "zendesk2+#{Zendesk2.uuid}@example.org")
130
- user.save!
131
128
 
132
- expect((identities = user.identities.all).size).to eq(2)
133
- new_identity = identities.find{|i| i.value == new_email}
134
- expect(new_identity).not_to be_nil
129
+ expect {
130
+ user.save!
131
+ }.to change { user.identities.size }.by(1)
135
132
 
136
- expect(new_identity.primary).to be_falsey
133
+ new_identity = user.identities.find { |i| i.value == new_email }
137
134
 
138
- original_identity = identities.find{|i| i.value == original_email}
139
- expect(original_identity).not_to be_nil
135
+ expect(new_identity).to be
136
+ expect(new_identity.primary).to eq(false)
140
137
 
141
- expect(original_identity.primary).to be_truthy
138
+ original_identity = user.identities.find { |i| i.value == original_email }
142
139
 
140
+ expect(original_identity).to be
141
+ expect(original_identity.primary).to eq(true)
143
142
  expect(user.reload.email).to eq(original_email)
143
+
144
+ expect {
145
+ user.save!
146
+ }.not_to change { user.identities.size }
144
147
  end
145
148
 
146
149
  it "should form 'legacy' login url" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Lane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-25 00:00:00.000000000 Z
11
+ date: 2014-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable