* VRFS-3968 - refine responses for jamblaster pairing API

This commit is contained in:
Seth Call 2016-02-29 11:35:18 -06:00
parent 4c3c23606a
commit 681b27a4b4
11 changed files with 82 additions and 20 deletions

View File

@ -336,3 +336,4 @@ teacher_student_flags.sql
add_sale_source_col.sql
jamblaster_v2.sql
acapella_rename.sql
jamblaster_pairing_active.sql

View File

@ -0,0 +1 @@
ALTER TABLE jamblaster_pairing_requests ADD COLUMN active BOOLEAN NOT NULL DEFAULT FALSE;

View File

@ -23,6 +23,10 @@ module JamRuby
self.serial_no = nil if self.serial_no == ''
end
def most_recent_pairing
jamblaster_pairing_requests.where(active: true).first
end
class << self
@@mq_router = MQRouter.new

View File

@ -12,5 +12,17 @@ module JamRuby
def key
sibling_key
end
def activate(key)
JamblasterPairingRequest.transaction do
JamblasterPairingRequest.where(jamblaster_id: jamblaster_id).update_all(active: false)
self.active = true
self.sibling_key = key
if !self.save
raise ActiveRecord::Rollback
end
end
end
end
end

View File

@ -903,7 +903,6 @@ FactoryGirl.define do
association :jamblaster, factory: :jamblaster
sequence(:jamblaster_client_id ) { |n| "jamblaster_client_id#{n}" }
sequence(:sibling_client_id ) { |n| "sibling_client_id#{n}" }
sequence(:sibling_key ) { |n| "sibling_key#{n}" }
end

View File

@ -2,8 +2,8 @@ require 'spec_helper'
describe Jamblaster do
let(:jamblaster) {FactoryGirl.create(:jamblaster)}
let(:user) {FactoryGirl.create(:user)}
let(:jamblaster) { FactoryGirl.create(:jamblaster) }
let(:user) { FactoryGirl.create(:user) }
it "can be created" do
FactoryGirl.create(:jamblaster)
@ -12,6 +12,28 @@ describe Jamblaster do
it "can associate to users" do
jamblaster.users.should eq([])
user.jamblasters.should eq([])
end
describe "most_recent_pairings" do
it "basic funnction" do
jamblaster.most_recent_pairing.should be nil
pairing1 = FactoryGirl.create(:jamblaster_pairing_request, user: user, jamblaster: jamblaster, vtoken: 'token2', sibling_key: nil)
jamblaster.most_recent_pairing.should be nil
pairing1.activate('abc')
jamblaster.most_recent_pairing.should eql pairing1
pairing2 = FactoryGirl.create(:jamblaster_pairing_request, user: user, jamblaster: jamblaster, sibling_key: 'key1', vtoken: 'token1')
jamblaster.most_recent_pairing.should eql pairing1
pairing2.activate('key2')
jamblaster.most_recent_pairing.should eql pairing2
end
end
end

View File

@ -174,10 +174,9 @@ class ApiJamblastersController < ApiController
jamblaster.save!
end
pairing_request.activate(key)
pairing_request.sibling_key = key
if !pairing_request.save
if pairing_request.errors.any?
respond_with_model(pairing_request)
else
Jamblaster.send_pair_attempt(jbid, user_id, key)

View File

@ -2,6 +2,10 @@ object @jamblaster
attributes :id, :serial_no, :client_id
child(:jamblaster_pairing_requests => :pairings) {
attributes :id, :user_id, :sibling_client_id, :vtoken, :key
child(:most_recent_pairing => :pairing) do |pairing|
attributes :key
end
child(:users => :users) {
attributes :id
}

View File

@ -2,6 +2,7 @@ object @jamblasters
attributes :id, :serial_no, :client_id
child(:jamblaster_pairing_requests => :pairings) {
attributes :id, :user_id, :sibling_client_id, :jamblaster_client_id, :vtoken, :key
}
child(:most_recent_pairing => :pairing) do |pairing|
attributes :key, :user_id
end

View File

@ -58,7 +58,24 @@ describe ApiJamblastersController 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)
json["pairing"].should be nil
json["users"].length.should eq(1)
json["users"][0]["id"].should eql user.id
pairing1 = FactoryGirl.create(:jamblaster_pairing_request, user: user, jamblaster: jamblaster, vtoken:'token2', sibling_key:nil)
get :auth_users, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no}
response.status.should == 200
json = JSON.parse(response.body)
json["pairing"].should be nil
pairing1.activate('abc')
pairing1.errors.any?.should be false
get :auth_users, {:format => 'json', jbid: jamblaster.client_id, serial_no: jamblaster.serial_no}
response.status.should == 200
json = JSON.parse(response.body)
json["pairing"]["key"].should eql 'abc'
end
end
@ -67,7 +84,8 @@ describe ApiJamblastersController 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)
json["pairing"].should be nil
json["users"].length.should eq(0)
end
end
@ -245,8 +263,8 @@ describe ApiJamblastersController do
response.status.should == 200
json = JSON.parse(response.body)
json.length.should eq(1)
vtoken = json[0]["pairings"][0]["vtoken"]
vtoken.should eq("vtoken4")
key = json[0]["pairing"]["key"]
key.should eq("abc")
end
end
@ -277,8 +295,10 @@ describe ApiJamblastersController do
response.status.should == 200
json = JSON.parse(response.body)
json.length.should eq(1)
vtoken = json[0]["pairings"][0]["vtoken"]
vtoken.should eq("vtoken4")
key = json[0]["pairing"]["key"]
key.should eq("abc")
puts response.body
jamblaster.reload
jamblaster.users.include?(user).should be true

View File

@ -872,7 +872,6 @@ FactoryGirl.define do
association :jamblaster, factory: :jamblaster
sequence(:jamblaster_client_id ) { |n| "jamblaster_client_id#{n}" }
sequence(:sibling_client_id ) { |n| "sibling_client_id#{n}" }
sequence(:sibling_key ) { |n| "sibling_key#{n}" }
end
end