Commit 494cca1b57f621839b2e7243cc28b407a3f1893e

Authored by Spencer Alan
1 parent 38a739dc
Exists in master

add http request content-type specs

spec/controllers/scim_rails/scim_users_request_spec.rb 0 → 100644
... ... @@ -0,0 +1,51 @@
  1 +require "spec_helper"
  2 +
  3 +RSpec.describe ScimRails::ScimUsersController, type: :request do
  4 + let(:company) { create(:company) }
  5 + let(:credentials) { Base64::encode64("#{company.subdomain}:#{company.api_token}") }
  6 + let(:authorization) { "Basic #{credentials}" }
  7 +
  8 + def post_request(content_type)
  9 + # params need to be transformed into a string to test if they are being parsed by Rack
  10 +
  11 + post "/scim_rails/scim/v2/Users",
  12 + params: {
  13 + name: {
  14 + givenName: "New",
  15 + familyName: "User"
  16 + },
  17 + emails: [
  18 + {
  19 + value: "new@example.com"
  20 + }
  21 + ]
  22 + }.to_json,
  23 + headers: {
  24 + 'Authorization': authorization,
  25 + 'Content-Type': content_type
  26 + }
  27 + end
  28 +
  29 + describe "Content-Type" do
  30 + it "accepts scim+json" do
  31 + expect(company.users.count).to eq 0
  32 +
  33 + post_request("application/scim+json")
  34 +
  35 + expect(request.params).to include :name
  36 + expect(response.status).to eq 201
  37 + expect(response.content_type).to eq "application/scim+json, application/json"
  38 + expect(company.users.count).to eq 1
  39 + end
  40 +
  41 + it "can not parse unfamiliar content types" do
  42 + expect(company.users.count).to eq 0
  43 +
  44 + post_request("invalid_type")
  45 +
  46 + expect(request.params).not_to include :name
  47 + expect(response.status).to eq 422
  48 + expect(company.users.count).to eq 0
  49 + end
  50 + end
  51 +end
... ...