describe_fake MediaWiki::Gateway::Users do describe '#login' do describe "with a valid username & password" do before do @gateway.login('atlasmw', 'wombat') end it "should login successfully with the default domain" do $fake_media_wiki.logged_in('atlasmw').should == true end end describe "with a valid username, password and domain" do before do @gateway.login('ldapuser', 'ldappass', 'ldapdomain') end it "should login successfully" do $fake_media_wiki.logged_in('ldapuser').should == true end end describe "with an non-existent username" do it "should raise an error" do lambda do @gateway.login('bogususer', 'sekrit') end.should raise_error(MediaWiki::Unauthorized) end end describe "with an incorrect password" do it "should raise an error" do lambda do @gateway.login('atlasmw', 'sekrit') end.should raise_error(MediaWiki::Unauthorized) end end describe "with an incorrect domain" do it "should raise an error" do lambda do @gateway.login('atlasmw', 'wombat', 'bogusdomain') end.should raise_error(MediaWiki::Unauthorized) end end end describe "#create_account" do describe "when logged in as admin" do before do @gateway.login("atlasmw", "wombat") end it 'should get expected result' do expected = <<-XML XML expect(@gateway.create_account({ 'name' => 'FooBar', 'password' => 'BarBaz' }).to_s).to be_equivalent_to(expected) end end end describe '#options' do describe 'when logged in' do before do @gateway.login("atlasmw", "wombat") end describe 'requesting an options token' do before do @token = @gateway.send(:get_options_token) end it "should return a token" do @token.should_not == nil @token.should_not == "+\\" end end it 'should return the expected response' do expected = '' expect(@gateway.options({ :realname => 'Bar Baz' }).to_s).to be_equivalent_to(expected) end end end describe "#user_rights" do describe "when logged in as admin" do before do @gateway.login("atlasmw", "wombat") end describe "requesting a userrights token for an existing user" do before do @token = @gateway.send(:get_userrights_token, 'nonadmin') end it "should return a token" do @token.should_not == nil @token.should_not == "+\\" end end describe "requesting a userrights token for an nonexistant user" do it "should raise an error" do lambda do @gateway.send(:get_userrights_token, 'nosuchuser') end.should raise_error(MediaWiki::APIError) end end describe "changing a user's groups with a valid token" do def userrights_response <<-XML oldgroup newgroup XML end before do @token = @gateway.send(:get_userrights_token, 'nonadmin') @result = @gateway.send(:userrights, 'nonadmin', @token, 'newgroup', 'oldgroup', 'because I can') end it "should return a result matching the input" do expect(@result.to_s).to be_equivalent_to(userrights_response) end end end end end