Question

I'm trying to write a request spec for my user_login API, but can't figure out how to get a valid user that doesn't return a wrong username or password 401 invalid error.

Here is my spec:

require 'spec_helper'

describe User do
  subject(:user) do
    Program.create!(name: 'test', gender: 'Female', goal_id: '1', experience_id: '1')
    User.create!(email: 'test@test.com', password: '12345678', password_confirmation: '12345678', goal_id: '1', experience_level_id: '1', gender: 'Female')
  end

  it "is logged in" do
    post "/api/v1/login", user_login: {email: 'test@test.com', password: '12345678' }
    response.status.should be(201)
  end

My understanding was that creating a User in the subject line would mean that my test would run against that user. Any idea what I'm doing wrong here?

Was it helpful?

Solution

And Here is the answer

require 'spec_helper'

describe "sessions" do
  before do
    FactoryGirl.create(:program)
    @user = FactoryGirl.create(:user)
  end

    describe "user" do
      it "is logged in" do
        post "/api/v1/login", user_login: {email: @user.email, password: @user.password }
        response.status.should be(201)
      end
    end
end

I'm not totally sure what's different than what I was doing in the question. I replaced the subject block with a before block and moved the creation of the program and user into Factories.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top