Commit 2b96a46

mo <mo.khan@gmail.com>
2018-01-13 18:08:58
start to define user resource.
1 parent cf1821f
lib/scim/shady.rb
@@ -2,6 +2,29 @@ require "scim/shady/version"
 
 module Scim
   module Shady
-    # Your code goes here...
+    class User
+      attr_accessor :id
+      attr_accessor :external_id
+
+      def to_h
+        {
+          'schemas' => [Schemas::USER],
+          'id' => id,
+          'externalId' => external_id,
+        }
+      end
+
+      class << self
+        def build
+          user = new
+          yield user
+          user
+        end
+      end
+    end
+
+    class Schemas
+      USER = "urn:ietf:params:scim:schemas:core:2.0:User"
+    end
   end
 end
spec/scim/user_spec.rb
@@ -0,0 +1,19 @@
+RSpec.describe Scim::Shady::User do
+  describe ".build" do
+    subject { described_class }
+    let(:id) { SecureRandom.uuid }
+    let(:email) { FFaker::Internet.email }
+
+
+    it 'builds a scim user' do
+      result = subject.build do |builder|
+        builder.id = id
+        builder.external_id = email
+      end.to_h
+
+      expect(result['schemas']).to match_array([Scim::Shady::Schemas::USER])
+      expect(result['id']).to eql(id)
+      expect(result['externalId']).to eql(email)
+    end
+  end
+end
spec/spec_helper.rb
@@ -1,5 +1,7 @@
 require "bundler/setup"
 require "scim/shady"
+require "securerandom"
+require "ffaker"
 
 RSpec.configure do |config|
   # Enable flags like --only-failures and --next-failure
scim-shady.gemspec
@@ -24,4 +24,5 @@ Gem::Specification.new do |spec|
   spec.add_development_dependency "bundler", "~> 1.16"
   spec.add_development_dependency "rake", "~> 10.0"
   spec.add_development_dependency "rspec", "~> 3.0"
+  spec.add_development_dependency "ffaker"
 end