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 "can_pair" do it "works" do connection1 = FactoryGirl.create(:connection, :user => user, client_id: 'abc1') get :can_pair, {:format => 'json', jbid: connection1.client_id, user_id: user.id} response.status.should == 200 end end describe "is_allowed" do before(:each) do user.jamblasters << jamblaster user.save! end it "works" do get :is_allowed, {:format => 'json', jbid: jamblaster.client_id, user_id: user.id} response.status.should == 200 end end describe "auth_users" do before(:each) do user.jamblasters << jamblaster user.save! end it "works" do get :auth_users, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no} response.status.should == 200 json = JSON.parse(response.body) json["pairings"].length.should eq(0) end 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, vtoken: 'vtoken'} response.status.should == 200 json = JSON.parse(response.body) request = JamblasterPairingRequest.where(jamblaster_id: jamblaster.id).first request.should_not be_nil request.user.should eql(user) request.vtoken.should eq 'vtoken' end it "returns 422 if bogus jamblaster" do post :start_pairing, {:format => 'json', jbid: 'nada', vtoken: 'vtoken'} 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, vtoken: 'vtoken2'} response.status.should == 200 request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken2', user_id: user.id).first request.should_not be_nil request.user.should eql(user) request.vtoken.should eq 'vtoken2' request.jamblaster_client_id.should eq jamblaster.client_id post :login, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, user_id: user.id, vtoken: 'vtoken2'} json = JSON.parse(response.body) response.status.should == 200 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, vtoken: 'vtoken4'} response.status.should == 200 request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken4', user_id: user.id).first request.should_not be_nil request.user.should eql(user) request.vtoken.should eq 'vtoken4' request.jamblaster_client_id.should eq jamblaster.client_id post :login, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, user_id: user.id, vtoken: 'vtoken4'} json = JSON.parse(response.body) response.status.should == 200 post :pair, {:format => 'json', vtoken: 'vtoken4', user_id: user.id, jbid: jamblaster.client_id, key: 'abc'} response.status.should == 200 json = JSON.parse(response.body) json["id"].should eq jamblaster.id get :get_tokens, {:format => 'json'} response.status.should == 200 json = JSON.parse(response.body) puts "JSON #{json}" json.length.should eq(1) vtoken = json[0]["pairings"][0]["vtoken"] vtoken.should eq("vtoken4") 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