omnicontacts 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- omnicontacts (0.2.0)
4
+ omnicontacts (0.2.1)
5
5
  json
6
6
  rack
7
7
 
data/README.md CHANGED
@@ -70,6 +70,33 @@ Yahoo requires you to configure the Permissions your application requires. Make
70
70
  Hotmail does not accept requests from localhost. This can be quite annoying during development, but unfortunately this is the way it is.
71
71
  Hotmail presents another "peculiar" feature. Their API returns a Contact object, which does not contain an e-mail field! However, if the contact has either name, family name or both set to null, than there is a field called name which does contain the e-mail address. To summarize, a Hotmail contact will only be returned if the name field contains a valid e-mail address, otherwise it will be skipped. Another consequence is that OmniContacts can provide contacts with only the `:email` key set.
72
72
 
73
+ ## Integration Testing
74
+
75
+ You can enable test mode like this:
76
+
77
+ ```ruby
78
+ OmniContacts.integration_test.enabled = true
79
+ ```
80
+
81
+ In this way all requests to `/omnicontacts/provider` will be redirected automatically to `/omnicontacts/provider/callback`.
82
+
83
+ The `mock` method allows to configure per-provider the result to return:
84
+
85
+ ```ruby
86
+ OmniContacts.integration_test.mock(:provider_name, :email => "user@example.com")
87
+ ```
88
+
89
+ You can either pass a single hash or an array of hashes. If you pass a string, an error will be triggered with subsequent redirect to `/contacts/failure?error_message=internal_error`
90
+
91
+ Follows a full example of an integration test:
92
+
93
+ ```ruby
94
+ OmniContacts.integration_test.enabled = true
95
+ OmniContacts.integration_test.mock(:gmail, :email => "user@example.com")
96
+ visit '/contacts/gmail'
97
+ page.should have_content("user@example.com")
98
+ ```
99
+
73
100
  ## License
74
101
 
75
102
  Copyright (c) 2012 Diego81
data/lib/omnicontacts.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module OmniContacts
2
2
 
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
 
5
5
  autoload :Builder, "omnicontacts/builder"
6
6
  autoload :Importer, "omnicontacts/importer"
@@ -109,7 +109,7 @@ module OmniContacts
109
109
  encoded_method = encode(method.upcase)
110
110
  encoded_url = encode(url)
111
111
  # params must be in alphabetical order
112
- encoded_params = encode(to_query_string(params.sort))
112
+ encoded_params = encode(to_query_string(params.sort { |x, y| x.to_s <=> y.to_s }))
113
113
  base_string = encoded_method + '&' + encoded_url + '&' + encoded_params
114
114
  key = encode(consumer_secret) + '&' + secret
115
115
  hmac_sha1 = OpenSSL::HMAC.digest('sha1', key, base_string)
@@ -5,7 +5,12 @@ describe OmniContacts::HTTPUtils do
5
5
 
6
6
  describe "to_query_string" do
7
7
  it "should create a query string from a map" do
8
- OmniContacts::HTTPUtils.to_query_string(:name => "john", :surname => "doe").should eq("name=john&surname=doe")
8
+ result = OmniContacts::HTTPUtils.to_query_string(:name => "john", :surname => "doe")
9
+ if result.match(/^name/)
10
+ result.should eq("name=john&surname=doe")
11
+ else
12
+ result.should eq("surname=doe&name=john")
13
+ end
9
14
  end
10
15
  end
11
16
 
@@ -1,4 +1,5 @@
1
1
  require "spec_helper"
2
+ require "omnicontacts"
2
3
  require "omnicontacts/middleware/base_oauth"
3
4
 
4
5
  describe OmniContacts::Middleware::BaseOAuth do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omnicontacts
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-05 00:00:00.000000000 Z
12
+ date: 2012-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack