* VRFS-3912 - more jamblaster tweaking

This commit is contained in:
Seth Call 2016-02-18 11:22:50 -06:00
parent 7f6b41d8b1
commit 9cc2ee4f4f
6 changed files with 40 additions and 56 deletions

View File

@ -1,2 +1,3 @@
ALTER TABLE jamblaster_pairing_requests ALTER COLUMN sibling_key DROP NOT NULL; ALTER TABLE jamblaster_pairing_requests ALTER COLUMN sibling_key DROP NOT NULL;
ALTER TABLE jamblaster_pairing_requests ADD COLUMN vtoken VARCHAR(400) NOT NULL; ALTER TABLE jamblaster_pairing_requests ADD COLUMN vtoken VARCHAR(400) NOT NULL;
ALTER TABLE jamblaster_pairing_requests DROP COLUMN sibling_client_id;

View File

@ -7,8 +7,10 @@ module JamRuby
validates :user, presence: true validates :user, presence: true
validates :jamblaster, presence: true validates :jamblaster, presence: true
validates :jamblaster_client_id, presence: true validates :jamblaster_client_id, presence: true
validates :sibling_client_id, presence: true
validates :vtoken, presence: true validates :vtoken, presence: true
def key
sibling_key
end
end end
end end

View File

@ -5,61 +5,48 @@ class ApiJamblastersController < ApiController
# called from jamblaster # called from jamblaster
def can_pair def can_pair
cid_a = params[:cid_a] jbid = params[:jbid]
cid_b = params[:cid_b] user_id = params[:user_id]
connection_a = nil connection_a = nil
connection_b = nil
connection_a = Connection.find_by_client_id(cid_a) if cid_a connection_a = Connection.find_by_client_id(jbid) if jbid
connection_b = Connection.find_by_client_id(cid_b) if cid_b user = User.find_by_id(user_id) if user_id
if connection_a.nil? if connection_a.nil?
render :json => {:message => 'No connection found with client_id ' + cid_a, reason: "cid_a"}, :status => 404 render :json => {:message => "No connection found with client_id #{jbid}" , reason: "jbid"}, :status => 404
return return
end end
if connection_b.nil? if user.nil?
render :json => {:message => 'No connection found with client_id ' + cid_b, reason: "cid_b"}, :status => 404 render :json => {:message => "No user found with user id #{user_id}", reason: "user_id"}, :status => 404
return return
end end
user_a = connection_a.user user_a = connection_a.user
user_b = connection_b.user
if user_a.nil? if user_a.nil?
render :json => {:message => 'No connection found with client_id ' + user_a, reason: "user_a"}, :status => 404 render :json => {:message => "No user found for jbid #{jbid}", reason: "user_a"}, :status => 404
return return
end end
if user_b.nil? if user_a.id == user.id
render :json => {:message => 'No connection found with client_id ' + user_b, reason: "user_b"}, :status => 404
return
end
if user_a.id == user_b.id
render :json => {}, :status => 200 render :json => {}, :status => 200
else else
render :json => {:message => 'Users do not match for both client IDs', reason: "can_not_pair"}, :status => 403 render :json => {:message => "Users do not match for both client IDs", reason: "can_not_pair"}, :status => 403
end end
end end
def is_allowed def is_allowed
#Pass the jbid & cbid. Reply is no error on true, else error #Pass the jbid & cbid. Reply is no error on true, else error
jbid = params[:jbid] jbid = params[:jbid]
cbid = params[:cbid] user_id = params[:user_id]
jamblaster = Jamblaster.find_by_client_id!(jbid) jamblaster = Jamblaster.find_by_client_id!(jbid)
connection = Connection.find_by_client_id(cbid) user = User.find_by_id(user_id)
if connection.nil?
render :json => {:message => 'No connection found with client_id ' + cbid, reason: "cbid"}, :status => 404
return
end
user = connection.user
if user.nil? if user.nil?
render :json => {:message => 'No user associated with the connection ' + cbid, reason: "cbid"}, :status => 404 render :json => {:message => "No user associated with the user #{user_id}", reason: "user_id"}, :status => 404
return return
end end
@ -80,7 +67,7 @@ class ApiJamblastersController < ApiController
@jamblaster = Jamblaster.where(client_id: jbid, serial_no: serial_no).first @jamblaster = Jamblaster.where(client_id: jbid, serial_no: serial_no).first
if @jamblaster.nil? if @jamblaster.nil?
render :json => {:message => 'No jamblaster found with serial_no ' + serial_no + ' and jbid' + jbid, reason: "serial_no"}, :status => 404 render :json => {:message => "No jamblaster found with serial_no #{serial_no} and jbid #{jbid}", reason: "serial_no"}, :status => 404
return return
end end
end end
@ -101,7 +88,6 @@ class ApiJamblastersController < ApiController
@pairing.user = current_user @pairing.user = current_user
@pairing.jamblaster_client_id = params[:jbid] @pairing.jamblaster_client_id = params[:jbid]
@pairing.jamblaster = jamblaster @pairing.jamblaster = jamblaster
@pairing.sibling_client_id = params[:scid]
@pairing.vtoken = params[:vtoken] @pairing.vtoken = params[:vtoken]
if !@pairing.save if !@pairing.save
respond_with_model(@pairing) respond_with_model(@pairing)
@ -111,20 +97,20 @@ class ApiJamblastersController < ApiController
end end
def login def login
scid = params[:scid] user_id = params[:user_id]
jbid = params[:jbid] jbid = params[:jbid]
vtoken = params[:vtoken] vtoken = params[:vtoken]
serial_no = params[:serial_no] serial_no = params[:serial_no]
pairing_request = JamblasterPairingRequest.where(jamblaster_client_id: jbid).where(sibling_client_id: scid).where(vtoken: vtoken).first pairing_request = JamblasterPairingRequest.where(jamblaster_client_id: jbid).where(user_id: user_id).where(vtoken: vtoken).first
jamblaster = Jamblaster.find_by_serial_no(serial_no) jamblaster = Jamblaster.find_by_serial_no(serial_no)
if jamblaster.nil? if jamblaster.nil?
render :json => {:message => 'No jamblaster found with serial_no ' + serial_no, reason: "serial_no"}, :status => 404 render :json => {:message => "No jamblaster found with serial_no #{serial_no}" , reason: "serial_no"}, :status => 404
return return
end end
if pairing_request.nil? if pairing_request.nil?
render :json => {:message => "No pairing request found with jbid=#{jbid} && sibling_client_id=#{scid} && vtoken=#{vtokne}", reason: "no_pairing_request"}, :status => 404 render :json => {:message => "No pairing request found with jbid=#{jbid} && user_id=#{user_id} && vtoken=#{vtoken}", reason: "no_pairing_request"}, :status => 404
return return
end end
@ -161,7 +147,7 @@ class ApiJamblastersController < ApiController
def pair def pair
key = params[:key] key = params[:key]
vtoken = params[:vtoken] vtoken = params[:vtoken]
scid = params[:scid] user_id = params[:user_id]
jbid = params[:jbid] jbid = params[:jbid]
jamblaster = Jamblaster.find_by_client_id!(jbid) jamblaster = Jamblaster.find_by_client_id!(jbid)
@ -188,7 +174,7 @@ class ApiJamblastersController < ApiController
if !pairing_request.save if !pairing_request.save
respond_with_model(pairing_request) respond_with_model(pairing_request)
else else
Jamblaster.send_pair_attempt(jbid, scid, key) Jamblaster.send_pair_attempt(jbid, user_id, key)
@jamblaster = jamblaster @jamblaster = jamblaster
end end
end end

View File

@ -3,5 +3,5 @@ object @jamblaster
attributes :id, :serial_no, :client_id attributes :id, :serial_no, :client_id
child(:jamblaster_pairing_requests => :pairings) { child(:jamblaster_pairing_requests => :pairings) {
attributes :sibling_client_id, :jamblaster_client_id, :vtoken, :key attributes :id, :user_id, :sibling_client_id, :vtoken, :key
} }

View File

@ -3,5 +3,5 @@ object @jamblasters
attributes :id, :serial_no, :client_id attributes :id, :serial_no, :client_id
child(:jamblaster_pairing_requests => :pairings) { child(:jamblaster_pairing_requests => :pairings) {
attributes :sibling_client_id, :jamblaster_client_id, :vtoken, :key attributes :id, :user_id, :sibling_client_id, :jamblaster_client_id, :vtoken, :key
} }

View File

@ -14,9 +14,8 @@ describe ApiJamblastersController do
describe "can_pair" do describe "can_pair" do
it "works" do it "works" do
connection1 = FactoryGirl.create(:connection, :user => user, client_id: 'abc1') connection1 = FactoryGirl.create(:connection, :user => user, client_id: 'abc1')
connection2 = FactoryGirl.create(:connection, :user => user, client_id: 'abc2')
get :can_pair, {:format => 'json', cid_a: connection1.client_id, cid_b: connection2.client_id} get :can_pair, {:format => 'json', jbid: connection1.client_id, user_id: user.id}
response.status.should == 200 response.status.should == 200
end end
end end
@ -28,9 +27,7 @@ describe ApiJamblastersController do
end end
it "works" do it "works" do
connection1 = FactoryGirl.create(:connection, :user => user, client_id: 'client_id3') get :is_allowed, {:format => 'json', jbid: jamblaster.client_id, user_id: user.id}
get :is_allowed, {:format => 'json', jbid: jamblaster.client_id, cbid: connection1.client_id}
response.status.should == 200 response.status.should == 200
end end
end end
@ -82,19 +79,19 @@ describe ApiJamblastersController do
end end
it "works" do it "works" do
post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, scid: 'sibling_id', vtoken: 'vtoken'} post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, vtoken: 'vtoken'}
json = JSON.parse(response.body)
response.status.should == 200 response.status.should == 200
json = JSON.parse(response.body)
request = JamblasterPairingRequest.where(jamblaster_id: jamblaster.id).first request = JamblasterPairingRequest.where(jamblaster_id: jamblaster.id).first
request.should_not be_nil request.should_not be_nil
request.user.should eql(user) request.user.should eql(user)
request.vtoken.should eq 'vtoken' request.vtoken.should eq 'vtoken'
request.sibling_client_id.should eq 'sibling_id'
end end
it "returns 422 if bogus jamblaster" do it "returns 422 if bogus jamblaster" do
post :start_pairing, {:format => 'json', jbid: 'nada', scid: 'sibling_id', vtoken: 'vtoken'} post :start_pairing, {:format => 'json', jbid: 'nada', vtoken: 'vtoken'}
json = JSON.parse(response.body) json = JSON.parse(response.body)
response.status.should == 422 response.status.should == 422
json = JSON.parse(response.body) json = JSON.parse(response.body)
@ -114,17 +111,16 @@ describe ApiJamblastersController do
end end
it "works" do it "works" do
post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, scid: 'sibling_id2', vtoken: 'vtoken2'} post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, vtoken: 'vtoken2'}
response.status.should == 200 response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken2', sibling_client_id: 'sibling_id2').first request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken2', user_id: user.id).first
request.should_not be_nil request.should_not be_nil
request.user.should eql(user) request.user.should eql(user)
request.vtoken.should eq 'vtoken2' request.vtoken.should eq 'vtoken2'
request.sibling_client_id.should eq 'sibling_id2'
request.jamblaster_client_id.should eq jamblaster.client_id 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', vtoken: 'vtoken2'} post :login, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, user_id: user.id, vtoken: 'vtoken2'}
json = JSON.parse(response.body) json = JSON.parse(response.body)
response.status.should == 200 response.status.should == 200
end end
@ -139,21 +135,20 @@ describe ApiJamblastersController do
it "works" do it "works" do
post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, scid: 'sibling_id4', vtoken: 'vtoken4'} post :start_pairing, {:format => 'json', jbid: jamblaster.client_id, vtoken: 'vtoken4'}
response.status.should == 200 response.status.should == 200
request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken4', sibling_client_id: 'sibling_id4').first request = JamblasterPairingRequest.where(jamblaster_client_id: jamblaster.client_id, vtoken: 'vtoken4', user_id: user.id).first
request.should_not be_nil request.should_not be_nil
request.user.should eql(user) request.user.should eql(user)
request.vtoken.should eq 'vtoken4' request.vtoken.should eq 'vtoken4'
request.sibling_client_id.should eq 'sibling_id4'
request.jamblaster_client_id.should eq jamblaster.client_id 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', vtoken: 'vtoken4'} post :login, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no, user_id: user.id, vtoken: 'vtoken4'}
json = JSON.parse(response.body) json = JSON.parse(response.body)
response.status.should == 200 response.status.should == 200
post :pair, {:format => 'json', vtoken: 'vtoken4', scid: 'sibling_id4', jbid: jamblaster.client_id, key: 'abc'} post :pair, {:format => 'json', vtoken: 'vtoken4', user_id: user.id, jbid: jamblaster.client_id, key: 'abc'}
response.status.should == 200 response.status.should == 200
json = JSON.parse(response.body) json = JSON.parse(response.body)
json["id"].should eq jamblaster.id json["id"].should eq jamblaster.id