Merge branch 'develop' into vrfs927

This commit is contained in:
Jonathan Kolyer 2014-01-10 18:13:00 -06:00
commit 401a97d566
26 changed files with 383 additions and 78 deletions

View File

@ -1,3 +1,5 @@
require 'resque/server'
JamAdmin::Application.routes.draw do
# ActiveAdmin::Devise.config,
@ -12,6 +14,8 @@ JamAdmin::Application.routes.draw do
match '/api/artifacts' => 'artifacts#update_artifacts', :via => :post
mount Resque::Server.new, :at => "/resque"
# The priority is based upon order of creation:
# first created -> highest priority.

View File

@ -42,16 +42,16 @@ create table icecast_admin_authentications (
-- The default username for all source connections is 'source' but
-- this option allows to specify a default password. This and the username
-- can be changed in the individual mount sections.
source_password VARCHAR NOT NULL DEFAULT 'icejam321',
source_password VARCHAR(64) NOT NULL DEFAULT 'icejam321',
-- Used in the master server as part of the authentication when a slave requests
-- the list of streams to relay. The default username is 'relay'
relay_user VARCHAR NOT NULL DEFAULT 'relay',
relay_password VARCHAR NOT NULL DEFAULT 'jkrelayhack',
relay_user VARCHAR(64) NOT NULL DEFAULT 'relay',
relay_password VARCHAR(64) NOT NULL DEFAULT 'jkrelayhack',
--The username/password used for all administration functions.
admin_user VARCHAR NOT NULL DEFAULT 'jkadmin',
admin_password VARCHAR NOT NULL DEFAULT 'jKadmin123',
admin_user VARCHAR(64) NOT NULL DEFAULT 'jkadmin',
admin_password VARCHAR(64) NOT NULL DEFAULT 'jKadmin123',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -60,10 +60,10 @@ create table icecast_admin_authentications (
--contains all the settings for listing a stream on any of the Icecast2 YP Directory servers.
-- Multiple occurances of this section can be specified in order to be listed on multiple directory servers.
create table icecast_directorys (
create table icecast_directories (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
yp_url_timeout integer not null default 15,
yp_url character not null UNIQUE default 'http://dir.xiph.org/cgi-bin/yp-cgi',
yp_url_timeout INTEGER not null default 15,
yp_url VARCHAR(1024) not null UNIQUE default 'http://dir.xiph.org/cgi-bin/yp-cgi',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
@ -73,11 +73,11 @@ create table icecast_servermiscs (
-- This is the DNS name or IP address that will be used for the stream directory lookups or possibily
-- the playlist generation if a Host header is not provided. While localhost is shown as an example,
-- in fact you will want something that your listeners can use.
hostname character not null default 'concertsvr.jamkazam.com',
hostname VARCHAR(256) not null default 'concertsvr.jamkazam.com',
--This sets the location string for this icecast instance. It will be shown e.g in the web interface.
location character not null default 'earth',
location VARCHAR(128) not null default 'earth',
--This should contain contact details for getting in touch with the server administrator.
admin character not null default 'icemaster@localhost',
admin VARCHAR(128) not null default 'icemaster@localhost',
-- This flag turns on the icecast2 fileserver from which static files can be served.
-- All files are served relative to the path specified in the <paths><webroot> configuration
-- setting. By default the setting is enabled so that requests for the images
@ -86,7 +86,7 @@ create table icecast_servermiscs (
-- This optional setting allows for the administrator of the server to override the
-- default server identification. The default is icecast followed by a version number
-- and most will not care to change it however this setting will change that.
server_id character not null default 'icecast 2.3',
server_id VARCHAR(128) not null default 'icecast 2.3',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
@ -97,13 +97,13 @@ create table icecast_listen_sockets (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
-- The TCP port that will be used to accept client connections.
port integer not null default 8001,
port INTEGER not null default 8001,
-- An optional IP address that can be used to bind to a specific network card.
-- If not supplied, then it will bind to all interfaces.
bind_address character,
bind_address VARCHAR(128),
shoutcast_mount character default NULL,
shoutcast_mount VARCHAR(128) default NULL,
shoutcast_compat INTEGER not null default 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
@ -115,15 +115,15 @@ create table icecast_mastersvr_relays (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
-- ip address of the master icecast server and port number
master_server character not null,
master_server_port integer not null,
master_server VARCHAR(128) not null,
master_server_port INTEGER not null,
--The interval (in seconds) that the Relay Server will poll the Master Server for any new mountpoints to relay.
master_update_interval integer not null default 120,
master_update_interval INTEGER not null default 120,
-- This is the relay username on the master server. It is used to query the server for a list of
-- mountpoints to relay. If not specified then 'relay' is used
master_username character not null default 'relay',
master_password character not null,
master_username VARCHAR(64) not null default 'relay',
master_password VARCHAR(64) not null,
--Global on-demand setting for relays. Because you do not have individual relay options when
-- using a master server relay, you still may want those relays to only pull the stream when
@ -141,50 +141,51 @@ create table icecast_relays (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
-- ip address of server we are relaying from and port number
server character not null,
port integer not null default 8001,
server VARCHAR(128) not null,
port INTEGER not null default 8001,
-- mount at server. eg /example.ogg
mount character not null,
mount VARCHAR(128) not null,
-- eg /different.ogg
local_mount character not null,
local_mount VARCHAR(128) not null,
-- eg joe. could be null
username character default NULL ,
username VARCHAR(64) default NULL ,
-- user password
password character default null ,
password VARCHAR(64) default null ,
relay_shoutcast_metadata INTEGER default 0,
--- relay only if we have someone wanting to listen
on_demand INTEGER default 0,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
create TABLE icecast_user_authentications(
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
--"htpasswd or url"
type CHARACTER DEFAULT NULL ,
-- real name is type
stype VARCHAR(16) DEFAULT NULL ,
-- these are for httpasswd
filename CHARACTER default NULL,
filename VARCHAR(256) default NULL,
allow_duplicate_users INTEGER DEFAULT 0,
-- these options are for url
-- eg value="http://myauthserver.com/stream_start.php"
mount_add CHARACTER default NULL,
mount_add VARCHAR(256) default NULL,
--value="http://myauthserver.com/stream_end.php"
mount_remove CHARACTER default NULL,
mount_remove VARCHAR(256) default NULL,
--value="http://myauthserver.com/listener_joined.php"
listener_add CHARACTER default NULL,
listener_add VARCHAR(256) default NULL,
--value="http://myauthserver.com/listener_left.php"
listener_remove CHARACTER default NULL,
listener_remove VARCHAR(256) default NULL,
-- value="user"
username CHARACTER default NULL,
username VARCHAR(64) default NULL,
-- value="pass"
password CHARACTER default NULL,
password VARCHAR(64) default NULL,
-- value="icecast-auth-user: 1"
auth_header CHARACTER default NULL,
auth_header VARCHAR(64) default NULL,
-- value="icecast-auth-timelimit:"
timelimit_header CHARACTER default NULL,
timelimit_header VARCHAR(64) default NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -194,20 +195,20 @@ create TABLE icecast_user_authentications(
create table icecast_mounts (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
-- eg/example-complex.ogg
mount_name CHARACTER UNIQUE NOT NULL,
username CHARACTER NOT NULL DEFAULT 'jamsource',
password CHARACTER NOT NULL DEFAULT 'jamksource',
mount_name VARCHAR(128) UNIQUE NOT NULL,
username VARCHAR(64) NOT NULL DEFAULT 'jamsource',
password VARCHAR(64) NOT NULL DEFAULT 'jamksource',
max_listeners INTEGER NOT NULL DEFAULT 4,
max_listener_duration INTEGER NOT NULL DEFAULT 3600,
-- dump of the stream coming through on this mountpoint.
-- eg /tmp/dump-example1.ogg
dump_file CHARACTER DEFAULT NULL,
dump_file VARCHAR(256) DEFAULT NULL,
-- intro music to play
-- This optional value specifies a mountpoint that clients are automatically moved to
-- if the source shuts down or is not streaming at the time a listener connects.
intro CHARACTER NOT NULL DEFAULT '/intro.ogg',
fallback_mount CHARACTER NOT NULL DEFAULT '/sourcedown.ogg',
intro VARCHAR(256) NOT NULL DEFAULT '/intro.ogg',
fallback_mount VARCHAR(256) NOT NULL DEFAULT '/sourcedown.ogg',
-- When enabled, this allows a connecting source client or relay on this mountpoint
-- to move listening clients back from the fallback mount.
fallback_override INTEGER DEFAULT 1,
@ -218,19 +219,21 @@ create table icecast_mounts (
--For non-Ogg streams like MP3, the metadata that is inserted into the stream often
-- has no defined character set.
charset CHARACTER NOT NULL DEFAULT 'ISO8859-1',
charset VARCHAR(256) NOT NULL DEFAULT 'ISO8859-1',
-- possilble values are -1, 0, 1
public INTEGER DEFAULT 1,
-- real name is public but this is reserved word in ruby
publicc INTEGER DEFAULT 1,
stream_name VARCHAR NOT NULL DEFAULT 'My Jamkazam Audio Stream',
stream_description VARCHAR NOT NULL DEFAULT 'My JK audio description',
stream_name VARCHAR(256) NOT NULL DEFAULT 'My Jamkazam Audio Stream',
stream_description VARCHAR(256) NOT NULL DEFAULT 'My JK audio description',
-- direct to user page
stream_url CHARACTER NOT NULL DEFAULT 'http://wwww.jamakazam.com#user_id',
stream_url VARCHAR(256) NOT NULL DEFAULT 'http://wwww.jamakazam.com#user_id',
-- get this from the session info
genre VARCHAR NOT NULL DEFAULT 'Unknown',
genre VARCHAR(64) NOT NULL DEFAULT 'Unknown',
bitrate integer NOT NULL default 92,
type CHARACTER NOT NULL DEFAULT 'application/ogg' ,
subtype CHARACTER NOT NULL DEFAULT 'vorbis',
-- real name is type but this is reserved name in ruby
mtype VARCHAR(64) NOT NULL DEFAULT 'application/ogg' ,
subtype VARCHAR(64) NOT NULL DEFAULT 'vorbis',
-- Enable this to prevent this mount from being shown on the xsl pages.
-- This is mainly for cases where a local relay is configured and you do
-- not want the source of the local relay to be shown
@ -242,25 +245,25 @@ create table icecast_mounts (
mp3_metadata_interval INTEGER DEFAULT 4096,
--called when the source connects or disconnects. The scripts are called with the name of the mount
on_connect CHARACTER DEFAULT '/home/icecast/bin/source-start',
on_disconnect CHARACTER DEFAULT '/home/icecast/bin/source-end',
on_connect VARCHAR(256) DEFAULT '/home/icecast/bin/source-start',
on_disconnect VARCHAR(256) DEFAULT '/home/icecast/bin/source-end',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
auth_id VARCHAR(64) NOT NULL REFERENCES icecast_user_authentications(id)
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
create table icecast_paths (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
basedir CHARACTER NOT NULL DEFAULT './',
logdir CHARACTER NOT NULL DEFAULT './logs',
pidfile CHARACTER NOT NULL DEFAULT './icecast.pid',
webroot CHARACTER NOT NULL DEFAULT './web',
adminroot CHARACTER NOT NULL DEFAULT './admin',
allow_ip CHARACTER NOT NULL DEFAULT '/path/to/ip_allowlist',
deny_ip CHARACTER NOT NULL DEFAULT '/path_to_ip_denylist',
alias CHARACTER DEFAULT 'source="/foo" dest="/bar"',
basedir VARCHAR(256) NOT NULL DEFAULT './',
logdir VARCHAR(256) NOT NULL DEFAULT './logs',
pidfile VARCHAR(256) NOT NULL DEFAULT './icecast.pid',
webroot VARCHAR(256) NOT NULL DEFAULT './web',
adminroot VARCHAR(256) NOT NULL DEFAULT './admin',
allow_ip VARCHAR(256) NOT NULL DEFAULT '/path/to/ip_allowlist',
deny_ip VARCHAR(256) NOT NULL DEFAULT '/path_to_ip_denylist',
--real name is alias but alias is reserved in ruby
aliass VARCHAR(256) DEFAULT 'source="/foo" dest="/bar"',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
@ -269,9 +272,9 @@ create table icecast_paths (
create table icecast_loggings (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
accesslog CHARACTER NOT NULL DEFAULT 'access.log',
errorlog CHARACTER NOT NULL DEFAULT 'error.log',
playlistlog CHARACTER NOT NULL DEFAULT 'playlist.log',
accesslog VARCHAR(256) NOT NULL DEFAULT 'access.log',
errorlog VARCHAR(256) NOT NULL DEFAULT 'error.log',
playlistlog VARCHAR(256) NOT NULL DEFAULT 'playlist.log',
-- 4 Debug, 3 Info, 2 Warn, 1 Error
loglevel INTEGER NOT NULL DEFAULT 4 ,
@ -280,12 +283,12 @@ create table icecast_loggings (
);
create table icecast_securitys (
create table icecast_securities (
id VARCHAR(64) PRIMARY KEY NOT NULL DEFAULT uuid_generate_v4(),
chroot INTEGER NOT NULL DEFAULT 0,
changeowner_user CHARACTER DEFAULT 'nobody',
changeowner_group CHARACTER DEFAULT 'nogroup',
changeowner_user VARCHAR(64) DEFAULT 'nobody',
changeowner_group VARCHAR(64) DEFAULT 'nogroup',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

0
db/up/mix_job_watch.sql Normal file
View File

View File

@ -14,6 +14,7 @@ require "postgres-copy"
require "geokit-rails"
require "postgres_ext"
require 'builder'
require 'cgi'
require "jam_ruby/constants/limits"
require "jam_ruby/constants/notification_types"

View File

@ -1,9 +1,73 @@
module JSONable
def jdumpXml (ovb, nm, ident=1, output=$stdout)
serialized = Hash.new
ovb.myattr_accessor.each do |attribute|
#serialized[attribute] = ovb[attribute]
puts "attribute = #{attribute}"
#serialized[attribute] = self.public_send attribute
end
hash = serialized
tb = "\t"
tbs = tb * ident
tbse = tb * (ident-1)
output.puts "#{tbse}<#{nm}>"
hash.each do |key, val|
#puts "attrib: key=#{key} val=#{val}"
el = key
if key.present?
el = key.gsub(/_/, '-')
end
sv = val
if val.to_s.empty?
#skip ???
else
if val.instance_of? String
#encode the string to be xml safe
sv = CGI.escapeHTML(val)
end
end
output.puts "#{tbs}<#{el}>#{sv}</#{el}>"
end
puts "#{tbse}</#{nm}>"
end
end
module JamRuby
class IcecastAdminAuthentication < ActiveRecord::Base
include JSONable
attr_accessible :source_password, :relay_user, :relay_password, :admin_user, :admin_password
#myattr_accessor = [:source_password, :relay_user, :relay_password, :admin_user, :admin_password ]
after_initialize :init
protected
def init
#set only if nil
self.source_password ||= "UndefinedSourcePassword"
self.admin_password ||= "JKAminPw"
end
public
self.primary_key = 'id'
validates :source_password, length: {minimum: 5}
validates :source_password, presence: true, length: {minimum: 5}
validates :admin_password, presence: true, length: {minimum: 5}
def dumpXml (ident=1, output=$stdout)
self.jdumpXml(self,"authentication", ident,output)
end
end
end

View File

@ -3,7 +3,8 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :yp_url_timeout, :yp_url
attr_accessor :yp_url_timeout, :yp_url
end
end

View File

@ -1,12 +1,34 @@
module JamRuby
class IcecastLimit < ActiveRecord::Base
include JSONable
self.primary_key = 'id'
attr_accessible :clients, :sources, :queue_size, :client_timeout, :header_timeout, :source_timeout, :burst_size
#attr_accessor :clients, :sources, :queue_size, :client_timeout, :header_timeout, :source_timeout, :burst_size
#validates :clients, numericality: {only_integer: true}, length: {in: 1..15000}
validates :clients, numericality: {only_integer: true}
def dumpXml()
after_initialize :init
def init
puts "Init self.client #{self.clients}"
self.clients ||= 10000
self.sources ||= 1000
self.queue_size ||= 102400
self.client_timeout ||= 30
self.header_timeout ||= 15
self.source_timeout ||= 10
self.burst_size ||= 65536
end
def setclients(val)
@clients = val
end
def dumpXml (ident=1, output=$stdout)
self.jdumpXml(self, "limits", ident, output)
end
end

View File

@ -3,6 +3,13 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :port, :bind_address, :shoutcast_mount, :shoutcast_compat
attr_accessor :port, :bind_address, :shoutcast_mount, :shoutcast_compat
def dumpXml()
end
end
end

View File

@ -3,7 +3,12 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :accesslog, :errorlog, :playlistlog, :loglevel
attr_accessor :accesslog, :errorlog, :playlistlog, :loglevel
def dumpXml()
end
end
end

View File

@ -2,6 +2,11 @@ module JamRuby
class IcecastMastersvrRelay < ActiveRecord::Base
self.primary_key = 'id'
attr_accessible :master_server, :master_server_port, :master_username, :master_password, :relays_on_demand
attr_accessible :master_server, :master_server_port, :master_username, :master_password, :relays_on_demand
def dumpXml()
end
end
end

View File

@ -3,7 +3,22 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :mount_name, :username, :password, :max_listeners, :max_listener_duration, :dump_file
attr_accessor :mount_name, :username, :password, :max_listeners, :max_listener_duration, :dump_file
attr_accessible :intro, :fallback_mount, :fallback_override, :fallback_when_full, :charset
attr_accessor :intro, :fallback_mount, :fallback_override, :fallback_when_full, :charset
attr_accessible :publicc, :stream_name, :stream_description, :stream_url, :genre, :bitrate
attr_accessor :publicc, :stream_name, :stream_description, :stream_url, :genre, :bitrate
attr_accessible :mtype, :subtype, :hidden, :burst_size, :mp3_metadata_interval, :on_connect, :on_disconnect
attr_accessor :mtype, :subtype, :hidden, :burst_size, :mp3_metadata_interval, :on_connect, :on_disconnect
has_one :authentication, :class_name => "IcecastUserAuthentication"
def dumpXml()
end
end
end

View File

@ -3,7 +3,12 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :basedir, :logdir, :pidfile, :webroot, :adminroot, :allow_ip, :deny_ip, :aliass
attr_accessor :basedir, :logdir, :pidfile, :webroot, :adminroot, :allow_ip, :deny_ip, :aliass
def dumpXml()
end
end
end

View File

@ -3,6 +3,12 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :server, :port, :mount, :local_mount, :username, :password, :relay_shoutcast_metadata, :on_demand
attr_accessor :server, :port, :mount, :local_mount, :username, :password, :relay_shoutcast_metadata, :on_demand
def dumpXml()
end
end
end

View File

@ -3,7 +3,12 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :chroot, :changeowner_user, :changeowner_group
attr_accessor :chroot, :changeowner_user, :changeowner_group
def dumpXml()
end
end
end

View File

@ -14,5 +14,10 @@ module JamRuby
has_one :path, :class_name => "JamRuby::IcecastPath"
has_one :logging, :class_name => "JamRuby::IcecastLogging"
has_one :security, :class_name => "JamRuby::IceCastSecurity"
def dumpXml()
end
end
end

View File

@ -3,5 +3,12 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :hostname, :location, :admin, :fileserve, :server_id
attr_accessor :hostname, :location, :admin, :fileserve, :server_id
def dumpXml()
end
end
end

View File

@ -3,6 +3,15 @@ module JamRuby
self.primary_key = 'id'
attr_accessible :stype, :filename, :allow_duplicate_users, :mount_add, :mount_remove,
:listener_add, :listener_remove, :username, :password, :auth_header, :timelimit_header
attr_accessor :stype, :filename, :allow_duplicate_users, :mount_add, :mount_remove,
:listener_add, :listener_remove, :username, :password, :auth_header, :timelimit_header
def dumpXml()
end
end
end

View File

@ -5,11 +5,21 @@ describe IcecastAdminAuthentication do
let(:admin) { IcecastAdminAuthentication.new }
before(:all) do
admin.source_password = "GoodJob@</>"
end
it "save" do
admin.save.should be_true
admin.save!
#puts "source password #{admin.source_password}"
#puts "id #{admin.id}"
#puts admin.errors
#puts admin.inspect
#puts admin.to_yaml
#puts JSON.pretty_generate admin
#puts admin.dumpXml (1)
#puts admin.errors.inspect
admin.errors.any?.should be_false
end
end

View File

@ -0,0 +1,15 @@
require 'spec_helper'
describe IcecastDirectory do
let(:idir) { IcecastDirectory.new }
before(:all) do
end
it "save" do
idir.save.should be_true
end
end

View File

@ -9,12 +9,22 @@ describe IcecastLimit do
end
it "save" do
limit.save.should be_true
limit.clients = 9999
limit.save
puts limit.inspect
#limit.dumpXml
limit.errors.any?.should be_false
v = IcecastLimit.find(limit.id)
puts v.inspect
end
it "non-integer clients should be checked" do
limit.clients = "a"
=begin
it "non-integer clients should be checked" do
limit.setclients 'a'
puts limit.clients
puts limit.inspect
limit.save.should be_false
limit.errors[:clients].should == ['is not a number']
end
=end
end

View File

@ -0,0 +1,15 @@
require 'spec_helper'
describe IcecastListenSocket do
let(:iobj) { IcecastListenSocket.new }
before(:all) do
end
it "save" do
iobj.save.should be_true
end
end

View File

@ -0,0 +1,15 @@
require 'spec_helper'
describe IcecastLogging do
let(:iobj) { IcecastLogging.new }
before(:all) do
end
it "save" do
iobj.save.should be_true
end
end

View File

@ -0,0 +1,27 @@
require 'spec_helper'
describe IcecastMastersvrRelay do
let(:iobj) { IcecastMastersvrRelay.new }
before(:all) do
end
=begin
it "should not save" do
iobj.save.should be_false
iobj.errors[:master_server].should_equal "is required"
end
=end
it "should save" do
iobj.master_server = "test.www.com"
iobj.master_server_port = 7111
iobj.master_username = "hack"
iobj.master_password = "hackme"
iobj.save.should be_true
end
end

View File

@ -0,0 +1,17 @@
require 'spec_helper'
describe IcecastMount do
let(:iobj) { IcecastMount.new }
before(:all) do
end
=begin
it "save" do
iobj.save.should be_true
end
=end
end

View File

@ -0,0 +1,15 @@
require 'spec_helper'
describe IcecastPath do
let(:iobj) { IcecastPath.new }
before(:all) do
end
it "save" do
iobj.save.should be_true
end
end

View File

@ -0,0 +1,17 @@
require 'spec_helper'
describe IcecastRelay do
let(:iobj) { IcecastRelay.new }
before(:all) do
end
=begin
it "save" do
:iobj.save.should be_true
end
=end
end