fixed issues found in unit tests
This commit is contained in:
parent
4333a1d91f
commit
c3616a0cb3
|
|
@ -372,8 +372,8 @@ module JamWebsockets
|
|||
remove_user(context)
|
||||
|
||||
# remove this connection from the database
|
||||
connection = JamRuby::Connection.delete_all "user_id = '#{context.user.id}' AND client_id = '#{context.client.client_id}'"
|
||||
send_friend_update(client, user, false)
|
||||
#JamRuby::Connection.delete_all "user_id = '#{context.user.id}' AND client_id = '#{context.client.client_id}'"
|
||||
#send_friend_update(context.user, false)
|
||||
|
||||
if !context.session.nil?
|
||||
remove_session(context)
|
||||
|
|
@ -471,10 +471,11 @@ module JamWebsockets
|
|||
add_user(context)
|
||||
|
||||
# log this connection in the database
|
||||
connection = JamRuby::Connection.new(user.id, client.id)
|
||||
connection = JamRuby::Connection.new(:user => user, :client_id => client.client_id)
|
||||
@log.debug "Created connection => #{connection.user}, #{connection.client_id}"
|
||||
|
||||
if connection.save?
|
||||
send_friend_update(client, user, true)
|
||||
if connection.save
|
||||
send_friend_update(user, true)
|
||||
end
|
||||
end
|
||||
else
|
||||
|
|
@ -482,16 +483,18 @@ module JamWebsockets
|
|||
end
|
||||
end
|
||||
|
||||
def send_friend_update(client, user, online)
|
||||
unless user.friends.nil?
|
||||
@log.debug "sending friend update message to friends"
|
||||
def send_friend_update(user, online)
|
||||
@log.debug "sending friend update for user #{user} online = #{online}"
|
||||
|
||||
if user.friends.exists?
|
||||
@log.debug "user has friends - sending friend updates"
|
||||
|
||||
# create the friend_update message
|
||||
friend_update_msg = @message_factory.friend_update(user.id, online)
|
||||
|
||||
# send the friend_update to each friend that has active connections
|
||||
user.friends.each do |friend|
|
||||
@log.debug "sending friend update message to #{context}"
|
||||
@log.debug "sending friend update message to #{friend}"
|
||||
|
||||
# put it on the topic exchange for users
|
||||
@users_exchange.publish(friend_update_msg.to_s, :routing_key => "user.#{friend.id}")
|
||||
|
|
@ -503,8 +506,11 @@ module JamWebsockets
|
|||
context = @clients[client]
|
||||
@log.debug "updating timestamp for user #{context}"
|
||||
connection = Connection.find_by_user_id_and_client_id(context.user.user_id, context.client.client_id)
|
||||
connection.updated_at = DateTime.now
|
||||
connection.save
|
||||
|
||||
unless connection.nil?
|
||||
connection.updated_at = DateTime.now
|
||||
connection.save
|
||||
end
|
||||
end
|
||||
|
||||
def handle_join_music_session(join_music_session, client)
|
||||
|
|
@ -539,7 +545,7 @@ module JamWebsockets
|
|||
|
||||
# send 'new client' message to other members in the session
|
||||
handle_session_directed(session_id,
|
||||
@message_factory.user_joined_jam_session(context.user.id, context.user.name),
|
||||
@message_factory.user_joined_music_session(context.user.id, context.user.name),
|
||||
client)
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -17,17 +17,17 @@ module JamWebsockets
|
|||
|
||||
@log.info "starting server #{host}:#{port}"
|
||||
|
||||
@router.start
|
||||
@router.start
|
||||
|
||||
# if you don't do this, the app won't exit unless you kill -9
|
||||
at_exit do
|
||||
@log.info "cleaning up server"
|
||||
@router.cleanup
|
||||
end
|
||||
# if you don't do this, the app won't exit unless you kill -9
|
||||
at_exit do
|
||||
@log.info "cleaning up server"
|
||||
@router.cleanup
|
||||
end
|
||||
|
||||
EventMachine.run {
|
||||
EventMachine::WebSocket.start(:host => "0.0.0.0", :port => options[:port], :debug => options[:emwebsocket_debug]) do |ws|
|
||||
@log.info "new client #{ws}"
|
||||
@log.info "new client #{ws}"
|
||||
@router.new_client(ws)
|
||||
end
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,35 +2,35 @@ require 'spec_helper'
|
|||
require 'thread'
|
||||
|
||||
LoginClient = Class.new do
|
||||
attr_accessor :onmsgblock, :onopenblock, :encode_json, :client_id
|
||||
attr_accessor :onmsgblock, :onopenblock, :encode_json, :client_id
|
||||
|
||||
def initiaize()
|
||||
def initialize()
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
def onopen(&block)
|
||||
@onopenblock = block
|
||||
end
|
||||
def onopen(&block)
|
||||
@onopenblock = block
|
||||
end
|
||||
|
||||
def onmessage(&block)
|
||||
@onmsgblock = block
|
||||
end
|
||||
def onmessage(&block)
|
||||
@onmsgblock = block
|
||||
end
|
||||
|
||||
def close(&block)
|
||||
@oncloseblock = block
|
||||
end
|
||||
def close(&block)
|
||||
@oncloseblock = block
|
||||
end
|
||||
|
||||
def close_websocket()
|
||||
|
||||
end
|
||||
def close_websocket()
|
||||
|
||||
end
|
||||
|
||||
def send(msg)
|
||||
puts msg
|
||||
end
|
||||
def send(msg)
|
||||
puts msg
|
||||
end
|
||||
|
||||
def get_peername
|
||||
return "\x00\x02\x93\v\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00" # 37643, "localhost"
|
||||
end
|
||||
def get_peername
|
||||
return "\x00\x02\x93\v\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00" # 37643, "localhost"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
@ -38,42 +38,43 @@ end
|
|||
# does a login and returns client
|
||||
def login(router, user, password)
|
||||
|
||||
message_factory = MessageFactory.new
|
||||
client = LoginClient.new
|
||||
message_factory = MessageFactory.new
|
||||
client = LoginClient.new
|
||||
|
||||
login_ack = message_factory.login_ack("127.0.0.1")
|
||||
login_ack = message_factory.login_ack("127.0.0.1")
|
||||
|
||||
router.should_receive(:send_to_client).with(client, login_ack)
|
||||
client.should_receive(:onclose)
|
||||
client.should_receive(:onerror)
|
||||
router.should_receive(:send_to_client).with(client, login_ack)
|
||||
client.should_receive(:onclose)
|
||||
client.should_receive(:onerror)
|
||||
client.should_receive(:request).and_return({ "query" => { "pb" => "true" } })
|
||||
client.should_receive(:get_peername).and_return("\x00\x02\x93\v\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00")
|
||||
client.should_receive(:get_peername).and_return("\x00\x02\x93\v\x7F\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00")
|
||||
|
||||
@router.new_client(client)
|
||||
client.onopenblock.call
|
||||
@router.new_client(client)
|
||||
client.onopenblock.call
|
||||
|
||||
# create a login message, and pass it into the router via onmsgblock.call
|
||||
login = message_factory.login_with_user_pass(user.email, password)
|
||||
# create a login message, and pass it into the router via onmsgblock.call
|
||||
login = message_factory.login_with_user_pass(user.email, password)
|
||||
|
||||
# first log in
|
||||
client.onmsgblock.call login.to_s
|
||||
# first log in
|
||||
client.onmsgblock.call login.to_s
|
||||
|
||||
# then join music session
|
||||
return client
|
||||
# then join music session
|
||||
return client
|
||||
end
|
||||
|
||||
|
||||
def login_music_session(router, client, music_session)
|
||||
message_factory = MessageFactory.new
|
||||
login_music_session = message_factory.login_music_session(music_session.id)
|
||||
login_ack = message_factory.login_music_session_ack(false, nil);
|
||||
router.should_receive(:send_to_client).with(client, login_ack)
|
||||
client.onmsgblock.call login_music_session.to_s
|
||||
message_factory = MessageFactory.new
|
||||
login_music_session = message_factory.login_music_session(music_session.id)
|
||||
login_ack = message_factory.login_music_session_ack(false, nil);
|
||||
router.should_receive(:send_to_client).with(client, login_ack)
|
||||
client.onmsgblock.call login_music_session.to_s
|
||||
end
|
||||
|
||||
|
||||
describe Router do
|
||||
|
||||
message_factory = MessageFactory.new
|
||||
message_factory = MessageFactory.new
|
||||
|
||||
before do
|
||||
|
||||
|
|
@ -107,24 +108,24 @@ describe Router do
|
|||
end
|
||||
end
|
||||
|
||||
describe "topic routing helpers" do
|
||||
it "create and delete user lookup set" do
|
||||
user = double(User)
|
||||
user.should_receive(:id).any_number_of_times.and_return("1")
|
||||
client = double("client")
|
||||
context = ClientContext.new(user, client)
|
||||
describe "topic routing helpers" do
|
||||
it "create and delete user lookup set" do
|
||||
user = double(User)
|
||||
user.should_receive(:id).any_number_of_times.and_return("1")
|
||||
client = double("client")
|
||||
context = ClientContext.new(user, client)
|
||||
|
||||
@router.user_context_lookup.length.should == 0
|
||||
@router.user_context_lookup.length.should == 0
|
||||
|
||||
@router.add_user(context)
|
||||
|
||||
@router.user_context_lookup.length.should == 1
|
||||
@router.add_user(context)
|
||||
|
||||
@router.user_context_lookup.length.should == 1
|
||||
|
||||
@router.remove_user(context)
|
||||
@router.remove_user(context)
|
||||
|
||||
@router.user_context_lookup.length.should == 0
|
||||
end
|
||||
end
|
||||
@router.user_context_lookup.length.should == 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe "login" do
|
||||
|
|
@ -133,7 +134,7 @@ describe Router do
|
|||
|
||||
attr_accessor :onmsgblock, :onopenblock, :encode_json, :client_id
|
||||
|
||||
def initiaize()
|
||||
def initialize()
|
||||
|
||||
end
|
||||
|
||||
|
|
@ -145,8 +146,8 @@ describe Router do
|
|||
@onmsgblock = block
|
||||
end
|
||||
|
||||
def close_websocket()
|
||||
end
|
||||
def close_websocket()
|
||||
end
|
||||
|
||||
def close()
|
||||
end
|
||||
|
|
@ -178,9 +179,10 @@ describe Router do
|
|||
:password => "foobar", :password_confirmation => "foobar")
|
||||
@user.save
|
||||
|
||||
client1 = login(@router, @user, "foobar")
|
||||
end
|
||||
puts "USER ID = #{@user.id}"
|
||||
|
||||
client1 = login(@router, @user, "foobar")
|
||||
end
|
||||
|
||||
it "should allow music_session_join of valid user", :mq => true do
|
||||
|
||||
|
|
@ -195,35 +197,34 @@ describe Router do
|
|||
|
||||
# make a music_session and define two members
|
||||
|
||||
# create client 1, log him in, and log him in to music session
|
||||
client1 = login(@router, user1, "foobar")
|
||||
login_music_session(@router, client1, music_session)
|
||||
# create client 1, log him in, and log him in to music session
|
||||
client1 = login(@router, user1, "foobar")
|
||||
login_music_session(@router, client1, music_session)
|
||||
end
|
||||
|
||||
it "should allow two valid subscribers to communicate with session-directed messages", :mq => true do
|
||||
it "should allow two valid subscribers to communicate with session-directed messages", :mq => true do
|
||||
|
||||
EventMachine.run do
|
||||
user1 = FactoryGirl.create(:user) # in the music session
|
||||
user2 = FactoryGirl.create(:user) # in the music session
|
||||
EventMachine.run do
|
||||
user1 = FactoryGirl.create(:user) # in the music session
|
||||
user2 = FactoryGirl.create(:user) # in the music session
|
||||
|
||||
music_session = FactoryGirl.create(:music_session, :creator => user1)
|
||||
music_session = FactoryGirl.create(:music_session, :creator => user1)
|
||||
|
||||
music_session_member1 = FactoryGirl.create(:music_session_client, :user => user1, :music_session => music_session)
|
||||
music_session_member2 = FactoryGirl.create(:music_session_client, :user => user2, :music_session => music_session)
|
||||
music_session_member1 = FactoryGirl.create(:music_session_client, :user => user1, :music_session => music_session)
|
||||
music_session_member2 = FactoryGirl.create(:music_session_client, :user => user2, :music_session => music_session)
|
||||
|
||||
# make a music_session and define two members
|
||||
# make a music_session and define two members
|
||||
|
||||
|
||||
# create client 1, log him in, and log him in to music session
|
||||
client1 = login(@router, user1, "foobar")
|
||||
login_music_session(@router, client1, music_session)
|
||||
# create client 1, log him in, and log him in to music session
|
||||
client1 = login(@router, user1, "foobar")
|
||||
login_music_session(@router, client1, music_session)
|
||||
|
||||
client2 = login(@router, user2, "foobar")
|
||||
login_music_session(@router, client2, music_session)
|
||||
EM.stop
|
||||
end
|
||||
client2 = login(@router, user2, "foobar")
|
||||
login_music_session(@router, client2, music_session)
|
||||
EM.stop
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue