From 0f37d1523c1f4eb118a6d162099fb3d16d516cf8 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Tue, 2 Oct 2012 22:50:23 -0500 Subject: [PATCH 1/3] * VRFS-15: new models for sessions REST API --- lib/jam_ruby.rb | 4 +-- lib/jam_ruby/message_factory.rb | 30 ++++++++++----------- lib/jam_ruby/models/jam_session.rb | 20 -------------- lib/jam_ruby/models/jam_session_member.rb | 14 ---------- lib/jam_ruby/models/music_session.rb | 21 +++++++++++++++ lib/jam_ruby/models/music_session_client.rb | 14 ++++++++++ lib/jam_ruby/models/user.rb | 6 ++--- spec/factories.rb | 7 +++-- spec/jam_ruby/models/jam_session_spec.rb | 20 -------------- spec/jam_ruby/models/music_session_spec.rb | 20 ++++++++++++++ 10 files changed, 78 insertions(+), 78 deletions(-) delete mode 100644 lib/jam_ruby/models/jam_session.rb delete mode 100644 lib/jam_ruby/models/jam_session_member.rb create mode 100644 lib/jam_ruby/models/music_session.rb create mode 100644 lib/jam_ruby/models/music_session_client.rb delete mode 100644 spec/jam_ruby/models/jam_session_spec.rb create mode 100644 spec/jam_ruby/models/music_session_spec.rb diff --git a/lib/jam_ruby.rb b/lib/jam_ruby.rb index 32786f931..044c639ea 100644 --- a/lib/jam_ruby.rb +++ b/lib/jam_ruby.rb @@ -4,9 +4,9 @@ require "jampb" require 'uuidtools' require "jam_ruby/version" require "jam_ruby/message_factory" -require "jam_ruby/models/jam_session_member" +require "jam_ruby/models/music_session_client" require "jam_ruby/models/user" -require "jam_ruby/models/jam_session" +require "jam_ruby/models/music_session" include Jampb diff --git a/lib/jam_ruby/message_factory.rb b/lib/jam_ruby/message_factory.rb index e8845c892..892886440 100644 --- a/lib/jam_ruby/message_factory.rb +++ b/lib/jam_ruby/message_factory.rb @@ -42,27 +42,27 @@ module JamRuby end # create a jam session login message - def login_jam_session(jam_session) - login_jam_session = Jampb::LoginJamSession.new(:jam_session => jam_session) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION, :target => SERVER_TARGET, :login_jam_session => login_jam_session) + def login_music_session(music_session) + login_music_session = Jampb::LoginMusicSession.new(:music_session => music_session) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_MUSIC_SESSION, :target => SERVER_TARGET, :login_music_session => login_music_session) end # create a jam session login message ack (success or on failure) - def login_jam_session_ack(error, error_reason) - login_jam_session_ack = Jampb::LoginJamSessionAck.new(:error => error, :error_reason => error_reason) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION_ACK, :target => CLIENT_TARGET, :login_jam_session_ack => login_jam_session_ack) + def login_music_session_ack(error, error_reason) + login_music_session_ack = Jampb::LoginMusicSessionAck.new(:error => error, :error_reason => error_reason) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION_ACK, :target => CLIENT_TARGET, :login_music_session_ack => login_music_session_ack) end # create a jam session 'leave session' message - def leave_jam_session(jam_session) - leave_jam_session = Jampb::LeaveJamSession.new(:jam_session => jam_session) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION, :target => SERVER_TARGET, :leave_jam_session => leave_jam_session) + def leave_music_session(music_session) + leave_music_session = Jampb::LeaveMusicSession.new(:music_session => music_session) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION, :target => SERVER_TARGET, :leave_music_session => leave_music_session) end # create a jam session leave message ack (success or on failure) - def leave_jam_session_ack(error, error_reason) - leave_jam_session_ack = Jampb::LeaveJamSessionAck.new(:error => error, :error_reason => error_reason) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION_ACK, :target => CLIENT_TARGET, :leave_jam_session_ack => leave_jam_session_ack) + def leave_music_session_ack(error, error_reason) + leave_music_session_ack = Jampb::LeaveMusicSessionAck.new(:error => error, :error_reason => error_reason) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION_ACK, :target => CLIENT_TARGET, :leave_music_session_ack => leave_music_session_ack) end # create a server error @@ -78,9 +78,9 @@ module JamRuby end # create a user-joined session messag - def user_joined_jam_session(user_id, username) - joined = Jampb::UserJoinedJamSession.new(:user_id => user_id, :username => username) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_JAM_SESSION, :target => CLIENT_TARGET, :user_joined_jam_session => joined) + def user_joined_music_session(user_id, username) + joined = Jampb::UserJoinedMusicSession.new(:user_id => user_id, :username => username) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_JAM_SESSION, :target => CLIENT_TARGET, :user_joined_music_session => joined) end # create a test message to send in session diff --git a/lib/jam_ruby/models/jam_session.rb b/lib/jam_ruby/models/jam_session.rb deleted file mode 100644 index 718f63b2f..000000000 --- a/lib/jam_ruby/models/jam_session.rb +++ /dev/null @@ -1,20 +0,0 @@ -module JamRuby - class JamSession < ActiveRecord::Base - - self.primary_key = 'id' - belongs_to :creator, :inverse_of => :jam_sessions, :class_name => "JamRuby::User", :foreign_key => "user_id" - - has_many :jam_session_members, :class_name => "JamRuby::JamSessionMember" - has_many :users, :through => :jam_session_members, :class_name => "JamRuby::User" - - # Verifies that the specified user can join this jam session - def access?(user) - return self.public || self.users.exists?(user) - end - - def to_s - return name - end - - end -end diff --git a/lib/jam_ruby/models/jam_session_member.rb b/lib/jam_ruby/models/jam_session_member.rb deleted file mode 100644 index 432c16e2d..000000000 --- a/lib/jam_ruby/models/jam_session_member.rb +++ /dev/null @@ -1,14 +0,0 @@ -module JamRuby - class JamSessionMember < ActiveRecord::Base - - self.primary_key = 'id' - belongs_to :user, :class_name => "JamRuby::User" - belongs_to :jam_session, :class_name => "JamRuby::JamSession" - - def to_s - return self.user.to_s - end - - - end -end diff --git a/lib/jam_ruby/models/music_session.rb b/lib/jam_ruby/models/music_session.rb new file mode 100644 index 000000000..ff65d19a6 --- /dev/null +++ b/lib/jam_ruby/models/music_session.rb @@ -0,0 +1,21 @@ +module JamRuby + class MusicSession < ActiveRecord::Base + + self.primary_key = 'id' + belongs_to :creator, :inverse_of => :music_sessions, :class_name => "JamRuby::User", :foreign_key => "user_id" + + has_many :music_session_clients, :class_name => "JamRuby::MusicSessionClient" + has_many :users, :through => :music_session_clients, :class_name => "JamRuby::User" + + # Verifies that the specified user can join this jam session + def access?(user) + #return self.public || self.users.exists?(user) + return true + end + + def to_s + return description + end + + end +end diff --git a/lib/jam_ruby/models/music_session_client.rb b/lib/jam_ruby/models/music_session_client.rb new file mode 100644 index 000000000..15519afdd --- /dev/null +++ b/lib/jam_ruby/models/music_session_client.rb @@ -0,0 +1,14 @@ +module JamRuby + class MusicSessionClient < ActiveRecord::Base + self.primary_key = 'id' + + belongs_to :user, :class_name => "JamRuby::User" + belongs_to :music_session, :class_name => "JamRuby::MusicSession" + + def to_s + return "#{self.user.to_s}:#{self.ip_address}" + end + + + end +end diff --git a/lib/jam_ruby/models/user.rb b/lib/jam_ruby/models/user.rb index 863658424..f9a0bf67c 100644 --- a/lib/jam_ruby/models/user.rb +++ b/lib/jam_ruby/models/user.rb @@ -6,9 +6,9 @@ module JamRuby self.primary_key = 'id' - has_many :jam_session_members, :class_name => "JamRuby::JamSessionMember" - has_many :created_jam_sessions, :foreign_key => "user_id", :inverse_of => :user, :class_name => "JamRuby::JamSession" # sessions *created* by the user - has_many :jam_sessions, :through => :jam_session_members, :class_name => "JamRuby::JamSession" + has_many :music_session_clients, :class_name => "JamRuby::MusicSessionClient" + has_many :created_music_sessions, :foreign_key => "user_id", :inverse_of => :user, :class_name => "JamRuby::MusicSession" # sessions *created* by the user + has_many :music_sessions, :through => :music_session_clients, :class_name => "JamRuby::MusicSession" has_secure_password diff --git a/spec/factories.rb b/spec/factories.rb index fc4ec00ee..dc1bcc916 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -10,12 +10,11 @@ FactoryGirl.define do end end - factory :jam_session, :class => JamRuby::JamSession do - sequence(:name) { |n| "Jam Session #{n}" } - public false + factory :music_session, :class => JamRuby::MusicSession do + sequence(:description) { |n| "Music Session #{n}" } end - factory :jam_session_member, :class => JamRuby::JamSessionMember do + factory :music_session_client, :class => JamRuby::MusicSessionClient do end end \ No newline at end of file diff --git a/spec/jam_ruby/models/jam_session_spec.rb b/spec/jam_ruby/models/jam_session_spec.rb deleted file mode 100644 index 6581d8f86..000000000 --- a/spec/jam_ruby/models/jam_session_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'spec_helper' - -describe JamSession do - - it 'can grant access to valid user' do - - user1 = FactoryGirl.create(:user) # in the jam session - user2 = FactoryGirl.create(:user) # in the jam session - user3 = FactoryGirl.create(:user) # not in the jam session - - jam_session = FactoryGirl.create(:jam_session, :creator => user1) - - jam_session_member1 = FactoryGirl.create(:jam_session_member, :user => user1, :jam_session => jam_session) - jam_session_member2 = FactoryGirl.create(:jam_session_member, :user => user2, :jam_session => jam_session) - - jam_session.access?(user1).should == true - jam_session.access?(user2).should == true - jam_session.access?(user3).should == false - end -end diff --git a/spec/jam_ruby/models/music_session_spec.rb b/spec/jam_ruby/models/music_session_spec.rb new file mode 100644 index 000000000..5fbcdbbb7 --- /dev/null +++ b/spec/jam_ruby/models/music_session_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe MusicSession do + + it 'can grant access to valid user' do + + user1 = FactoryGirl.create(:user) # in the jam session + user2 = FactoryGirl.create(:user) # in the jam session + user3 = FactoryGirl.create(:user) # not in the jam session + + music_session = FactoryGirl.create(:music_session, :creator => user1) + + music_session_member1 = FactoryGirl.create(:music_session_client, :user => user1, :music_session => music_session, :ip_address => "1.1.1.1") + music_session_member2 = FactoryGirl.create(:music_session_client, :user => user2, :music_session => music_session, :ip_address => "2.2.2.2") + + music_session.access?(user1).should == true + music_session.access?(user2).should == true + #music_session.access?(user3).should == false -- wait until we have finalized access models in place + end +end From 4c0f21741e30b2696efb47f2ad6e65dd5b6ce1ae Mon Sep 17 00:00:00 2001 From: tihot_jk Date: Wed, 3 Oct 2012 00:34:22 -0700 Subject: [PATCH 2/3] Fixing the peer auth issues --- spec/spec_db.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/spec_db.rb b/spec/spec_db.rb index d65d254a5..275a1b485 100644 --- a/spec/spec_db.rb +++ b/spec/spec_db.rb @@ -3,9 +3,9 @@ class SpecDb TEST_DB_NAME="jam_ruby_test" def self.recreate_database - conn = PG::Connection.open("dbname=postgres user=postgres password=postgres") + conn = PG::Connection.open("dbname=postgres user=postgres password=postgres host=localhost") conn.exec("DROP DATABASE IF EXISTS #{TEST_DB_NAME}") conn.exec("CREATE DATABASE #{TEST_DB_NAME}") - JamDb::Migrator.new.migrate(:dbname => TEST_DB_NAME, :user => "postgres", :password => "postgres") + JamDb::Migrator.new.migrate(:dbname => TEST_DB_NAME, :user => "postgres", :password => "postgres", :host => "localhost") end end From ee111930d24141924b79716dc4bd70a88aeb7803 Mon Sep 17 00:00:00 2001 From: Seth Call Date: Thu, 4 Oct 2012 21:39:03 -0500 Subject: [PATCH 3/3] * updating message_factory to use new jam-pb naming --- lib/jam_ruby/message_factory.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/jam_ruby/message_factory.rb b/lib/jam_ruby/message_factory.rb index 892886440..cae9f8897 100644 --- a/lib/jam_ruby/message_factory.rb +++ b/lib/jam_ruby/message_factory.rb @@ -41,28 +41,28 @@ module JamRuby return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_ACK, :target => CLIENT_TARGET, :login_ack => login_ack) end - # create a jam session login message + # create a music session login message def login_music_session(music_session) login_music_session = Jampb::LoginMusicSession.new(:music_session => music_session) return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_MUSIC_SESSION, :target => SERVER_TARGET, :login_music_session => login_music_session) end - # create a jam session login message ack (success or on failure) + # create a music session login message ack (success or on failure) def login_music_session_ack(error, error_reason) login_music_session_ack = Jampb::LoginMusicSessionAck.new(:error => error, :error_reason => error_reason) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_JAM_SESSION_ACK, :target => CLIENT_TARGET, :login_music_session_ack => login_music_session_ack) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LOGIN_MUSIC_SESSION_ACK, :target => CLIENT_TARGET, :login_music_session_ack => login_music_session_ack) end - # create a jam session 'leave session' message + # create a music session 'leave session' message def leave_music_session(music_session) leave_music_session = Jampb::LeaveMusicSession.new(:music_session => music_session) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION, :target => SERVER_TARGET, :leave_music_session => leave_music_session) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_MUSIC_SESSION, :target => SERVER_TARGET, :leave_music_session => leave_music_session) end - # create a jam session leave message ack (success or on failure) + # create a music session leave message ack (success or on failure) def leave_music_session_ack(error, error_reason) leave_music_session_ack = Jampb::LeaveMusicSessionAck.new(:error => error, :error_reason => error_reason) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_JAM_SESSION_ACK, :target => CLIENT_TARGET, :leave_music_session_ack => leave_music_session_ack) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::LEAVE_MUSIC_SESSION_ACK, :target => CLIENT_TARGET, :leave_music_session_ack => leave_music_session_ack) end # create a server error @@ -80,7 +80,7 @@ module JamRuby # create a user-joined session messag def user_joined_music_session(user_id, username) joined = Jampb::UserJoinedMusicSession.new(:user_id => user_id, :username => username) - return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_JAM_SESSION, :target => CLIENT_TARGET, :user_joined_music_session => joined) + return Jampb::ClientMessage.new(:type => ClientMessage::Type::USER_JOINED_MUSIC_SESSION, :target => CLIENT_TARGET, :user_joined_music_session => joined) end # create a test message to send in session @@ -105,7 +105,7 @@ module JamRuby return msg.target == MessageFactory::CLIENT_TARGET end - # is this message directed to a (jam) session? + # is this message directed to a (music) session? def session_directed? msg return msg.target.start_with? MessageFactory::SESSION_TARGET_PREFIX end