spec/scim_spec.rb in cf-uaa-lib-3.6.0 vs spec/scim_spec.rb in cf-uaa-lib-3.7.0

- old
+ new

@@ -21,250 +21,245 @@ describe Scim do let(:options) { {} } before do #Util.default_logger(:trace) - @authheader, @target = "bEareR xyz", "https://test.target" + @authheader, @target = 'bEareR xyz', 'https://test.target' @scim = Scim.new(@target, @authheader, options) end subject { @scim } def check_headers(headers, content, accept, zone) - headers["content-type"].should =~ /application\/json/ if content == :json - headers["content-type"].should be_nil unless content - headers["accept"].should =~ /application\/json/ if accept == :json - headers["accept"].should be_nil unless accept - headers["authorization"].should =~ /^(?i:bearer)\s+xyz$/ - headers["X-Identity-Zone-Subdomain"].should eq zone + headers['content-type'].should =~ /application\/json/ if content == :json + headers['content-type'].should be_nil unless content + headers['accept'].should =~ /application\/json/ if accept == :json + headers['accept'].should be_nil unless accept + headers['authorization'].should =~ /^(?i:bearer)\s+xyz$/ + headers['X-Identity-Zone-Subdomain'].should eq zone end - describe "initialize" do + describe 'initialize' do let(:options) { {:http_proxy => 'http-proxy.com', :https_proxy => 'https-proxy.com', :skip_ssl_validation => true} } - it "sets proxy information" do - subject.http_proxy.should == 'http-proxy.com' - subject.https_proxy.should == 'https-proxy.com' - end - - it "sets skip_ssl_validation" do + it 'sets skip_ssl_validation' do subject.skip_ssl_validation == true end end - it "adds an object" do + it 'adds an object' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users" method.should == :post check_headers(headers, :json, :json, nil) - [200, '{"ID":"id12345"}', {"content-type" => "application/json"}] + [200, '{"ID":"id12345"}', {'content-type' => 'application/json'}] end - result = subject.add(:user, :hair => "brown", :shoe_size => "large", - :eye_color => ["blue", "green"], :name => "fred") - result["id"].should == "id12345" + result = subject.add(:user, :hair => 'brown', :shoe_size => 'large', + :eye_color => ['blue', 'green'], :name => 'fred') + result['id'].should == 'id12345' end - it "replaces an object" do - obj = {:hair => "black", :shoe_size => "medium", :eye_color => ["hazel", "brown"], - :name => "fredrick", :meta => {:version => 'v567'}, :id => "id12345"} + it 'replaces an object' do + obj = {:hair => 'black', :shoe_size => 'medium', :eye_color => ['hazel', 'brown'], + :name => 'fredrick', :meta => {:version => 'v567'}, :id => 'id12345'} subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345" method.should == :put check_headers(headers, :json, :json, nil) - headers["if-match"].should == "v567" - [200, '{"ID":"id12345"}', {"content-type" => "application/json"}] + headers['if-match'].should == 'v567' + [200, '{"ID":"id12345"}', {'content-type' => 'application/json'}] end result = subject.put(:user, obj) - result["id"].should == "id12345" + result['id'].should == 'id12345' end - it "modifies an object" do - obj = {:hair => "black", :shoe_size => "medium", :eye_color => ["hazel", "brown"], - :name => "fredrick", :meta => {:version => 'v567'}, :id => "id12345"} + it 'modifies an object' do + obj = {:hair => 'black', :shoe_size => 'medium', :eye_color => ['hazel', 'brown'], + :name => 'fredrick', :meta => {:version => 'v567'}, :id => 'id12345'} subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345" method.should == :patch check_headers(headers, :json, :json, nil) - headers["if-match"].should == "v567" - [200, '{"ID":"id12345"}', {"content-type" => "application/json"}] + headers['if-match'].should == 'v567' + [200, '{"ID":"id12345"}', {'content-type' => 'application/json'}] end result = subject.patch(:user, obj) - result["id"].should == "id12345" + result['id'].should == 'id12345' end - it "gets an object" do + it 'gets an object' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345" method.should == :get check_headers(headers, nil, :json, nil) - [200, '{"id":"id12345"}', {"content-type" => "application/json"}] + [200, '{"id":"id12345"}', {'content-type' => 'application/json'}] end - result = subject.get(:user, "id12345") - result['id'].should == "id12345" + result = subject.get(:user, 'id12345') + result['id'].should == 'id12345' end - it "pages through all objects" do + it 'pages through all objects' do subject.set_request_handler do |url, method, body, headers| url.should =~ %r{^#{@target}/Users\?} url.should =~ %r{[\?&]attributes=id(&|$)} url.should =~ %r{[\?&]startIndex=[12](&|$)} method.should == :get check_headers(headers, nil, :json, nil) reply = url =~ /startIndex=1/ ? '{"TotalResults":2,"ItemsPerPage":1,"StartIndex":1,"RESOURCES":[{"id":"id12345"}]}' : '{"TotalResults":2,"ItemsPerPage":1,"StartIndex":2,"RESOURCES":[{"id":"id67890"}]}' - [200, reply, {"content-type" => "application/json"}] + [200, reply, {'content-type' => 'application/json'}] end result = subject.all_pages(:user, :attributes => 'id') - [result[0]['id'], result[1]['id']].to_set.should == ["id12345", "id67890"].to_set + [result[0]['id'], result[1]['id']].to_set.should == ['id12345', 'id67890'].to_set end it "changes a user's password" do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345/password" method.should == :put check_headers(headers, :json, :json, nil) body.should include('"password":"newpwd"', '"oldPassword":"oldpwd"') - [200, '{"id":"id12345"}', {"content-type" => "application/json"}] + [200, '{"id":"id12345"}', {'content-type' => 'application/json'}] end - result = subject.change_password("id12345", "newpwd", "oldpwd") - result['id'].should == "id12345" + result = subject.change_password('id12345', 'newpwd', 'oldpwd') + result['id'].should == 'id12345' end it "tries to change the user's password to be the same as the old one" do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345/password" method.should == :put check_headers(headers, :json, :json, nil) - [400, '{"error":"invalid_password","message":"Your new password cannot be the same as the old password."}', {"content-type" => "application/json"}] + [400, '{"error":"invalid_password","message":"Your new password cannot be the same as the old password."}', {'content-type' => 'application/json'}] end - expect {subject.change_password("id12345", "oldpwd", "oldpwd")}.to raise_error(error=TargetError) + expect {subject.change_password('id12345', 'oldpwd', 'oldpwd')}.to raise_error(error=TargetError) end it "changes a client's secret" do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/oauth/clients/id12345/secret" method.should == :put check_headers(headers, :json, :json, nil) body.should include('"secret":"newpwd"', '"oldSecret":"oldpwd"') - [200, '{"id":"id12345"}', {"content-type" => "application/json"}] + [200, '{"id":"id12345"}', {'content-type' => 'application/json'}] end - result = subject.change_secret("id12345", "newpwd", "oldpwd") - result['id'].should == "id12345" + result = subject.change_secret('id12345', 'newpwd', 'oldpwd') + result['id'].should == 'id12345' end - it "unlocks a user" do + it 'unlocks a user' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users/id12345/status" method.should == :patch check_headers(headers, :json, :json, nil) body.should include('"locked":false') - [200, '{"locked":false}', {"content-type" => "application/json"}] + [200, '{"locked":false}', {'content-type' => 'application/json'}] end - result = subject.unlock_user("id12345") + result = subject.unlock_user('id12345') result['locked'].should == false end - it "adds a mapping from uaa groups to external group" do + it 'adds a mapping from uaa groups to external group' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Groups/External" method.should == :post check_headers(headers, :json, :json, nil) body.should include('"displayName":"uaa-scope-name"', '"externalGroup":"external-group-name"', '"schemas":["urn:scim:schemas:core:1.0"]', '"origin":"test-origin"') - [201, '{"displayName":"uaa-scope-name", "externalGroup": "external-group-name"}', {"content-type" => "application/json"}] + [201, '{"displayName":"uaa-scope-name", "externalGroup": "external-group-name"}', {'content-type' => 'application/json'}] end - result = subject.map_group("uaa-scope-name", false, "external-group-name", "test-origin") - result['displayname'].should == "uaa-scope-name" - result['externalgroup'].should == "external-group-name" + result = subject.map_group('uaa-scope-name', false, 'external-group-name', 'test-origin') + result['displayname'].should == 'uaa-scope-name' + result['externalgroup'].should == 'external-group-name' end - it "defaults to ldap origin when mapping a uaa group from an external group" do + it 'defaults to ldap origin when mapping a uaa group from an external group' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Groups/External" method.should == :post check_headers(headers, :json, :json, nil) body.should include('"displayName":"uaa-scope-name"', '"externalGroup":"external-group-name"', '"schemas":["urn:scim:schemas:core:1.0"]', '"origin":"ldap"') - [201, '{"displayName":"uaa-scope-name", "externalGroup": "external-group-name"}', {"content-type" => "application/json"}] + [201, '{"displayName":"uaa-scope-name", "externalGroup": "external-group-name"}', {'content-type' => 'application/json'}] end - result = subject.map_group("uaa-scope-name", false, "external-group-name") - result['displayname'].should == "uaa-scope-name" - result['externalgroup'].should == "external-group-name" + result = subject.map_group('uaa-scope-name', false, 'external-group-name') + result['displayname'].should == 'uaa-scope-name' + result['externalgroup'].should == 'external-group-name' end - it "unmaps a uaa group from an external group" do + it 'unmaps a uaa group from an external group' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Groups/External/groupId/uaa-group-id/externalGroup/external%20group%20name/origin/test-origin" method.should == :delete check_headers(headers, nil, nil, nil) - [200, '{"displayName":"uaa-scope-name", "groupId": "uaa-group-id", "externalGroup": "external-group-name"}', {"content-type" => "application/json"}] + [200, '{"displayName":"uaa-scope-name", "groupId": "uaa-group-id", "externalGroup": "external-group-name"}', {'content-type' => 'application/json'}] end - subject.unmap_group("uaa-group-id", "external group name", "test-origin") + subject.unmap_group('uaa-group-id', 'external group name', 'test-origin') end - it "defaults to ldap origin when unmapping a uaa group from an external group" do + it 'defaults to ldap origin when unmapping a uaa group from an external group' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Groups/External/groupId/uaa-group-id/externalGroup/external%20group%20name/origin/ldap" method.should == :delete check_headers(headers, nil, nil, nil) - [200, '{"displayName":"uaa-scope-name", "groupId": "uaa-group-id", "externalGroup": "external-group-name"}', {"content-type" => "application/json"}] + [200, '{"displayName":"uaa-scope-name", "groupId": "uaa-group-id", "externalGroup": "external-group-name"}', {'content-type' => 'application/json'}] end - subject.unmap_group("uaa-group-id", "external group name") + subject.unmap_group('uaa-group-id', 'external group name') end - describe "users in a zone" do + describe 'users in a zone' do let(:options) { {:http_proxy => 'http-proxy.com', :https_proxy => 'https-proxy.com', :skip_ssl_validation => true, :zone => 'derpzone'} } - it "sends zone header" do + it 'sends zone header' do subject.set_request_handler do |url, method, body, headers| url.should == "#{@target}/Users" method.should == :post check_headers(headers, :json, :json, 'derpzone') - [200, '{"ID":"id12345"}', {"content-type" => "application/json"}] + [200, '{"ID":"id12345"}', {'content-type' => 'application/json'}] end - result = subject.add(:user, :hair => "brown", :shoe_size => "large", - :eye_color => ["blue", "green"], :name => "fred") - result["id"].should == "id12345" + result = subject.add(:user, :hair => 'brown', :shoe_size => 'large', + :eye_color => ['blue', 'green'], :name => 'fred') + result['id'].should == 'id12345' end end - describe "#list_group_mappings" do - it "lists all the external group mappings with default pagination" do + describe '#list_group_mappings' do + it 'lists all the external group mappings with default pagination' do subject.set_request_handler do |url, method, body, headers| url.should start_with("#{@target}/Groups/External/list") method.should == :get check_headers(headers, nil, :json, nil) [ 200, '{"resources": [{"groupId": "group-id", "displayName": "group-name", "externalGroup": "external-group-name"}], "totalResults": 1 }', - {"content-type" => "application/json"} + {'content-type' => 'application/json'} ] end result = subject.list_group_mappings result['resources'].length.should == 1 result['totalresults'].should == 1 end - it "lists a page of external group mappings starting from an index" do + it 'lists a page of external group mappings starting from an index' do subject.set_request_handler do |url, method, body, headers| url.should start_with("#{@target}/Groups/External/list") method.should == :get check_headers(headers, nil, :json, nil) query_params = CGI::parse(URI.parse(url).query) - start_index = query_params["startIndex"].first - count = query_params["count"].first + start_index = query_params['startIndex'].first + count = query_params['count'].first - start_index.should == "3" - count.should == "10" + start_index.should == '3' + count.should == '10' [ 200, '{"resources": [{"groupId": "group-id", "displayName": "group-name", "externalGroup": "external-group-name"}], "totalResults": 1 }', - {"content-type" => "application/json"} + {'content-type' => 'application/json'} ] end subject.list_group_mappings(3, 10) end