leanback 0.3.0 → 0.3.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.
data/Changelog.rdoc CHANGED
@@ -1,5 +1,9 @@
1
+ =Leanback 0.3.1
2
+ December 5,2011
3
+ * Added ability to change password for non-admin users.
4
+
1
5
  =Leanback 0.3.0
2
- Nvember 20,2011
6
+ November 20,2011
3
7
  * Added CouchDB Security features: working with admin and non-admin users, authentication, adding security objects to databases. See documentation for details.
4
8
 
5
9
  November 9,2011:-
data/README.md CHANGED
@@ -21,7 +21,7 @@ This project is still under development. Not complete by any means. I made this
21
21
 
22
22
  + Working with [CouchDB Views](http://www.whisperservers.com/leanback/design-documents-and-permanent-views/)
23
23
 
24
- + [Error Handling](http://www.whisperservers.com/ragios/ragios-saint-ruby/status-reports/)
24
+ + [Error Handling](http://www.whisperservers.com/leanback/error-handling/)
25
25
 
26
26
  + [CouchDB Configuration](http://www.whisperservers.com/leanback/couchdb-configuration/)
27
27
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
data/leanback.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{leanback}
8
- s.version = "0.3.0"
8
+ s.version = "0.3.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Obi Akubue}]
12
- s.date = %q{2011-11-21}
12
+ s.date = %q{2011-12-05}
13
13
  s.description = %q{lightweight Ruby interface to CouchDB}
14
14
  s.email = %q{obioraakubue@yahoo.com}
15
15
  s.extra_rdoc_files = [
data/lib/leanback.rb CHANGED
@@ -11,6 +11,21 @@ end
11
11
 
12
12
  module Couchdb
13
13
 
14
+ def self.salt
15
+ o = [('a'..'z'),('A'..'Z')].map{|i| i.to_a}.flatten;
16
+ salt = (0..50).map{ o[rand(o.length)] }.join;
17
+ end
18
+
19
+ #change non-admin user password
20
+ def self.change_password(username, new_password,auth_session = "")
21
+ salty = salt()
22
+ password_sha = Digest::SHA1.hexdigest(new_password + salty)
23
+ user_id = 'org.couchdb.user:' + username
24
+ data = {"salt" => salty,"password_sha" => password_sha}
25
+ doc = { :database => '_users', :doc_id => user_id, :data => data}
26
+ update_doc doc,auth_session
27
+ end
28
+
14
29
  #add a new user
15
30
  def self.add_user(user, auth_session="")
16
31
  o = [('a'..'z'),('A'..'Z')].map{|i| i.to_a}.flatten;
@@ -255,6 +255,23 @@ it "create a new non-admin user, login user, retrieve user and delete the user"
255
255
  end
256
256
 
257
257
 
258
+ it "should non-admin user password, verify new password" do
259
+ user = { :username => "another_sample_user", :password => "trusted", :roles => []}
260
+ hash = Couchdb.add_user(user)
261
+ hash["ok"].should == true
262
+ hash["id"].should == 'org.couchdb.user:another_sample_user'
263
+
264
+ Couchdb.change_password(username = 'another_sample_user', new_password = "brown", @@auth_session)
265
+ hash = Couchdb.login(username = 'another_sample_user',password ='brown')
266
+ hash.has_key?("AuthSession").should == true
267
+
268
+ lambda {Couchdb.login(username = 'another_sample_user',password ='trusted')}.should raise_error(CouchdbException,"CouchDB: Error - unauthorized. Reason - Name or password is incorrect.")
269
+
270
+ doc = {:database => '_users', :doc_id => 'org.couchdb.user:another_sample_user'}
271
+ hash = Couchdb.delete_doc doc,@@auth_session
272
+
273
+ end
274
+
258
275
  it "should switch to default bind address" do
259
276
  data = {:section => "httpd",
260
277
  :key => "port",
data/test/main.rb CHANGED
@@ -15,6 +15,15 @@ hash = Couchdb.login(username = 'obi',password ='trusted')
15
15
 
16
16
  auth_session = hash["AuthSession"]
17
17
 
18
+ new_password = 'ninja'
19
+ puts new_password
20
+ puts Couchdb.change_password(username = 'kent', new_password, auth_session)
21
+
22
+ hash = Couchdb.login(username ,new_password)
23
+ user_auth_session = hash["AuthSession"]
24
+
25
+ puts user_auth_session
26
+
18
27
  #data = {:section => "httpd",
19
28
  # :key => "port"}
20
29
 
@@ -29,8 +38,8 @@ data = { :admins => {"names" => ["david"], "roles" => ["admin"]},
29
38
  }
30
39
 
31
40
  #hash = Couchdb.set_security("contacts",data,auth_session)
32
- hash = Couchdb.get_security("contacts",auth_session)
33
- puts hash.inspect
41
+ # hash = Couchdb.get_security("contacts",auth_session)
42
+ # puts hash.inspect
34
43
 
35
44
  data = {:section => "admins",
36
45
  :key => "sample_admin",
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: leanback
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - Obi Akubue
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-11-21 00:00:00 Z
13
+ date: 2011-12-05 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -130,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- hash: 154128161
133
+ hash: -997748307
134
134
  segments:
135
135
  - 0
136
136
  version: "0"