summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-05-03 14:25:36 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-05-03 14:25:36 +0300
commit644b4c97e94a0d5009e0af659c8e3f3921fc336a (patch)
treeb5022d667779b30d43e711decc9d306371e1ab66 /spec
parent4291e28af72890ee4f9c0f306ba691ba84c3435d (diff)
parent0ae574007d2118fc6e291591121ceca2da6fc22e (diff)
downloadgitlab-ce-644b4c97e94a0d5009e0af659c8e3f3921fc336a.tar.gz
Merge pull request #8756 from zaburt/force_utf8_on_oauth_properties
add common method to force utf8 and force oauth properties to be utf8
Diffstat (limited to 'spec')
-rw-r--r--spec/lib/gitlab/o_auth/auth_hash_spec.rb111
1 files changed, 83 insertions, 28 deletions
diff --git a/spec/lib/gitlab/o_auth/auth_hash_spec.rb b/spec/lib/gitlab/o_auth/auth_hash_spec.rb
index 5eb77b492b2..678086ffa14 100644
--- a/spec/lib/gitlab/o_auth/auth_hash_spec.rb
+++ b/spec/lib/gitlab/o_auth/auth_hash_spec.rb
@@ -2,54 +2,109 @@ require 'spec_helper'
describe Gitlab::OAuth::AuthHash do
let(:auth_hash) do
- Gitlab::OAuth::AuthHash.new(double({
- provider: 'twitter',
- uid: uid,
- info: double(info_hash)
- }))
+ Gitlab::OAuth::AuthHash.new(
+ double({
+ provider: provider_ascii,
+ uid: uid_ascii,
+ info: double(info_hash)
+ })
+ )
end
- let(:uid) { 'my-uid' }
- let(:email) { 'my-email@example.com' }
- let(:nickname) { 'my-nickname' }
+
+ let(:uid_raw) {
+ "CN=Onur K\xC3\xBC\xC3\xA7\xC3\xBCk,OU=Test,DC=example,DC=net"
+ }
+ let(:email_raw) { "onur.k\xC3\xBC\xC3\xA7\xC3\xBCk@example.net" }
+ let(:nickname_raw) { "ok\xC3\xBC\xC3\xA7\xC3\xBCk" }
+ let(:first_name_raw) { 'Onur' }
+ let(:last_name_raw) { "K\xC3\xBC\xC3\xA7\xC3\xBCk" }
+ let(:name_raw) { "Onur K\xC3\xBC\xC3\xA7\xC3\xBCk" }
+
+ let(:provider_ascii) { 'ldap'.force_encoding(Encoding::ASCII_8BIT) }
+ let(:uid_ascii) { uid_raw.force_encoding(Encoding::ASCII_8BIT) }
+ let(:email_ascii) { email_raw.force_encoding(Encoding::ASCII_8BIT) }
+ let(:nickname_ascii) { nickname_raw.force_encoding(Encoding::ASCII_8BIT) }
+ let(:first_name_ascii) { first_name_raw.force_encoding(Encoding::ASCII_8BIT) }
+ let(:last_name_ascii) { last_name_raw.force_encoding(Encoding::ASCII_8BIT) }
+ let(:name_ascii) { name_raw.force_encoding(Encoding::ASCII_8BIT) }
+
+ let(:provider_utf8) { provider_ascii.force_encoding(Encoding::UTF_8) }
+ let(:uid_utf8) { uid_ascii.force_encoding(Encoding::UTF_8) }
+ let(:email_utf8) { email_ascii.force_encoding(Encoding::UTF_8) }
+ let(:nickname_utf8) { nickname_ascii.force_encoding(Encoding::UTF_8) }
+ let(:name_utf8) { name_ascii.force_encoding(Encoding::UTF_8) }
+
let(:info_hash) {
{
- email: email,
- nickname: nickname,
- name: 'John',
- first_name: "John",
- last_name: "Who"
+ email: email_ascii,
+ first_name: first_name_ascii,
+ last_name: last_name_ascii,
+ name: name_ascii,
+ nickname: nickname_ascii,
+ uid: uid_ascii
}
}
- context "defaults" do
- it { expect(auth_hash.provider).to eql 'twitter' }
- it { expect(auth_hash.uid).to eql uid }
- it { expect(auth_hash.email).to eql email }
- it { expect(auth_hash.username).to eql nickname }
- it { expect(auth_hash.name).to eql "John" }
+ context 'defaults' do
+ it { expect(auth_hash.provider).to eql provider_utf8 }
+ it { expect(auth_hash.uid).to eql uid_utf8 }
+ it { expect(auth_hash.email).to eql email_utf8 }
+ it { expect(auth_hash.username).to eql nickname_utf8 }
+ it { expect(auth_hash.name).to eql name_utf8 }
it { expect(auth_hash.password).to_not be_empty }
end
- context "email not provided" do
+ context 'email not provided' do
before { info_hash.delete(:email) }
- it "generates a temp email" do
+
+ it 'generates a temp email' do
expect( auth_hash.email).to start_with('temp-email-for-oauth')
end
end
- context "username not provided" do
+ context 'username not provided' do
before { info_hash.delete(:nickname) }
- it "takes the first part of the email as username" do
- expect( auth_hash.username ).to eql "my-email"
+ it 'takes the first part of the email as username' do
+ expect(auth_hash.username).to eql 'onur-kucuk'
end
end
- context "name not provided" do
+ context 'name not provided' do
before { info_hash.delete(:name) }
- it "concats first and lastname as the name" do
- expect( auth_hash.name ).to eql "John Who"
+ it 'concats first and lastname as the name' do
+ expect(auth_hash.name).to eql name_utf8
+ end
+ end
+
+ context 'auth_hash constructed with ASCII-8BIT encoding' do
+ it 'forces utf8 encoding on uid' do
+ auth_hash.uid.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on provider' do
+ auth_hash.provider.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on name' do
+ auth_hash.name.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on full_name' do
+ auth_hash.full_name.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on username' do
+ auth_hash.username.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on email' do
+ auth_hash.email.encoding.should eql Encoding::UTF_8
+ end
+
+ it 'forces utf8 encoding on password' do
+ auth_hash.password.encoding.should eql Encoding::UTF_8
end
end
-end \ No newline at end of file
+end