Commit 1529706

mokha <mokha@cisco.com>
2018-01-15 21:44:56
add spec for full user representation.
1 parent 8e113cd
Changed files (2)
spec/scim/builders/service_provider_configuration_spec.rb
@@ -9,7 +9,7 @@ RSpec.describe Scim::Shady::Builders::ServiceProviderConfiguration do
       expect(subject.build.documentation_uri).to eql(documentation_uri)
     end
 
-    it 'can specitify patch support' do
+    it 'can specify patch support' do
       subject.patch = false
       expect(subject.build.patch).to be(false)
 
spec/scim/builders/user_spec.rb
@@ -8,6 +8,7 @@ RSpec.describe Scim::Shady::Builders::User do
     let(:user_url) { FFaker::Internet.uri("https") }
     let(:user_version) { SecureRandom.uuid }
     let(:username) { FFaker::Internet.user_name }
+    let(:x509_certificate) { OpenSSL::X509::Certificate.new }
 
     it 'builds a minimal scim user' do
       subject.id = id
@@ -25,5 +26,113 @@ RSpec.describe Scim::Shady::Builders::User do
       expect(result.version).to eql(user_version)
       expect(result.location).to eql(user_url)
     end
+
+    it 'builds a full representation' do
+      subject.id = "2819c223-7f76-453a-919d-413861904646"
+      subject.external_id = "701984"
+      subject.username = "bjensen@example.com"
+      subject.name do |x|
+        x.family_name = "Jensen"
+        x.given_name = "Barbara"
+        x.middle_name = "Jane"
+        x.honorific_prefix = "Ms."
+        x.honorific_suffix = "III"
+      end
+      subject.display_name = "Babs Jensen"
+      subject.nick_name = "Babs"
+      subject.profile_url = "https://login.example.com/bjensen"
+      subject.emails do |x|
+        x.add("bjensen@example.com", type: :work, primary: true)
+        x.add("babs@jensen.org", type: :home)
+      end
+      subject.addresses do |x|
+        x.add(
+          type: :work,
+          street_address: "100 Universal City Plaza",
+          locality: "Hollywood",
+          region: "CA",
+          postal_code: "91608",
+          country: "USA",
+          primary: true
+        )
+        x.add(
+          type: :home,
+          street_address: "456 Hollywood Blvd",
+          locality: "Hollywood",
+          region: "CA",
+          postal_code: "91608",
+          country: "USA",
+        )
+      end
+      subject.phone_numbers do |x|
+        x.add("555-555-5555", type: :work)
+        x.add("555-555-4444", type: :mobile)
+      end
+      subject.instant_messengers do |x|
+        x.add("someaimhandle", type: :aim)
+      end
+      subject.photos do |x|
+        x.add("https://photos.example.com/profilephoto/72930000000Ccne/F", type: :photo)
+        x.add("https://photos.example.com/profilephoto/72930000000Ccne/T", type: :thumbnail)
+      end
+      subject.user_type = "Employee"
+      subject.title = "Tour Guide"
+      subject.preferred_language = "en-US"
+      subject.locale = "en-US"
+      subject.timezone = "America/Los_Angeles"
+      subject.active = true
+      subject.groups do |x|
+        x.add("e9e30dba-f08f-4109-8486-d5c6a331660a", "https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a", "Tour Guides")
+        x.add("fc348aa8-3835-40eb-a20b-c726e15c55b5", "https://example.com/v2/Groups/fc348aa8-3835-40eb-a20b-c726e15c55b5", "Employees")
+        x.add("71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7", "https://example.com/v2/Groups/71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7",  "US Employees")
+      end
+      subject.x509_certificates do |x|
+        x.add(x509_certificate)
+      end
+      subject.meta do |x|
+        x.created_at = created_at
+        x.updated_at = updated_at
+        x.version = "a330bc54f0671c9"
+        x.location = "https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646"
+      end
+      result = subject.build
+
+      expect(result.external_id).to eql(subject.external_id)
+      expect(result.name.formatted).to eql("Ms. Barbara J Jensen, III")
+      expect(result.addresses.first.formatted).to eql("100 Universal City Plaza\nHollywood, CA 91608 USA")
+      expect(result.addresses.first).to be_primary
+      expect(result.addresses.last.formatted).to eql("456 Hollywood Blvd\nHollywood, CA 91608 USA")
+      expect(result.phone_numbers.first.value).to eql("555-555-5555")
+      expect(result.phone_numbers.first).to be_work
+      expect(result.phone_numbers.last.value).to eql("555-555-4444")
+      expect(result.phone_numbers.last).to be_mobile
+      expect(result.instant_messengers.first.value).to eql("someimhandle")
+      expect(result.instant_messengers.first.type).to eql("aim")
+      expect(result.photos.first.value).to eql("https://photos.example.com/profilephoto/72930000000Ccne/F")
+      expect(result.photos.first).to be_photo
+      expect(result.photos.last.value).to eql("https://photos.example.com/profilephoto/72930000000Ccne/T")
+      expect(result.photos.last).to be_thumbnail
+      expect(result.user_type).to eql("Employee")
+      expect(result.title).to eql("Tour Guide")
+      expect(result.preferred_language).to eql("en-US")
+      expect(result.locale).to eql("en-US")
+      expect(result.timezone).to eql("America/Los_Angeles")
+      expect(result).to be_active
+      expect(result.groups[0].value).to eql("e9e30dba-f08f-4109-8486-d5c6a331660a")
+      expect(result.groups[0].reference).to eql("https://example.com/v2/Groups/e9e30dba-f08f-4109-8486-d5c6a331660a")
+      expect(result.groups[0].display).to eql("Tour Guides")
+      expect(result.groups[1].value).to eql("fc348aa8-3835-40eb-a20b-c726e15c55b5")
+      expect(result.groups[1].reference).to eql("https://example.com/v2/Groups/fc348aa8-3835-40eb-a20b-c726e15c55b5")
+      expect(result.groups[1].display).to eql("Employees")
+      expect(result.groups[2].value).to eql("71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7")
+      expect(result.groups[2].reference).to eql("https://example.com/v2/Groups/71ddacd2-a8e7-49b8-a5db-ae50d0a5bfd7")
+      expect(result.groups[2].display).to eql("US Employees")
+      expect(result.x509_certificates.first).to eql(x509_certificate.to_pem.gsub(/-----BEGIN CERTIFICATE-----/, '').gsub(/-----END CERTIFICATE-----/, ''))
+      expect(result.meta).to be_user
+      expect(result.meta.created_at).to eql(DateTime.parse(created_at.utc.iso8601))
+      expect(result.meta.updated_at).to eql(DateTime.parse(updated_at.utc.iso8601))
+      expect(result.meta.version).to eql("W\/\"a330bc54f0671c9\"")
+      expect(result.meta.location).to eql("https://example.com/v2/Users/2819c223-7f76-453a-919d-413861904646")
+    end
   end
 end