jam-cloud/web/spec/controllers/api_jamblasters_controller_...

212 lines
6.5 KiB
Ruby

require 'spec_helper'
describe ApiJamblastersController do
render_views
let(:user) {FactoryGirl.create(:user)}
let(:jamblaster) { FactoryGirl.create(:jamblaster, user: user) }
before(:each) do
JamblasterUser.delete_all
JamblasterPairingRequest.delete_all
Jamblaster.delete_all
end
describe "get_tokens" do
before(:each) {
controller.current_user = user
}
it "works" do
get :get_tokens, {:format=>'json' }
response.status.should == 200
json = JSON.parse(response.body)
json.length.should eq(0)
# associate Jamblaster
jamblaster = FactoryGirl.create(:jamblaster, user: user)
user.jamblasters << jamblaster
user.save!
get :get_tokens, {:format=>'json' }
response.status.should == 200
json = JSON.parse(response.body)
json.length.should eq(1)
end
end
describe "start_pairing" do
before(:each) do
controller.current_user = user
user.jamblasters << jamblaster
user.save!
end
it "works" do
post :start_pairing, {:format=>'json', jbid: jamblaster.client_id, scid: 'sibling_id', key: 'sibling_key'}
json = JSON.parse(response.body)
response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_id: jamblaster.id).first
request.should_not be_nil
request.user.should eql(user)
request.sibling_key.should eq 'sibling_key'
request.sibling_client_id.should eq 'sibling_id'
end
it "returns 422 if bogus jamblaster" do
post :start_pairing, {:format=>'json', jbid: 'nada', scid: 'sibling_id', key: 'sibling_key'}
json = JSON.parse(response.body)
response.status.should == 422
json = JSON.parse(response.body)
end
it "returns 422 if restart pairing" do
end
end
describe "login" do
before(:each) do
controller.current_user = user
user.jamblasters << jamblaster
user.save!
end
it "works" do
post :start_pairing, {:format=>'json', jbid: jamblaster.client_id, scid: 'sibling_id2', key: 'sibling_key2'}
response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, sibling_key: 'sibling_key2', sibling_client_id: 'sibling_id2').first
request.should_not be_nil
request.user.should eql(user)
request.sibling_key.should eq 'sibling_key2'
request.sibling_client_id.should eq 'sibling_id2'
request.jamblaster_client_id.should eq jamblaster.client_id
post :login, {:format=>'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, scid: 'sibling_id2', key: 'sibling_key2'}
json = JSON.parse(response.body)
response.status.should == 200
json['remember_token'].should eq(user.remember_token)
end
end
describe "store_token" do
before(:each) do
controller.current_user = user
user.jamblasters << jamblaster
user.save!
end
it "works" do
post :start_pairing, {:format=>'json', jbid: jamblaster.client_id, scid: 'sibling_id3', key: 'sibling_key3'}
response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, sibling_key: 'sibling_key3', sibling_client_id: 'sibling_id3').first
request.should_not be_nil
request.user.should eql(user)
request.sibling_key.should eq 'sibling_key3'
request.sibling_client_id.should eq 'sibling_id3'
request.jamblaster_client_id.should eq jamblaster.client_id
post :login, {:format=>'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, scid: 'sibling_id3', key: 'sibling_key3'}
json = JSON.parse(response.body)
response.status.should == 200
json['remember_token'].should eq(user.remember_token)
post :store_token, {:format => 'json', vtoken: 'vtoken1', scid: 'sibling_id3', jbid: jamblaster.client_id, key: 'sibling_key3'}
json = JSON.parse(response.body)
response.status.should == 200
json['id'].should eq(jamblaster.id)
end
end
describe "pair" do
before(:each) do
controller.current_user = user
user.jamblasters << jamblaster
user.save!
end
it "works" do
post :start_pairing, {:format=>'json', jbid: jamblaster.client_id, scid: 'sibling_id4', key: 'sibling_key4'}
response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, sibling_key: 'sibling_key4', sibling_client_id: 'sibling_id4').first
request.should_not be_nil
request.user.should eql(user)
request.sibling_key.should eq 'sibling_key4'
request.sibling_client_id.should eq 'sibling_id4'
request.jamblaster_client_id.should eq jamblaster.client_id
post :login, {:format=>'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, scid: 'sibling_id4', key: 'sibling_key4'}
json = JSON.parse(response.body)
response.status.should == 200
json['remember_token'].should eq(user.remember_token)
post :store_token, {:format => 'json', vtoken: 'vtoken2', scid: 'sibling_id4', jbid: jamblaster.client_id, key: 'sibling_key4'}
json = JSON.parse(response.body)
response.status.should == 200
json['id'].should eq(jamblaster.id)
get :get_tokens, {:format=>'json' }
response.status.should == 200
json = JSON.parse(response.body)
json.length.should eq(1)
vtoken = json[0]["vtoken"]
vtoken.should eq("vtoken2")
post :pair, {:format => 'json', vtoken: 'vtoken2', scid: 'sibling_id4', jbid: jamblaster.client_id}
response.status.should == 200
json = JSON.parse(response.body)
json["id"].should eq jamblaster.id
end
end
describe "logged in" do
before(:each) do
controller.current_user = user
end
it "get_tokens" do
get :get_tokens, {:format=>'json' }
response.status.should == 200
end
it "start_pairing" do
post :start_pairing, {:format=>'json'}
response.status.should == 422
end
it "pair" do
post :pair, {:format=>'json'}
response.status.should == 404
end
end
describe "not logged in" do
before(:each) do
controller.current_user = nil
end
it "get_tokens" do
get :get_tokens, {:format=>'json'}
response.status.should == 403
end
it "start_pairing" do
post :start_pairing, {:format=>'json'}
response.status.should == 403
end
it "pair" do
post :pair, {:format=>'json'}
response.status.should == 403
end
end
end