Sha256: 2be86d0034f41911d9bee2639312f930aeff6f36face75432d8200f972be0154

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 KB

Contents

require "spec_helper"
require "gds-sso/user"
require "gds-sso/lint/user_spec"

require "ostruct"

describe GDS::SSO::User do
  before :each do
    @auth_hash = {
      "provider" => "gds",
      "uid" => "abcde",
      "credentials" => { "token" => "abcdefg", "secret" => "abcdefg" },
      "info" => { "name" => "Matt Patterson", "email" => "matt@alphagov.co.uk" },
      "extra" => {
        "user" => {
          "permissions" => [], "organisation_slug" => nil, "organisation_content_id" => nil, "disabled" => false
        },
      },
    }
  end

  it "should extract the user params from the oauth hash" do
    expected = { "uid" => "abcde",
                 "name" => "Matt Patterson",
                 "email" => "matt@alphagov.co.uk",
                 "permissions" => [],
                 "organisation_slug" => nil,
                 "organisation_content_id" => nil,
                 "disabled" => false }
    expect(GDS::SSO::User.user_params_from_auth_hash(@auth_hash)).to eq(expected)
  end

  context "making sure that the lint spec is valid" do
    class TestUser < OpenStruct
      include GDS::SSO::User

      def self.where(_opts)
        []
      end

      def self.create!(options, _scope = {})
        new(options)
      end

      def update_attribute(key, value)
        send("#{key}=".to_sym, value)
      end

      def update!(options)
        options.each do |key, value|
          update_attribute(key, value)
        end
      end

      def remotely_signed_out?
        remotely_signed_out
      end

      def disabled?
        disabled
      end
    end

    let(:described_class) { TestUser }
    it_behaves_like "a gds-sso user class"
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gds-sso-16.0.0 spec/unit/user_spec.rb
gds-sso-15.1.0 spec/unit/user_spec.rb
gds-sso-15.0.1 spec/unit/user_spec.rb