JAMKAZAM_TESTING_BUCKET = 'jamkazam-testing' # cuz i'm not comfortable using aws_bucket accessor directly def app_config klass = Class.new do def admin_root_url 'http://localhost:3333' end def email_partners_alias 'partners@jamkazam.com' end def email_social_alias 'social@jamkazam.com' end def email_alerts_alias 'alerts@jamkazam.com' end def email_support_alias 'support@jamkazam.com' end def email_jamclass_alerts_alias 'jamclass-alerts@jamkazam.com' end def email_crashes_alias 'clientcrash@jamkazam.com' end def email_support_alias 'support-dev@jamkazam.com' end def email_recurly_notice 'recurly-alerts@jamkazam.com' end def email_generic_from 'nobody@jamkazam.com' end def aws_bucket JAMKAZAM_TESTING_BUCKET end def aws_bucket_jamtracks 'jamkazam-jamtracks-test' end def aws_access_key_id 'AKIAJESQY24TOT542UHQ' end def aws_secret_access_key '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' end def aws_region 'us-east-1' end def aws_bucket_public 'jamkazam-testing-public' end def aws_cache '315576000' end def verify_email_enabled false end def audiomixer_path # you can specify full path to audiomixer with AUDIOMIXER_PATH env variable... # or we check for audiomixer path in the user's workspace # and finally the debian install path ENV['AUDIOMIXER_PATH'] || audiomixer_workspace_path || "/var/lib/audiomixer/audiomixer/audiomixerapp" end def ffmpeg_path ENV['FFMPEG_PATH'] || '/usr/local/bin/ffmpeg' end def normalize_ogg_path ENV['NORMALIZE_OGG_PATH'] || '/usr/local/bin/normalize-ogg' end def normalize_mp3_path ENV['NORMALIZE_MP3_PATH'] || '/usr/local/bin/normalize-mp3' end def icecast_reload_cmd 'true' # as in, /bin/true end def icecast_config_file Dir::Tmpname.make_tmpname(["#{Dir.tmpdir}/icecast", 'xml'], nil) end def icecast_server_id 'test' end def icecast_max_missing_check 2 * 60 # 2 minutes end def icecast_max_sourced_changed 15 # 15 seconds end def icecast_hardcoded_source_password nil # generate a new password everytime end def icecast_wait_after_reload 0 # 0 seconds end def jamtracks_dir ENV['JAMTRACKS_DIR'] || File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "..", "jamtracks")) end def rabbitmq_host "localhost" end def rabbitmq_port 5672 end def external_hostname 'localhost' end def external_protocol 'http://' end def external_port 3000 end def external_root_url "#{external_protocol}#{external_hostname}#{(external_port == 80 || external_port == 443) ? '' : ':' + external_port.to_s}" end def max_audio_downloads 100 end def send_join_session_email_notifications true end def max_mind_working_dir 'tmp' end def max_track_upload_failures 10 end def max_track_part_upload_failures 3 end def max_good_full_score 40 end def max_yellow_full_score 70 end def max_red_full_score 100 end def scoring_timeout_minutes 30 end def scoring_timeout_threshold 2 # don't put to 1; it'll break tests end def recordings_stale_time 7 end def source_changes_missing_secs 1 end def lock_connections false end def signing_step_max_time 40 # 40 seconds end def signing_job_queue_max_time 600 # 20 seconds end def one_free_jamtrack_per_user true end def secret_token 'foobar' end def unsubscribe_token 'blah' end def error_on_fraud true end def expire_fingerprint_days 14 end def found_conflict_count 1 end def google_public_server_key "AIzaSyCPTPq5PEcl4XWcm7NZ2IGClZlbsiE8JNo" end def estimated_jam_track_time 40 end def estimated_fast_mixdown_time 30 end def estimated_slow_mixdown_time 80 end def num_packaging_nodes 2 end def signing_job_signing_max_time 300 end def mixdown_job_queue_max_time 600 end def mixdown_step_max_time 300 end def download_tracker_day_range 30 end def guard_against_browser_fraud true end def minimum_lesson_booking_hrs 24 end def lesson_stay_time 10 end def wait_time_window_threshold 5 end def lesson_together_threshold_minutes 5 end def lesson_join_time_window_minutes 5 end def lesson_wait_time_window_minutes 10 end def wait_time_window_pct 0.8 end def end_of_wait_window_forgiveness_minutes 1 end def test_drive_wait_period_year 1 end def rating_dialog_min_num 1 end def rating_dialog_min_time false end def jam_class_card_wait_period_year 1 end def max_invites_ever_per_sender 4 end def max_invites_per_day_per_sender 3 end def max_invites_to_receiver_per_day 1 end def check_bounced_emails false end def stripe { :publishable_key => 'pk_test_HLTvioRAxN3hr5fNfrztZeoX', :secret_key => 'sk_test_OkjoIF7FmdjunyNsdVqJD02D', :source_customer => 'cus_88Vp44SLnBWMXq', # seth@jamkazam.com in JamKazam-test account :ach_pct => 0.008, :charge_fee => 0.03 } end def musician_count '40,000+' end private def audiomixer_workspace_path if ENV['WORKSPACE'] dev_path = ENV['WORKSPACE'] else dev_path = ENV['HOME'] end dev_path = "#{dev_path}/audiomixer/audiomixer/audiomixerapp" dev_path if File.exist? dev_path end end klass.new end def run_tests? type type = type.to_s.capitalize ENV["RUN_#{type}_TESTS"] == "1" || ENV[type] == "1" || ENV['ALL_TESTS'] == "1" end # you have go out of your way to update 'updated_at ' def set_updated_at(resource, time) begin ActiveRecord::Base.record_timestamps = false resource.updated_at = time resource.save!(validate: false) ensure # very important to turn it back; it'll break all tests otherwise ActiveRecord::Base.record_timestamps = true end end def wipe_s3_test_bucket begin # don't bother if the user isn't doing AWS tests if run_tests? :aws test_config = app_config s3 = AWS::S3.new(:access_key_id => test_config.aws_access_key_id, :secret_access_key => test_config.aws_secret_access_key) test_bucket = s3.buckets[JAMKAZAM_TESTING_BUCKET] if test_bucket.name == JAMKAZAM_TESTING_BUCKET test_bucket.objects.each do |obj| obj.delete end end end rescue puts "Unable to cleanup AWS" end end # creates a maxmind 'GEO-124' zip file using the supplied CSV def fake_geo_124_zip(geoisp_csv) zipfile = Tempfile.new(['fake_geo_124', '.zip']) Zip::File.open(Pathname.new(zipfile.path).realpath.to_s, Zip::File::CREATE) do |zipfile| zipfile.add('fake_geo_124/GeoIPISP.csv', Pathname.new(geoisp_csv.path).realpath.to_s) end zipfile end def friend(user1, user2) FactoryGirl.create(:friendship, user: user1, friend: user2) FactoryGirl.create(:friendship, user: user2, friend: user1) end def stripe_oauth_client # from here in the JamKazam Test account: https://dashboard.stripe.com/account/applications/settings client_id = "ca_88T6HlHg1NRyKFossgWIz1Tf431Jshft" options = { :site => 'https://connect.stripe.com', :authorize_url => '/oauth/authorize', :token_url => '/oauth/token' } @stripe_oauth_client ||= OAuth2::Client.new(client_id, APP_CONFIG.stripe[:publishable_key], options) end def stripe_account2_id # seth+stripe+test1@jamkazam.com / jam12345 "acct_17sCNpDcwjPgpqRL" end def stripe_account1_id # seth+stripe1@jamkazam.com / jam123 =begin curl -X POST https://connect.stripe.com/oauth/token \ -d client_secret=sk_test_OkjoIF7FmdjunyNsdVqJD02D \ -d code=ac_88U1TDwBgao4I3uYyyFEO3pVbbEed6tm \ -d grant_type=authorization_code # { "access_token": "sk_test_q8WZbdQXt7RGRkBR0fhgohG6", "livemode": false, "refresh_token": "rt_88U3csV42HtY1P1Cd9KU2GCez3wixgsHtIHaQbeeu1dXVWo9", "token_type": "bearer", "stripe_publishable_key": "pk_test_s1YZDczylyRUvhAGeVhxqznp", "stripe_user_id": "acct_17sCNpDcwjPgpqRL", "scope": "read_write" } =end "acct_17sCEyH8FcKpNSnR" end def create_stripe_token(exp_month = 2019) Stripe::Token.create( :card => { :number => "4111111111111111", :exp_month => 2, :exp_year => exp_month, :cvc => "314" }, ).id end