Sha256: f6dd2b7666d5572e9166ef04823b22dedc607ada279a2da0d3c08e81ec2040db

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

RSpec.shared_examples "a gds-sso user class" do
  subject { described_class.new(:uid => '12345') }

  it "implements #where" do
    expect(described_class).to respond_to(:where)

    result = described_class.where(uid: '123')
    expect(result).to respond_to(:first)
  end

  it "implements #update_attribute" do
    expect(subject).to respond_to(:update_attribute)

    subject.update_attribute(:remotely_signed_out, true)
    expect(subject).to be_remotely_signed_out
  end

  it "implements #update_attributes" do
    subject.update_attributes(email: "ab@c.com")
    expect(subject.email).to eq("ab@c.com")
  end

  it "implements #create!" do
    expect(described_class).to respond_to(:create!)
  end

  it "implements #remotely_signed_out?" do
    expect(subject).to respond_to(:remotely_signed_out?)
  end

  specify "the User class and GDS::SSO::User mixin work together" do
    auth_hash = {
      'uid' => '12345',
      'info' => {
        'name' => 'Joe Smith',
        'email' => 'joe.smith@example.com',
      },
      'extra' => {
        'user' => {
          'permissions' => ['signin'],
          'organisation_slug' => 'cabinet-office',
        }
      }
    }

    user = described_class.find_for_gds_oauth(auth_hash)
    expect(user).to be_an_instance_of(described_class)
    expect(user.uid).to eq('12345')
    expect(user.name).to eq("Joe Smith")
    expect(user.email).to eq('joe.smith@example.com')
    expect(user.permissions).to eq(['signin'])
    expect(user.organisation_slug).to eq('cabinet-office')
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gds-sso-10.0.1 lib/gds-sso/lint/user_spec.rb