From 1904c8f474cadbc3628f6f8e09e44ab8f9a9fa44 Mon Sep 17 00:00:00 2001 From: Bert Owen Date: Thu, 22 May 2014 00:24:40 +0800 Subject: [PATCH] VRFS-1675 completed --- .../jam_ruby/models/active_music_session.rb | 2 +- web/app/assets/javascripts/jam_rest.js | 1 + .../api_music_sessions_controller.rb | 2 +- web/app/views/api_music_sessions/create.rabl | 4 +- web/config/routes.rb | 2 +- .../active_music_sessions_api_spec.rb | 163 ++++++++++++------ web/spec/requests/music_sessions_api_spec.rb | 9 + 7 files changed, 122 insertions(+), 61 deletions(-) diff --git a/ruby/lib/jam_ruby/models/active_music_session.rb b/ruby/lib/jam_ruby/models/active_music_session.rb index 6acfacc88..9471a7875 100644 --- a/ruby/lib/jam_ruby/models/active_music_session.rb +++ b/ruby/lib/jam_ruby/models/active_music_session.rb @@ -391,7 +391,7 @@ module JamRuby Notification.send_band_session_join(active_music_session, music_session.band) end - return_value = active_music_session + return_value = connection else return_value = connection # rollback the transaction to make sure nothing is disturbed in the database diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index 0ffc575a8..9bbc66a54 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -68,6 +68,7 @@ dataType: "json", contentType: 'application/json', url: "/api/sessions/" + sessionId + "/participants", + data: JSON.stringify(options), processData: false }); } diff --git a/web/app/controllers/api_music_sessions_controller.rb b/web/app/controllers/api_music_sessions_controller.rb index 64c14a9ec..813035953 100644 --- a/web/app/controllers/api_music_sessions_controller.rb +++ b/web/app/controllers/api_music_sessions_controller.rb @@ -184,7 +184,7 @@ class ApiMusicSessionsController < ApiController client_id = params[:client_id] if client_id.nil? - raise JamArgumentError, "client_id must be specified" + raise JamArgumentError, "client_id must be asdfasfdasdf specified" end begin diff --git a/web/app/views/api_music_sessions/create.rabl b/web/app/views/api_music_sessions/create.rabl index c1fb2890c..a699b59e7 100644 --- a/web/app/views/api_music_sessions/create.rabl +++ b/web/app/views/api_music_sessions/create.rabl @@ -1 +1,3 @@ -object @music_session \ No newline at end of file +object @music_session + +attributes :id, :name, :description, :musician_access, :approval_required, :fan_access, :fan_chat, :band_id, :language, :timezone, :user_id \ No newline at end of file diff --git a/web/config/routes.rb b/web/config/routes.rb index b15770ad9..e77b7e6ef 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -145,7 +145,7 @@ SampleApp::Application.routes.draw do # music sessions match '/sessions/:id/participants/legacy' => 'api_music_sessions#participant_create_legacy', :via => :post # can be removed when new Create Session comes in - match '/sessions/:id/participants' => 'api_music_sesssions#participant_create', :via => :post + match '/sessions/:id/participants' => 'api_music_sessions#participant_create', :via => :post match '/participants/:id' => 'api_music_sessions#participant_show', :via => :get, :as => 'api_session_participant_detail' match '/participants/:id' => 'api_music_sessions#participant_delete', :via => :delete match '/sessions/:id' => 'api_music_sessions#show', :via => :get, :as => 'api_session_detail' diff --git a/web/spec/requests/active_music_sessions_api_spec.rb b/web/spec/requests/active_music_sessions_api_spec.rb index f775b5051..e2e3f62a5 100755 --- a/web/spec/requests/active_music_sessions_api_spec.rb +++ b/web/spec/requests/active_music_sessions_api_spec.rb @@ -1,6 +1,6 @@ require 'spec_helper' -describe "Music Session API ", :type => :api do +describe "Active Music Session API ", :type => :api do include Rack::Test::Methods @@ -23,7 +23,15 @@ describe "Music Session API ", :type => :api do let(:user) { FactoryGirl.create(:user) } # defopts are used to setup default options for the session - let(:defopts) { { :description => "a session", :fan_chat => true, :fan_access => true, :approval_required => false, :genres => ["classical"], :musician_access => true, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}], :legal_terms => true, :intellectual_property => true} } + let(:defopts) { { :name => "session name", :description => "session description", + :genres => ["classical"], :musician_access => true, :approval_required => false, + :fan_chat => true, :fan_access => true, + :legal_policy => true, :language => 'english', + :timezone => "utc"} } + let(:defpart) { { :as_musician => true, + :tracks => [{"instrument_id" => "electric guitar", + "sound" => "mono", + "client_track_id" => "client_track_guid"}] } } before do #sign_in user ActiveMusicSession.delete_all @@ -38,13 +46,12 @@ describe "Music Session API ", :type => :api do it "should create session" do client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1", :client_id => "1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) # now fetch it's data - location_header = last_response.headers["Location"] - get location_header music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants", defpart.merge({ :client_id => client.client_id, }).to_json, "CONTENT_TYPE" => 'application/json' get '/api/sessions.json' music_sessions = JSON.parse(last_response.body) @@ -184,14 +191,16 @@ describe "Music Session API ", :type => :api do it "should add/remove member from session" do # create the session client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) # now fetch it's data - location_header = last_response.headers["Location"] - get location_header + ".json", "CONTENT_TYPE" => 'application/json' - music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants", defpart.merge({ :client_id => client.client_id, }).to_json, "CONTENT_TYPE" => 'application/json' + + get "/api/sessions.json", "CONTENT_TYPE" => 'application/json' + + music_session = JSON.parse(last_response.body)[0] # and the creator should be in the session music_session["participants"].length.should == 1 @@ -219,14 +228,16 @@ describe "Music Session API ", :type => :api do user2 = FactoryGirl.create(:user) client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") client2 = FactoryGirl.create(:connection, :user => user2, :ip_address => "2.2.2.2") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) # now fetch it's data - music_session_uri = last_response.headers["Location"] - get music_session_uri + ".json", "CONTENT_TYPE" => 'application/json' - music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants", defpart.merge({ :client_id => client.client_id, }).to_json, "CONTENT_TYPE" => 'application/json' + + get "/api/sessions.json", "CONTENT_TYPE" => 'application/json' + + music_session = JSON.parse(last_response.body)[0] # and the creator should be in the session music_session["participants"].length.should == 1 @@ -239,8 +250,7 @@ describe "Music Session API ", :type => :api do musician["client_id"].should == client.client_id login(user2) - post "/api/sessions/#{music_session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' - + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) # now fetch it's data @@ -260,9 +270,9 @@ describe "Music Session API ", :type => :api do # refetch the session and make sure both participnats are accounted for login(user2) - get music_session_uri + ".json", "CONTENT_TYPE" => 'application/json' + get "/api/sessions.json", "CONTENT_TYPE" => 'application/json' - music_session = JSON.parse(last_response.body) + music_session = JSON.parse(last_response.body)[0] # and the creator should be in the session music_session["participants"].length.should == 2 @@ -284,14 +294,14 @@ describe "Music Session API ", :type => :api do # create the session original_count = ActiveMusicSession.all().length client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :genres => nil}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.merge({:genres => nil}).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(422) ActiveMusicSession.all().length.should == original_count end it "should error with invalid genre specified" do client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({ :client_id => client.client_id, :genres => ["Junk"]}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.merge({:genres => ["Junk"]}).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(422) JSON.parse(last_response.body)["errors"]["genre"].should == ["can't be blank"] end @@ -300,8 +310,12 @@ describe "Music Session API ", :type => :api do original_count = ActiveMusicSession.all().length client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :tracks => nil}).to_json, "CONTENT_TYPE" => 'application/json' - last_response.status.should eql(422) + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client.client_id, :as_musician => true, :tracks => []}.to_json, "CONTENT_TYPE" => 'application/json' + JSON.parse(last_response.body)["errors"]["tracks"].should == [ValidationMessages::SELECT_AT_LEAST_ONE] # check that the transaction was rolled back @@ -312,7 +326,12 @@ describe "Music Session API ", :type => :api do original_count = ActiveMusicSession.all().length client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :tracks => [{"instrument_id" => "mom", "sound" => "mono", "client_track_id" => "client_track_guid"}]}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + # now fetch it's data + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants", defpart.merge({ :client_id => client.client_id, :tracks => [{"instrument_id" => "mom", "sound" => "mono", "client_track_id" => "client_track_guid"}] }).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(404) # check that the transaction was rolled back @@ -323,10 +342,13 @@ describe "Music Session API ", :type => :api do original_count = ActiveMusicSession.all().length client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mom", "client_track_id" => "client_track_guid"}]}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) - last_response.status.should eql(422) - JSON.parse(last_response.body)["errors"]["tracks"][0].should == "is invalid" + # now fetch it's data + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants", defpart.merge({ :client_id => client.client_id, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mom", "client_track_id" => "client_track_guid"}] }).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(406) # check that the transaction was rolled back ActiveMusicSession.all().length.should == original_count @@ -367,9 +389,18 @@ describe "Music Session API ", :type => :api do user2 = FactoryGirl.create(:user) # in the music session client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :musician_access => false}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) - session = JSON.parse(last_response.body) + + # now fetch it's data + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + get '/api/sessions.json' + last_response.status.should eql(200) + music_sessions = JSON.parse(last_response.body) + session = music_sessions[0] FactoryGirl.create(:friendship, :user => user, :friend => user2) FactoryGirl.create(:friendship, :user => user2, :friend => user) @@ -381,7 +412,7 @@ describe "Music Session API ", :type => :api do music_sessions = JSON.parse(last_response.body) music_session = music_sessions[0] music_session["id"].should == session["id"] - music_session["musician_access"].should == false + music_session["musician_access"].should == true # we should be able to see the invitation music_session["invitations"].length.should == 1 @@ -401,7 +432,13 @@ describe "Music Session API ", :type => :api do user2 = FactoryGirl.create(:user) # in the music session client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1", :client_id => "3") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :musician_access => false}).to_json, "CONTENT_TYPE" => 'application/json' + login(user) + post '/api/sessions.json', defopts.merge({:musician_access => false}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + # now fetch it's data + music_session = JSON.parse(last_response.body) + + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) session = JSON.parse(last_response.body) @@ -411,31 +448,32 @@ describe "Music Session API ", :type => :api do FactoryGirl.create(:friendship, :user => user2, :friend => user) # users are friends, but no invitation... so we shouldn't be able to join as user 2 + login(user2) - post "/api/sessions/#{session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}] }.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{session["music_session_id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(422) join_response = JSON.parse(last_response.body) join_response["errors"]["musician_access"].should == [ValidationMessages::INVITE_REQUIRED] # but let's make sure if we then invite, that we can then join' login(user) - post '/api/invitations.json', { :music_session => session["id"], :receiver => user2.id }.to_json, "CONTENT_TYPE" => 'application/json' + post '/api/invitations.json', { :music_session => session["music_session_id"], :receiver => user2.id }.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) login(user2) - post "/api/sessions/#{session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}] }.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{session["music_session_id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}] }.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) end it "join_requests don't show up in session listing" do client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) - location_header = last_response.headers["Location"] - get location_header music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) get '/api/sessions.json' music_sessions = JSON.parse(last_response.body) @@ -480,20 +518,22 @@ describe "Music Session API ", :type => :api do it "should now allow join of approval_required=true session" do client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :approval_required => true}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.merge({:approval_required => true}).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) - # now fetch it's data - location_header = last_response.headers["Location"] - get location_header music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + get "/api/sessions.json" + music_session = JSON.parse(last_response.body)[0] # try to add 2nd user to session - should fail because approval is required user2 = FactoryGirl.create(:user) client2 = FactoryGirl.create(:connection, :user => user2, :ip_address => "2.2.2.2") login(user2) - post "/api/sessions/#{music_session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(422) rejected_join_attempt = JSON.parse(last_response.body) rejected_join_attempt["errors"]["approval_required"] = [ValidationMessages::INVITE_REQUIRED] @@ -515,7 +555,7 @@ describe "Music Session API ", :type => :api do # finally, go back to user2 and attempt to join again login(user2) - post "/api/sessions/#{music_session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) end @@ -527,13 +567,15 @@ describe "Music Session API ", :type => :api do # https://jamkazam.atlassian.net/browse/VRFS-254 user.admin = true client = FactoryGirl.create(:connection, :user => user) - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) - # now fetch it's data - location_header = last_response.headers["Location"] - get location_header music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + get "/api/sessions.json" + music_session = JSON.parse(last_response.body)[0] get "/api/sessions/#{music_session["id"]}.json" last_response.status.should eql(200) @@ -545,7 +587,7 @@ describe "Music Session API ", :type => :api do track["instrument_id"].should == "electric guitar" track["sound"].should == "mono" - post "/api/sessions/#{music_session["id"]}/participants/legacy.json", { :client_id => client.client_id, :as_musician => true, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client.client_id, :as_musician => true, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) @@ -571,10 +613,14 @@ describe "Music Session API ", :type => :api do # 1st user joins login(user) - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' - location_header = last_response.headers["Location"] - get location_header + post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + get "/api/sessions.json" + music_session = JSON.parse(last_response.body)[0] # start a recording post "/api/recordings/start", {:format => :json, :music_session_id => music_session['id'] }.to_json, "CONTENT_TYPE" => 'application/json' @@ -582,7 +628,7 @@ describe "Music Session API ", :type => :api do # user 2 should not be able to join login(user2) - post "/api/sessions/#{music_session["id"]}/participants/legacy.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' + post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(422) JSON.parse(last_response.body)["errors"]["music_session"][0].should == ValidationMessages::CANT_JOIN_RECORDING_SESSION end @@ -592,9 +638,16 @@ describe "Music Session API ", :type => :api do server = FactoryGirl.create(:icecast_server_minimal) user2 = FactoryGirl.create(:user) # in the music session client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.10", :client_id => "mount_info") - post '/api/sessions/legacy.json', defopts.merge({:client_id => client.client_id, :fan_access => true}).to_json, "CONTENT_TYPE" => 'application/json' + post '/api/sessions.json', defopts.merge({:fan_access => true}).to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) - session = JSON.parse(last_response.body) + + music_session = JSON.parse(last_response.body) + post "/api/sessions/#{music_session["id"]}/participants.json", defpart.merge({ :client_id => client.client_id}).to_json, "CONTENT_TYPE" => 'application/json' + last_response.status.should eql(201) + + get "/api/sessions.json" + session = JSON.parse(last_response.body)[0] + music_session = ActiveMusicSession.find(session["id"]) session["mount"].should_not be_nil session["mount"]["name"].should == music_session.mount.name @@ -723,8 +776,4 @@ describe "Music Session API ", :type => :api do music_session.claimed_recording.should be_nil music_session.claimed_recording_initiator.should be_nil end -end - - - - +end \ No newline at end of file diff --git a/web/spec/requests/music_sessions_api_spec.rb b/web/spec/requests/music_sessions_api_spec.rb index d0e9c6f27..59f522088 100644 --- a/web/spec/requests/music_sessions_api_spec.rb +++ b/web/spec/requests/music_sessions_api_spec.rb @@ -35,6 +35,15 @@ describe "Scheduled Music Session API ", :type => :api do it "should create session" do post '/api/sessions.json', defopts.to_json, "CONTENT_TYPE" => 'application/json' last_response.status.should eql(201) + + music_session = JSON.parse(last_response.body) + music_session[:name] = defopts[:name] + music_session[:description] = defopts[:description] + music_session[:musician_access] = defopts[:musician_access] + music_session[:fan_chat] = defopts[:fan_chat] + music_session[:fan_access] = defopts[:fan_access] + music_session[:language] = defopts[:language] + music_session[:timezone] = defopts[:timezone] end end end \ No newline at end of file