Guest User

Untitled

a guest
Mar 1st, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. module DatabaseSpecMatchers
  2.  
  3. class BeAbleToCreateTableIn
  4. def initialize( db_server, db_name )
  5. @db_server = db_server
  6. @db_name = db_name
  7. end
  8.  
  9. def matches?( user )
  10. @db_server.with_app_connection do |conn|
  11. conn.query("use #{@db_name}")
  12. conn.query("show tables")
  13. conn.query("create table foo (dummy INT)")
  14. conn.query("drop table foo")
  15. end
  16. return true
  17. rescue Mysql::Error => exception
  18. @exception = exception
  19. return false
  20. end
  21.  
  22. def failure_message
  23. "Application user could not create table: #{@exception.to_s}"
  24. end
  25. end
  26.  
  27. def be_able_to_create_table_in( db_server, db_name )
  28. BeAbleToCreateTableIn.new( db_server, db_name )
  29. end
  30. end
  31.  
  32. context "Database setup tool" do
  33. include DatabaseSpecMatchers
  34.  
  35. setup do
  36. root_password = ENV['MYSQL_SERVER_ROOT_PASSWORD']
  37. if root_password.nil?
  38. puts "The MYSQL_SERVER_ROOT_PASSWORD environment variable must be set"
  39. abort
  40. end
  41. environment = Environment.new
  42. @app_user = environment.getValue('mysql_username')
  43. @app_password = environment.getValue('mysql_password')
  44. @db_server = Database.new(root_password, @app_user, @app_password)
  45. end
  46.  
  47. specify "should create a database with grants for application user" do
  48. db_name = 'test_cache'
  49. @db_server.delete_user( @app_user )
  50. @db_server.drop( db_name )
  51. @db_server.create( db_name )
  52. @app_user.should be_able_to_create_table_in( @db_server, db_name )
  53. end
  54.  
  55. end
Add Comment
Please, Sign In to add comment