Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module DatabaseSpecMatchers
- class BeAbleToCreateTableIn
- def initialize( db_server, db_name )
- @db_server = db_server
- @db_name = db_name
- end
- def matches?( user )
- @db_server.with_app_connection do |conn|
- conn.query("use #{@db_name}")
- conn.query("show tables")
- conn.query("create table foo (dummy INT)")
- conn.query("drop table foo")
- end
- return true
- rescue Mysql::Error => exception
- @exception = exception
- return false
- end
- def failure_message
- "Application user could not create table: #{@exception.to_s}"
- end
- end
- def be_able_to_create_table_in( db_server, db_name )
- BeAbleToCreateTableIn.new( db_server, db_name )
- end
- end
- context "Database setup tool" do
- include DatabaseSpecMatchers
- setup do
- root_password = ENV['MYSQL_SERVER_ROOT_PASSWORD']
- if root_password.nil?
- puts "The MYSQL_SERVER_ROOT_PASSWORD environment variable must be set"
- abort
- end
- environment = Environment.new
- @app_user = environment.getValue('mysql_username')
- @app_password = environment.getValue('mysql_password')
- @db_server = Database.new(root_password, @app_user, @app_password)
- end
- specify "should create a database with grants for application user" do
- db_name = 'test_cache'
- @db_server.delete_user( @app_user )
- @db_server.drop( db_name )
- @db_server.create( db_name )
- @app_user.should be_able_to_create_table_in( @db_server, db_name )
- end
- end
Add Comment
Please, Sign In to add comment