spec/ldap_adapter_spec.rb in dm-ldap-adapter-0.3.5 vs spec/ldap_adapter_spec.rb in dm-ldap-adapter-0.4.0.alpha2

- old
+ new

@@ -1,245 +1,232 @@ $LOAD_PATH << File.dirname(__FILE__) require 'spec_helper' -[ - :default, - :ldap, - :memory -].each do |adapter| +describe DataMapper::Adapters::LdapAdapter do - puts "#{DataMapper.repository(adapter).adapter.class.name}" - - describe "A #{DataMapper.repository(adapter).adapter.class.name}" do + before(:each) do + DataMapper.repository(:ldap) do + User.all.destroy! + @user1 = User.create(:login => "black", :name => 'Black', :age => 0) + @user2 = User.create(:login => "brown", :name => 'Brown', :age => 25) + @user3 = User.create(:login => "blue", :name => 'Blue', :age => nil) + end + end - before(:each) do - DataMapper.repository(adapter) do - @user1 = User.create(:login => "black", :name => 'Black', :age => 0) - @user2 = User.create(:login => "brown", :name => 'Brown', :age => 25) - @user3 = User.create(:login => "blue", :name => 'Blue', :age => nil) - end + it 'should create an uid' do + class User + # put the assert here + dn_prefix { |user| user.id.should_not == nil; "uid=#{user.login}"} end - - after(:each) do - DataMapper.repository(adapter) do - @user1.destroy - @user2.destroy - @user3.destroy - end - end - it 'should create an uid' do - class User - # put the assert here - dn_prefix { |user| user.id.should_not == nil; "uid=#{user.login}"} - end - - DataMapper.repository(adapter) do - id = @user1.id - @user1.destroy - @user1 = User.create(:login => "black", :name => 'Black', :age => 0) - @user1.id.should_not == id - end + DataMapper.repository(:ldap) do + id = @user1.id + @user1.destroy + @user1 = User.create(:login => "black", :name => 'Black', :age => 0) + @user1.id.should_not == id end + end - it 'should successfully save an object' do - DataMapper.repository(adapter) do - @user1.new_record?.should be_false - User.first(:login => @user1.login).new_record?.should be_false - end + it 'should successfully save an object' do + DataMapper.repository(:ldap) do + @user1.new?.should be_false + User.first(:login => @user1.login).new?.should be_false end + end - it 'should raise an error when trying to create an entity with already used key' do - DataMapper.repository(adapter) do - #p User.first(:login => "black") - lambda { User.create(:login => "black", :name => 'Black', :age => 0) }.should raise_error + it 'should raise an error when trying to create an entity with already used key' do + DataMapper.repository(:ldap) do + #p User.first(:login => "black") + lambda { User.create(:login => "black", :name => 'Black', :age => 0) }.should raise_error #p User.all - end end + end - it 'should be able to get all the objects' do - DataMapper.repository(adapter) do - User.all(:login.like => "b%").should == [@user1, @user2, @user3] - end + it 'should be able to get all the objects' do + DataMapper.repository(:ldap) do + User.all(:login.like => "b%").should == [@user1, @user2, @user3] end + end - it 'should be able to search for objects with equal value' do - DataMapper.repository(adapter) do - User.all(:name => "Brown").should == [@user2] - User.all(:age => 25).should == [@user2] - end + it 'should be able to search with empty result' do + DataMapper.repository(:ldap) do + User.all(:name => "blablublo").should == [] end + end - it 'should be able to search for objects included in an array of values' do - DataMapper.repository(adapter) do - User.all(:age => [ 25, 50, 75, 100 ]).should == [@user2] - end + it 'should be able to search for objects with equal value' do + DataMapper.repository(:ldap) do + User.all(:name => "Brown").should == [@user2] + User.all(:age => 25).should == [@user2] end + end - #it 'should be able to search for objects included in a range of values' do - # User.all(:age => 25..100).should == [@user2] - #end + it 'should be able to search for objects included in an array of values' do + DataMapper.repository(:ldap) do + User.all(:age => [ 25, 50, 75, 100 ]).should == [@user2] + end + end - it 'should be able to search for objects with nil value' do - DataMapper.repository(adapter) do - User.all(:age => nil, :name.like => "B%").should == [@user3] - end + #it 'should be able to search for objects included in a range of values' do + # User.all(:age => 25..100).should == [@user2] + #end + + it 'should be able to search for objects with nil value' do + DataMapper.repository(:ldap) do + User.all(:age => nil, :name.like => "B%").should == [@user3] end + end - if adapter != :default - it 'should be able to search for objects with not equal value' do - DataMapper.repository(adapter) do - User.all(:age.not => 25, :name.like => "B%").should == [@user1, @user3] - end - end - - it 'should be able to search for objects not included in an array of values' do - DataMapper.repository(adapter) do - User.all(:age.not => [ 25, 50, 75, 100 ], :name.like => "B%").should == [@user1, @user3] - end - end - else - puts - puts "NOTE" - puts "==================================================" - puts - puts "sqlite3 handles NULL different from values, i.e." - puts "select * from users where name = 'sd';" - puts "and" - puts "select * from users where name != 'sd';" - puts "gives the same result when all names are NULL !!!" - puts - puts "==================================================" - puts + it 'should be able to search for objects with not equal value' do + DataMapper.repository(:ldap) do + User.all(:age.not => 25, :name.like => "B%").should == [@user1, @user3] end + end - it 'should be able to search for objects with not equal value' do - DataMapper.repository(adapter) do - User.all(:age.not => nil, :name.like => "B%").should == [@user1, @user2] - end + it 'should be able to search for objects not included in an array of values' do + DataMapper.repository(:ldap) do + User.all(:age.not => [ 25, 50, 75, 100 ], :name.like => "B%").should == [@user1, @user3] end + end - it 'should search objects with or conditions' do - if adapter == :ldap - DataMapper.repository(adapter) do - User.all(:age.not => nil, :conditions => ["name='Black' or name='Blue'"]).should == [@user1] - User.all(:age.not => nil, :conditions => ["name='Black' or name='Brown'"]).should == [@user1, @user2] - User.all(:age => nil, :conditions => ["name='Black' or name='Brown'"]).should == [] - User.all(:age => nil, :conditions => ["name='Black' or name='Brown' or name='Blue'"]).should == [@user3] - User.all(:conditions => ["name='Black' or name='Brown' or name='Blue'"]).should == [@user1, @user2, @user3] - User.all(:conditions => ["name='Black'"]).should == [@user1] - User.all(:conditions => ["name like 'Bl%'"]).should == [@user1, @user3] - User.all(:conditions => ["name like 'B%'"]).should == [@user1, @user2, @user3] - User.all(:conditions => ["name like 'X%X_X'"]).should == [] -User.all(:conditions => ["name like 'Bla%' or name like 'Br%'"]).should == [@user1, @user2] - end - end + it 'should be able to search for objects with not equal value' do + DataMapper.repository(:ldap) do + User.all(:age.not => nil, :name.like => "B%").should == [@user1, @user2] end + end + it 'should search objects with or conditions' do + DataMapper.repository(:ldap) do + User.all(:age.not => nil, :conditions => ["name='Black' or name='Blue'"]).should == [@user1] + User.all(:age.not => nil, :conditions => ["name='Black' or name='Brown'"]).should == [@user1, @user2] + User.all(:age => nil, :conditions => ["name='Black' or name='Brown'"]).should == [] + User.all(:age => nil, :conditions => ["name='Black' or name='Brown' or name='Blue'"]).should == [@user3] + User.all(:conditions => ["name='Black' or name='Brown' or name='Blue'"]).should == [@user1, @user2, @user3] + User.all(:conditions => ["name='Black'"]).should == [@user1] + User.all(:conditions => ["name like 'Bl%'"]).should == [@user1, @user3] + User.all(:conditions => ["name like 'B%'"]).should == [@user1, @user2, @user3] + User.all(:conditions => ["name like 'X%X_X'"]).should == [] + User.all(:conditions => ["name like 'Bla%' or name like 'Br%'"]).should == [@user1, @user2] + end + end - # it 'should be able to search for objects not included in a range of values' do - # User.all(:age.not => 25..100).should == [@user1, @user3] - # end - # it 'should be able to search for objects with not nil value' do - # User.all(:age.not => 25, :name.like => "B%").should == [@user1, @user2] - # end + # it 'should be able to search for objects not included in a range of values' do + # User.all(:age.not => 25..100).should == [@user1, @user3] + # end - it 'should be able to search for objects that match value' do - DataMapper.repository(adapter) do - User.all(:name.like => 'Bl%').should == [@user1, @user3] - end + # it 'should be able to search for objects with not nil value' do + # User.all(:age.not => 25, :name.like => "B%").should == [@user1, @user2] + # end + + it 'should be able to search for objects that match value' do + DataMapper.repository(:ldap) do + User.all(:name.like => 'Bl%').should == [@user1, @user3] end + end - #it 'should be able to search for objects with value greater than' do - # User.all(:age.gt => 0).should == [@user2] - #end + #it 'should be able to search for objects with value greater than' do + # User.all(:age.gt => 0).should == [@user2] + #end - #it 'should be able to search for objects with value greater than or equal to' do - # User.all(:age.gte => 0).should == [@user1, @user2] - #end + #it 'should be able to search for objects with value greater than or equal to' do + # User.all(:age.gte => 0).should == [@user1, @user2] + #end - #it 'should be able to search for objects with value less than' do - # User.all(:age.lt => 1).should == [@user1] - #end + #it 'should be able to search for objects with value less than' do + # User.all(:age.lt => 1).should == [@user1] + #end - #it 'should be able to search for objects with value less than or equal to' do - # User.all(:age.lte => 0).should == [@user1] - #end + #it 'should be able to search for objects with value less than or equal to' do + # User.all(:age.lte => 0).should == [@user1] + #end - it 'should be able to update an object' do - DataMapper.repository(adapter) do - @user1 = User.get(@user1.id) - @user1.age = 10 - @user1.save - User.get(@user1.id).age.should == 10 - @user1.age = 70 - @user1.save - User.get(@user1.id).age.should == 70 - end + it 'should be able to update an object' do + DataMapper.repository(:ldap) do + @user1 = User.get(@user1.id) + @user1.age = 10 + @user1.save + User.get(@user1.id).age.should == 10 + @user1.age = 70 + @user1.save + User.get(@user1.id).age.should == 70 end + end - it 'should be able to update an object with nil' do - DataMapper.repository(adapter) do + it 'should be able to update an object with nil' do + DataMapper.repository(:ldap) do + begin @user1 = User.get(@user1.id) @user1.age = nil @user1.save User.get(@user1.id).age.should be_nil @user1.age = 70 @user1.save User.get(@user1.id).age.should == 70 + rescue => e + puts e + puts e.backtrace.join "\n\t" + raise e end end + end - it 'should be able to destroy an object' do - DataMapper.repository(adapter) do - size = User.all.size - @user1.destroy - User.all.size.should == size - 1 - end + it 'should be able to destroy an object' do + DataMapper.repository(:ldap) do + size = User.all.size + @user1.destroy + User.all.size.should == size - 1 end + end - it 'should work with transactions' do - DataMapper.repository(adapter) do + it 'should work with transactions' do + DataMapper.repository(:ldap) do + begin User.transaction do user = User.get(@user3.id) user.name = "B new" user.save User.get(@user3.id).name.should == 'B new' end + rescue => e + puts e + puts e.backtrace.join "\n\t" + raise e end end + end - if DataMapper.repository(adapter).adapter.respond_to? :open_ldap_connection + if DataMapper.repository(:ldap).adapter.respond_to? :open_ldap_connection - it 'should use one connection for several actions' do - DataMapper.repository(adapter) do - DataMapper.repository.adapter.open_ldap_connection do - hash = DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash - User.all - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash - user = User.get(@user3.id) - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash - user.name = "another name" - user.save - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash - end - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash - end - end - - it 'should use new connection for each action' do - DataMapper.repository(adapter) do + it 'should use one connection for several actions' do + DataMapper.repository(:ldap) do + DataMapper.repository.adapter.open_ldap_connection do hash = DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash User.all - - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash user = User.get(@user3.id) - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash - user.name = "yet another name" + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash + user.name = "another name" user.save - DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should == hash end + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash end end + + it 'should use new connection for each action' do + DataMapper.repository(:ldap) do + hash = DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash + User.all + + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash + user = User.get(@user3.id) + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash + user.name = "yet another name" + user.save + DataMapper.repository.adapter.instance_variable_get(:@ldap_connection).current.hash.should_not == hash + end + end end end + +\