zendesk2 1.4.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/README.md +7 -1
 - data/lib/zendesk2/attributes.rb +1 -1
 - data/lib/zendesk2/{collection.rb → client/collection.rb} +22 -17
 - data/lib/zendesk2/client/collections/categories.rb +2 -1
 - data/lib/zendesk2/client/collections/forums.rb +2 -1
 - data/lib/zendesk2/client/collections/groups.rb +4 -3
 - data/lib/zendesk2/client/collections/help_center/articles.rb +2 -1
 - data/lib/zendesk2/client/collections/help_center/categories.rb +2 -1
 - data/lib/zendesk2/client/collections/help_center/sections.rb +2 -1
 - data/lib/zendesk2/client/collections/memberships.rb +9 -7
 - data/lib/zendesk2/client/collections/organizations.rb +3 -2
 - data/lib/zendesk2/client/collections/ticket_audits.rb +5 -4
 - data/lib/zendesk2/client/collections/ticket_comments.rb +4 -3
 - data/lib/zendesk2/client/collections/ticket_fields.rb +3 -1
 - data/lib/zendesk2/client/collections/tickets.rb +2 -1
 - data/lib/zendesk2/client/collections/topic_comments.rb +2 -1
 - data/lib/zendesk2/client/collections/topics.rb +2 -1
 - data/lib/zendesk2/client/collections/user_fields.rb +3 -1
 - data/lib/zendesk2/client/collections/user_identities.rb +3 -1
 - data/lib/zendesk2/client/collections/users.rb +3 -2
 - data/lib/zendesk2/client/help_center.rb +3 -0
 - data/lib/zendesk2/client/mock.rb +7 -130
 - data/lib/zendesk2/{model.rb → client/model.rb} +7 -3
 - data/lib/zendesk2/client/models/audit_event.rb +2 -2
 - data/lib/zendesk2/client/models/category.rb +8 -8
 - data/lib/zendesk2/client/models/forum.rb +11 -16
 - data/lib/zendesk2/client/models/group.rb +8 -13
 - data/lib/zendesk2/client/models/help_center/article.rb +12 -16
 - data/lib/zendesk2/client/models/help_center/category.rb +12 -16
 - data/lib/zendesk2/client/models/help_center/section.rb +12 -16
 - data/lib/zendesk2/client/models/membership.rb +10 -12
 - data/lib/zendesk2/client/models/organization.rb +13 -20
 - data/lib/zendesk2/client/models/ticket.rb +21 -19
 - data/lib/zendesk2/client/models/ticket_audit.rb +3 -3
 - data/lib/zendesk2/client/models/ticket_comment.rb +1 -1
 - data/lib/zendesk2/client/models/ticket_comment_privacy_change.rb +1 -1
 - data/lib/zendesk2/client/models/ticket_field.rb +5 -13
 - data/lib/zendesk2/client/models/ticket_metric.rb +1 -1
 - data/lib/zendesk2/client/models/ticket_voice_comment.rb +1 -1
 - data/lib/zendesk2/client/models/topic.rb +9 -14
 - data/lib/zendesk2/client/models/topic_comment.rb +14 -19
 - data/lib/zendesk2/client/models/user.rb +25 -32
 - data/lib/zendesk2/client/models/user_field.rb +10 -18
 - data/lib/zendesk2/client/models/user_identity.rb +9 -18
 - data/lib/zendesk2/client/real.rb +7 -8
 - data/lib/zendesk2/client/request.rb +271 -0
 - data/lib/zendesk2/client/requests/create_category.rb +19 -27
 - data/lib/zendesk2/client/requests/create_forum.rb +23 -28
 - data/lib/zendesk2/client/requests/create_group.rb +25 -29
 - data/lib/zendesk2/client/requests/create_help_center_article.rb +54 -60
 - data/lib/zendesk2/client/requests/create_help_center_category.rb +35 -47
 - data/lib/zendesk2/client/requests/create_help_center_section.rb +49 -55
 - data/lib/zendesk2/client/requests/create_membership.rb +42 -42
 - data/lib/zendesk2/client/requests/create_organization.rb +30 -40
 - data/lib/zendesk2/client/requests/create_ticket.rb +76 -85
 - data/lib/zendesk2/client/requests/create_ticket_field.rb +36 -40
 - data/lib/zendesk2/client/requests/create_topic.rb +23 -28
 - data/lib/zendesk2/client/requests/create_topic_comment.rb +27 -31
 - data/lib/zendesk2/client/requests/create_user.rb +51 -56
 - data/lib/zendesk2/client/requests/create_user_field.rb +36 -40
 - data/lib/zendesk2/client/requests/create_user_identity.rb +39 -44
 - data/lib/zendesk2/client/requests/destroy_category.rb +8 -21
 - data/lib/zendesk2/client/requests/destroy_forum.rb +8 -23
 - data/lib/zendesk2/client/requests/destroy_group.rb +8 -21
 - data/lib/zendesk2/client/requests/destroy_help_center_article.rb +8 -18
 - data/lib/zendesk2/client/requests/destroy_help_center_category.rb +8 -18
 - data/lib/zendesk2/client/requests/destroy_help_center_section.rb +10 -18
 - data/lib/zendesk2/client/requests/destroy_membership.rb +8 -22
 - data/lib/zendesk2/client/requests/destroy_organization.rb +8 -21
 - data/lib/zendesk2/client/requests/destroy_ticket.rb +8 -21
 - data/lib/zendesk2/client/requests/destroy_ticket_field.rb +8 -21
 - data/lib/zendesk2/client/requests/destroy_topic.rb +8 -23
 - data/lib/zendesk2/client/requests/destroy_topic_comment.rb +11 -24
 - data/lib/zendesk2/client/requests/destroy_user.rb +17 -43
 - data/lib/zendesk2/client/requests/destroy_user_field.rb +7 -22
 - data/lib/zendesk2/client/requests/destroy_user_identity.rb +10 -25
 - data/lib/zendesk2/client/requests/get_assignable_groups.rb +8 -16
 - data/lib/zendesk2/client/requests/get_categories.rb +7 -15
 - data/lib/zendesk2/client/requests/get_category.rb +11 -22
 - data/lib/zendesk2/client/requests/get_ccd_tickets.rb +11 -18
 - data/lib/zendesk2/client/requests/get_current_user.rb +6 -16
 - data/lib/zendesk2/client/requests/get_forum.rb +11 -23
 - data/lib/zendesk2/client/requests/get_forums.rb +7 -15
 - data/lib/zendesk2/client/requests/get_group.rb +9 -23
 - data/lib/zendesk2/client/requests/get_groups.rb +7 -15
 - data/lib/zendesk2/client/requests/get_help_center_article.rb +13 -37
 - data/lib/zendesk2/client/requests/get_help_center_articles.rb +6 -15
 - data/lib/zendesk2/client/requests/get_help_center_categories.rb +6 -15
 - data/lib/zendesk2/client/requests/get_help_center_category.rb +13 -37
 - data/lib/zendesk2/client/requests/get_help_center_section.rb +14 -37
 - data/lib/zendesk2/client/requests/get_help_center_sections.rb +6 -15
 - data/lib/zendesk2/client/requests/get_membership.rb +9 -24
 - data/lib/zendesk2/client/requests/get_organization.rb +9 -22
 - data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +11 -20
 - data/lib/zendesk2/client/requests/get_organization_memberships.rb +10 -16
 - data/lib/zendesk2/client/requests/get_organization_tickets.rb +14 -21
 - data/lib/zendesk2/client/requests/get_organization_users.rb +12 -20
 - data/lib/zendesk2/client/requests/get_organizations.rb +7 -16
 - data/lib/zendesk2/client/requests/get_requested_tickets.rb +12 -18
 - data/lib/zendesk2/client/requests/get_ticket.rb +9 -23
 - data/lib/zendesk2/client/requests/get_ticket_audits.rb +12 -18
 - data/lib/zendesk2/client/requests/get_ticket_comments.rb +10 -19
 - data/lib/zendesk2/client/requests/get_ticket_field.rb +9 -22
 - data/lib/zendesk2/client/requests/get_ticket_fields.rb +7 -15
 - data/lib/zendesk2/client/requests/get_tickets.rb +7 -15
 - data/lib/zendesk2/client/requests/get_topic.rb +8 -23
 - data/lib/zendesk2/client/requests/get_topic_comment.rb +12 -28
 - data/lib/zendesk2/client/requests/get_topic_comments.rb +13 -18
 - data/lib/zendesk2/client/requests/get_topics.rb +6 -15
 - data/lib/zendesk2/client/requests/get_user.rb +15 -28
 - data/lib/zendesk2/client/requests/get_user_field.rb +9 -22
 - data/lib/zendesk2/client/requests/get_user_identities.rb +11 -18
 - data/lib/zendesk2/client/requests/get_user_identity.rb +11 -21
 - data/lib/zendesk2/client/requests/get_user_memberships.rb +12 -18
 - data/lib/zendesk2/client/requests/get_users.rb +7 -15
 - data/lib/zendesk2/client/requests/mark_membership_default.rb +17 -28
 - data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +17 -30
 - data/lib/zendesk2/client/requests/search.rb +30 -19
 - data/lib/zendesk2/client/requests/search_help_center_articles.rb +22 -18
 - data/lib/zendesk2/client/requests/search_organization.rb +40 -28
 - data/lib/zendesk2/client/requests/search_user.rb +56 -44
 - data/lib/zendesk2/client/requests/update_category.rb +14 -24
 - data/lib/zendesk2/client/requests/update_forum.rb +13 -25
 - data/lib/zendesk2/client/requests/update_group.rb +12 -24
 - data/lib/zendesk2/client/requests/update_help_center_article.rb +17 -42
 - data/lib/zendesk2/client/requests/update_help_center_category.rb +17 -42
 - data/lib/zendesk2/client/requests/update_help_center_section.rb +17 -42
 - data/lib/zendesk2/client/requests/update_organization.rb +23 -35
 - data/lib/zendesk2/client/requests/update_ticket.rb +63 -63
 - data/lib/zendesk2/client/requests/update_ticket_field.rb +12 -24
 - data/lib/zendesk2/client/requests/update_topic.rb +11 -25
 - data/lib/zendesk2/client/requests/update_user.rb +47 -62
 - data/lib/zendesk2/client/requests/update_user_field.rb +11 -23
 - data/lib/zendesk2/client/requests/update_user_identity.rb +20 -28
 - data/lib/zendesk2/client.rb +52 -28
 - data/lib/zendesk2/paged_collection.rb +9 -9
 - data/lib/zendesk2/searchable.rb +1 -1
 - data/lib/zendesk2/version.rb +1 -1
 - data/lib/zendesk2.rb +1 -13
 - data/spec/categories_spec.rb +132 -0
 - data/spec/forums_spec.rb +132 -0
 - data/spec/lib/paged_collection_spec.rb +2 -2
 - data/spec/memberships_spec.rb +5 -9
 - data/spec/organizations_spec.rb +176 -25
 - data/spec/spec_helper.rb +2 -0
 - data/spec/tickets_spec.rb +2 -2
 - data/spec/topic_comments_spec.rb +2 -2
 - data/spec/user_identities_spec.rb +9 -6
 - data/spec/users_spec.rb +22 -21
 - data/zendesk2.gemspec +1 -2
 - metadata +7 -21
 - data/lib/zendesk2/client/requests/update_topic_comment.rb +0 -37
 
| 
         @@ -1,44 +1,40 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                    :body   => {"ticket_field" => params},
         
     | 
| 
       6 
     | 
    
         
            -
                    :method => :post,
         
     | 
| 
       7 
     | 
    
         
            -
                    :path   => "/ticket_fields.json",
         
     | 
| 
       8 
     | 
    
         
            -
                  )
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
              end # Real
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateTicketField < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_path { |_| "/ticket_fields.json" }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_body { |r| { "ticket_field" => r.ticket_field_params } }
         
     | 
| 
       11 
5 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[type title description position active required collapsed_for_agents regexp_for_validation title_in_portal visible_in_portal editable_in_portal required_in_portal tag custom_field_options]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
       15 
9 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                    "created_at"            => Time.now.iso8601,
         
     | 
| 
       20 
     | 
    
         
            -
                    "description"           => params["title"],
         
     | 
| 
       21 
     | 
    
         
            -
                    "editable_in_portal"    => false,
         
     | 
| 
       22 
     | 
    
         
            -
                    "id"                    => identity,
         
     | 
| 
       23 
     | 
    
         
            -
                    "position"              => 9999,
         
     | 
| 
       24 
     | 
    
         
            -
                    "regexp_for_validation" => "",
         
     | 
| 
       25 
     | 
    
         
            -
                    "removable"             => true,
         
     | 
| 
       26 
     | 
    
         
            -
                    "required"              => false,
         
     | 
| 
       27 
     | 
    
         
            -
                    "required_in_portal"    => false,
         
     | 
| 
       28 
     | 
    
         
            -
                    "tag"                   => "",
         
     | 
| 
       29 
     | 
    
         
            -
                    "title_in_portal"       => params["title"],
         
     | 
| 
       30 
     | 
    
         
            -
                    "updated_at"            => Time.now.iso8601,
         
     | 
| 
       31 
     | 
    
         
            -
                    "url"                   => url_for("/ticket_fields/#{identity}.json"),
         
     | 
| 
       32 
     | 
    
         
            -
                    "visible_in_portal"     => false,
         
     | 
| 
       33 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
      
 10 
     | 
    
         
            +
              def ticket_field_params
         
     | 
| 
      
 11 
     | 
    
         
            +
                Cistern::Hash.slice(params.fetch("ticket_field"), *self.class.accepted_attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       34 
13 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 15 
     | 
    
         
            +
                identity = service.serial_id
         
     | 
| 
       36 
16 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "active"                => true,
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "collapsed_for_agents"  => false,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  "created_at"            => Time.now.iso8601,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  "description"           => params["title"],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "editable_in_portal"    => false,
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "id"                    => identity,
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "position"              => 9999,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "regexp_for_validation" => "",
         
     | 
| 
      
 26 
     | 
    
         
            +
                  "removable"             => true,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  "required"              => false,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  "required_in_portal"    => false,
         
     | 
| 
      
 29 
     | 
    
         
            +
                  "tag"                   => "",
         
     | 
| 
      
 30 
     | 
    
         
            +
                  "title_in_portal"       => params["title"],
         
     | 
| 
      
 31 
     | 
    
         
            +
                  "updated_at"            => Time.now.iso8601,
         
     | 
| 
      
 32 
     | 
    
         
            +
                  "url"                   => url_for("/ticket_fields/#{identity}.json"),
         
     | 
| 
      
 33 
     | 
    
         
            +
                  "visible_in_portal"     => false,
         
     | 
| 
      
 34 
     | 
    
         
            +
                }.merge(ticket_field_params)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                self.data[:ticket_fields][identity] = record
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                mock_response("ticket_field" => record)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,33 +1,28 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                    :body   => {"topic" => params},
         
     | 
| 
       6 
     | 
    
         
            -
                    :method => :post,
         
     | 
| 
       7 
     | 
    
         
            -
                    :path   => "/topics.json",
         
     | 
| 
       8 
     | 
    
         
            -
                  )
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
              end # Real
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateTopic < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_body { |r| { "topic" => r.topic_params } }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_path { |_| "/topics.json" }
         
     | 
| 
       11 
5 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[title body submitter_id updater_id forum_id locked pinned highlighted position tags]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
       15 
9 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                    "created_at" => Time.now.iso8601,
         
     | 
| 
       20 
     | 
    
         
            -
                    "updated_at" => Time.now.iso8601,
         
     | 
| 
       21 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
      
 10 
     | 
    
         
            +
              def topic_params
         
     | 
| 
      
 11 
     | 
    
         
            +
                @_topic_params ||= Cistern::Hash.slice(params.fetch("topic"), *self.class.accepted_attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       22 
13 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 15 
     | 
    
         
            +
                identity = service.serial_id
         
     | 
| 
       25 
16 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                     
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
                 
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "id"         => identity,
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "url"        => url_for("/topics/#{identity}.json"),
         
     | 
| 
      
 20 
     | 
    
         
            +
                  "created_at" => Time.now.iso8601,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  "updated_at" => Time.now.iso8601,
         
     | 
| 
      
 22 
     | 
    
         
            +
                }.merge(topic_params)
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                self.data[:topics][identity] = record
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                mock_response("topic" => record)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
       33 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,37 +1,33 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                  path     = "/topics/#{topic_id}/comments.json"
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateTopicComment < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_path { |r| "/topics/#{r.topic_id}/comments.json" }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_body { |r| { "topic_comment" => r.topic_comment_params } }
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                    :path   => path,
         
     | 
| 
       11 
     | 
    
         
            -
                  )
         
     | 
| 
       12 
     | 
    
         
            -
                end
         
     | 
| 
       13 
     | 
    
         
            -
              end # Real
         
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[user_id body informative]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
       14 
9 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
               
     | 
| 
       16 
     | 
    
         
            -
                 
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  topic_id = params["topic_id"]
         
     | 
| 
       19 
     | 
    
         
            -
                  path     = "/topics/#{topic_id}/comments.json"
         
     | 
| 
      
 10 
     | 
    
         
            +
              def topic_id
         
     | 
| 
      
 11 
     | 
    
         
            +
                params.fetch("topic_comment").fetch("topic_id").to_i
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       20 
13 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                    "created_at" => Time.now.iso8601,
         
     | 
| 
       25 
     | 
    
         
            -
                    "updated_at" => Time.now.iso8601,
         
     | 
| 
       26 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
      
 14 
     | 
    
         
            +
              def topic_comment_params
         
     | 
| 
      
 15 
     | 
    
         
            +
                Cistern::Hash.slice(params.fetch("topic_comment"), *self.class.accepted_attributes)
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
       27 
17 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 19 
     | 
    
         
            +
                identity = service.serial_id
         
     | 
| 
       29 
20 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                   
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "id"         => identity,
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "url"        => url_for("/topics/#{topic_id}/comments/#{identity}.json"),
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "created_at" => Time.now.iso8601,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "updated_at" => Time.now.iso8601,
         
     | 
| 
      
 26 
     | 
    
         
            +
                  "topic_id"   => self.topic_id,
         
     | 
| 
      
 27 
     | 
    
         
            +
                }.merge(topic_comment_params)
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                self.data[:topic_comments][identity] = record
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                mock_response("topic_comment" => record)
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
       37 
33 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,66 +1,61 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                    :body   => {"user" => params},
         
     | 
| 
       6 
     | 
    
         
            -
                    :method => :post,
         
     | 
| 
       7 
     | 
    
         
            -
                    :path   => "/users.json",
         
     | 
| 
       8 
     | 
    
         
            -
                  )
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
              end # Real
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateUser < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_path { |_| "/users.json" }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_body { |r| { "user" => r.user_params } }
         
     | 
| 
       11 
5 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  user_id = self.class.new_id
         
     | 
| 
       16 
     | 
    
         
            -
                  path    = "/users.json"
         
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[name email organization_id external_id alias verified locate_id time_zone phone signature details notes role custom_role_id moderator ticket_restriction only_private_comments]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
       17 
9 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
              def user_params
         
     | 
| 
      
 11 
     | 
    
         
            +
                Cistern::Hash.slice(params.fetch("user"), *self.class.accepted_attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       22 
13 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                    "url"        => url_for("/users/#{user_id}.json"),
         
     | 
| 
       26 
     | 
    
         
            -
                    "created_at" => Time.now.iso8601,
         
     | 
| 
       27 
     | 
    
         
            -
                    "updated_at" => Time.now.iso8601,
         
     | 
| 
       28 
     | 
    
         
            -
                    "active"     => true,
         
     | 
| 
       29 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
      
 14 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 15 
     | 
    
         
            +
                user_id = service.serial_id
         
     | 
| 
       30 
16 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                user = params.fetch("user")
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                if organization_id = user["organization_id"]
         
     | 
| 
      
 20 
     | 
    
         
            +
                  self.find!(:organizations, organization_id)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
       34 
22 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "id"         => user_id,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "url"        => url_for("/users/#{user_id}.json"),
         
     | 
| 
      
 26 
     | 
    
         
            +
                  "created_at" => Time.now.iso8601,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  "updated_at" => Time.now.iso8601,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  "active"     => true,
         
     | 
| 
      
 29 
     | 
    
         
            +
                }.merge(user_params)
         
     | 
| 
       42 
30 
     | 
    
         | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
             
     | 
| 
       50 
     | 
    
         
            -
                      " 
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
                if record["external_id"] && self.data[:users].values.find { |o| o["external_id"] == record["external_id"] }
         
     | 
| 
      
 32 
     | 
    
         
            +
                  error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                if (email = record["email"]) && self.data[:identities].find{|k,i| i["type"] == "email" && i["value"] == email}
         
     | 
| 
      
 36 
     | 
    
         
            +
                  error!(:invalid, :details => {
         
     | 
| 
      
 37 
     | 
    
         
            +
                    "email" => [ {
         
     | 
| 
      
 38 
     | 
    
         
            +
                      "description" => "Email: #{email} is already being used by another user"
         
     | 
| 
      
 39 
     | 
    
         
            +
                    }]})
         
     | 
| 
      
 40 
     | 
    
         
            +
                else
         
     | 
| 
      
 41 
     | 
    
         
            +
                  user_identity_id = service.serial_id
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                  user_identity = {
         
     | 
| 
      
 44 
     | 
    
         
            +
                    "id"         => user_identity_id,
         
     | 
| 
      
 45 
     | 
    
         
            +
                    "url"        => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
         
     | 
| 
      
 46 
     | 
    
         
            +
                    "created_at" => Time.now.iso8601,
         
     | 
| 
      
 47 
     | 
    
         
            +
                    "updated_at" => Time.now.iso8601,
         
     | 
| 
      
 48 
     | 
    
         
            +
                    "type"       => "email",
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "value"      => record["email"],
         
     | 
| 
      
 50 
     | 
    
         
            +
                    "verified"   => false,
         
     | 
| 
      
 51 
     | 
    
         
            +
                    "primary"    => true,
         
     | 
| 
      
 52 
     | 
    
         
            +
                    "user_id"    => user_id,
         
     | 
| 
      
 53 
     | 
    
         
            +
                  }
         
     | 
| 
       54 
54 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
                  self.data[:identities][user_identity_id] = user_identity
         
     | 
| 
      
 56 
     | 
    
         
            +
                  self.data[:users][user_id] = record.reject { |k,v| k == "email" }
         
     | 
| 
       57 
57 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                      :method => :post,
         
     | 
| 
       60 
     | 
    
         
            -
                      :body   => {"user" => record},
         
     | 
| 
       61 
     | 
    
         
            -
                      :path   => path,
         
     | 
| 
       62 
     | 
    
         
            -
                    )
         
     | 
| 
       63 
     | 
    
         
            -
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                  mock_response({"user" => record}, {status: 201})
         
     | 
| 
       64 
59 
     | 
    
         
             
                end
         
     | 
| 
       65 
     | 
    
         
            -
              end 
     | 
| 
      
 60 
     | 
    
         
            +
              end
         
     | 
| 
       66 
61 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,44 +1,40 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                    :body   => {"user_field" => params},
         
     | 
| 
       6 
     | 
    
         
            -
                    :method => :post,
         
     | 
| 
       7 
     | 
    
         
            -
                    :path   => "/user_fields.json",
         
     | 
| 
       8 
     | 
    
         
            -
                  )
         
     | 
| 
       9 
     | 
    
         
            -
                end
         
     | 
| 
       10 
     | 
    
         
            -
              end # Real
         
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateUserField < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_path { |_| "/user_fields.json" }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_body { |r| { "user_field" => r.user_field_params } }
         
     | 
| 
       11 
5 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
               
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[key type title description position active, regexp_for_validation tag custom_field_options]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
       15 
9 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                    "created_at"            => Time.now.iso8601,
         
     | 
| 
       20 
     | 
    
         
            -
                    "description"           => params["title"],
         
     | 
| 
       21 
     | 
    
         
            -
                    "editable_in_portal"    => false,
         
     | 
| 
       22 
     | 
    
         
            -
                    "id"                    => identity,
         
     | 
| 
       23 
     | 
    
         
            -
                    "position"              => 9999,
         
     | 
| 
       24 
     | 
    
         
            -
                    "regexp_for_validation" => "",
         
     | 
| 
       25 
     | 
    
         
            -
                    "removable"             => true,
         
     | 
| 
       26 
     | 
    
         
            -
                    "required"              => false,
         
     | 
| 
       27 
     | 
    
         
            -
                    "required_in_portal"    => false,
         
     | 
| 
       28 
     | 
    
         
            -
                    "tag"                   => "",
         
     | 
| 
       29 
     | 
    
         
            -
                    "title_in_portal"       => params["title"],
         
     | 
| 
       30 
     | 
    
         
            -
                    "updated_at"            => Time.now.iso8601,
         
     | 
| 
       31 
     | 
    
         
            -
                    "url"                   => url_for("/user_fields/#{identity}.json"),
         
     | 
| 
       32 
     | 
    
         
            -
                    "visible_in_portal"     => false,
         
     | 
| 
       33 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
      
 10 
     | 
    
         
            +
              def user_field_params
         
     | 
| 
      
 11 
     | 
    
         
            +
                Cistern::Hash.slice(params.fetch("user_field"), *self.class.accepted_attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
       34 
13 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 15 
     | 
    
         
            +
                identity = service.serial_id
         
     | 
| 
       36 
16 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
       42 
     | 
    
         
            -
                 
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 18 
     | 
    
         
            +
                  "active"                => true,
         
     | 
| 
      
 19 
     | 
    
         
            +
                  "collapsed_for_agents"  => false,
         
     | 
| 
      
 20 
     | 
    
         
            +
                  "created_at"            => Time.now.iso8601,
         
     | 
| 
      
 21 
     | 
    
         
            +
                  "description"           => params["title"],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "editable_in_portal"    => false,
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "id"                    => identity,
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "position"              => 9999,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "regexp_for_validation" => "",
         
     | 
| 
      
 26 
     | 
    
         
            +
                  "removable"             => true,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  "required"              => false,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  "required_in_portal"    => false,
         
     | 
| 
      
 29 
     | 
    
         
            +
                  "tag"                   => "",
         
     | 
| 
      
 30 
     | 
    
         
            +
                  "title_in_portal"       => params["title"],
         
     | 
| 
      
 31 
     | 
    
         
            +
                  "updated_at"            => Time.now.iso8601,
         
     | 
| 
      
 32 
     | 
    
         
            +
                  "url"                   => url_for("/user_fields/#{identity}.json"),
         
     | 
| 
      
 33 
     | 
    
         
            +
                  "visible_in_portal"     => false,
         
     | 
| 
      
 34 
     | 
    
         
            +
                }.merge(user_field_params)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                service.data[:user_fields][identity] = record
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                mock_response("user_field" => record)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,46 +1,41 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Zendesk2::Client
         
     | 
| 
       2 
     | 
    
         
            -
               
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            class Zendesk2::Client::CreateUserIdentity < Zendesk2::Client::Request
         
     | 
| 
      
 2 
     | 
    
         
            +
              request_method :post
         
     | 
| 
      
 3 
     | 
    
         
            +
              request_path { |r| "/users/#{r.user_id}/identities.json" }
         
     | 
| 
      
 4 
     | 
    
         
            +
              request_body { |r| { "identity" => r.user_identity_params } }
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              def self.accepted_attributes
         
     | 
| 
      
 7 
     | 
    
         
            +
                %w[primary verified type value user_id]
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              def user_identity_params
         
     | 
| 
      
 11 
     | 
    
         
            +
                Cistern::Hash.slice(params.fetch("user_identity"), *self.class.accepted_attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def user_id
         
     | 
| 
      
 15 
     | 
    
         
            +
                params.fetch("user_identity").fetch("user_id").to_i
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def mock
         
     | 
| 
      
 19 
     | 
    
         
            +
                identity = service.serial_id
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                record = {
         
     | 
| 
      
 22 
     | 
    
         
            +
                  "id"         => identity,
         
     | 
| 
      
 23 
     | 
    
         
            +
                  "url"        => url_for("/user/#{user_id}/identities/#{identity}.json"),
         
     | 
| 
      
 24 
     | 
    
         
            +
                  "created_at" => Time.now.iso8601,
         
     | 
| 
      
 25 
     | 
    
         
            +
                  "updated_at" => Time.now.iso8601,
         
     | 
| 
      
 26 
     | 
    
         
            +
                  "verified"   => false,
         
     | 
| 
      
 27 
     | 
    
         
            +
                  "primary"    => false,
         
     | 
| 
      
 28 
     | 
    
         
            +
                  "user_id"    => user_id,
         
     | 
| 
      
 29 
     | 
    
         
            +
                }.merge(user_identity_params)
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                record.merge("primary" => true) if service.data[:identities].values.find { |ui| ui["user_id"] == user_id }.nil?
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                if service.data[:identities].values.find { |i| i["value"] == record["value"] }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  error!(:invalid, details: { "value" => [ { "description" => "Value: #{record["value"]} is already being used by another user" } ] })
         
     | 
| 
       11 
35 
     | 
    
         
             
                end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                  identity = self.class.new_id
         
     | 
| 
       19 
     | 
    
         
            -
                  user_id  = params.delete("user_id").to_s
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  record = {
         
     | 
| 
       22 
     | 
    
         
            -
                    "id"         => identity,
         
     | 
| 
       23 
     | 
    
         
            -
                    "url"        => url_for("/user/#{user_id}/identities/#{identity}.json"),
         
     | 
| 
       24 
     | 
    
         
            -
                    "created_at" => Time.now.iso8601,
         
     | 
| 
       25 
     | 
    
         
            -
                    "updated_at" => Time.now.iso8601,
         
     | 
| 
       26 
     | 
    
         
            -
                    "verified"   => false,
         
     | 
| 
       27 
     | 
    
         
            -
                    "primary"    => false,
         
     | 
| 
       28 
     | 
    
         
            -
                    "user_id"    => user_id,
         
     | 
| 
       29 
     | 
    
         
            -
                  }.merge(params)
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  record.merge("primary" => true) if self.data[:identities].values.find { |ui| ui["user_id"] == user_id }.nil?
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  if self.data[:identities].values.find { |i| i["value"] == record["value"] }
         
     | 
| 
       34 
     | 
    
         
            -
                    error!(:invalid, details: { "value"=> [ { "description"=>"Value: #{record["value"]} is already being used by another user" } ] })
         
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                  self.data[:identities][identity] = record
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  response(
         
     | 
| 
       40 
     | 
    
         
            -
                    :method => :post,
         
     | 
| 
       41 
     | 
    
         
            -
                    :path   => "/user/#{user_id}/identities.json",
         
     | 
| 
       42 
     | 
    
         
            -
                    :body   => {"identity" => record}
         
     | 
| 
       43 
     | 
    
         
            -
                  )
         
     | 
| 
       44 
     | 
    
         
            -
                end
         
     | 
| 
       45 
     | 
    
         
            -
              end # Mock
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                service.data[:identities][identity] = record
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                mock_response("identity" => record)
         
     | 
| 
      
 40 
     | 
    
         
            +
              end
         
     | 
| 
       46 
41 
     | 
    
         
             
            end
         
     |