hashrocket-clearance 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (525) hide show
  1. data/LICENSE +21 -0
  2. data/README.textile +168 -0
  3. data/Rakefile +83 -0
  4. data/TODO.textile +27 -0
  5. data/generators/clearance/USAGE +1 -0
  6. data/generators/clearance/clearance_generator.rb +84 -0
  7. data/generators/clearance/templates/app/controllers/application.rb +5 -0
  8. data/generators/clearance/templates/app/controllers/confirmations_controller.rb +3 -0
  9. data/generators/clearance/templates/app/controllers/passwords_controller.rb +3 -0
  10. data/generators/clearance/templates/app/controllers/sessions_controller.rb +8 -0
  11. data/generators/clearance/templates/app/controllers/users_controller.rb +3 -0
  12. data/generators/clearance/templates/app/models/clearance_mailer.rb +4 -0
  13. data/generators/clearance/templates/app/models/user.rb +3 -0
  14. data/generators/clearance/templates/app/views/clearance_mailer/confirmation.html.erb +1 -0
  15. data/generators/clearance/templates/app/views/clearance_mailer/facebook_welcome.text.html.haml +4 -0
  16. data/generators/clearance/templates/app/views/clearance_mailer/forgot_password.html.erb +6 -0
  17. data/generators/clearance/templates/app/views/passwords/edit.html.erb +18 -0
  18. data/generators/clearance/templates/app/views/passwords/new.html.erb +15 -0
  19. data/generators/clearance/templates/app/views/sessions/new.html.erb +29 -0
  20. data/generators/clearance/templates/app/views/users/_form.html.erb +13 -0
  21. data/generators/clearance/templates/app/views/users/_password_form.html.erb +13 -0
  22. data/generators/clearance/templates/app/views/users/edit_password.html.erb +4 -0
  23. data/generators/clearance/templates/app/views/users/new.html.erb +6 -0
  24. data/generators/clearance/templates/config/initializers/action_mailer.rb +1 -0
  25. data/generators/clearance/templates/public/images/connect_light_medium_long.gif +0 -0
  26. data/generators/clearance/templates/test/factories.rb +9 -0
  27. data/generators/clearance/templates/test/functional/confirmations_controller_test.rb +5 -0
  28. data/generators/clearance/templates/test/functional/passwords_controller_test.rb +5 -0
  29. data/generators/clearance/templates/test/functional/sessions_controller_test.rb +5 -0
  30. data/generators/clearance/templates/test/functional/users_controller_test.rb +5 -0
  31. data/generators/clearance/templates/test/unit/clearance_mailer_test.rb +6 -0
  32. data/generators/clearance/templates/test/unit/user_test.rb +5 -0
  33. data/lib/clearance/app/controllers/application_controller.rb +88 -0
  34. data/lib/clearance/app/controllers/confirmations_controller.rb +36 -0
  35. data/lib/clearance/app/controllers/facebook_sessions_controller.rb +59 -0
  36. data/lib/clearance/app/controllers/passwords_controller.rb +58 -0
  37. data/lib/clearance/app/controllers/sessions_controller.rb +83 -0
  38. data/lib/clearance/app/controllers/users_controller.rb +74 -0
  39. data/lib/clearance/app/models/clearance_facebook_mailer.rb +20 -0
  40. data/lib/clearance/app/models/clearance_mailer.rb +33 -0
  41. data/lib/clearance/app/models/user.rb +125 -0
  42. data/lib/clearance/spec/controllers/sessions_controller_spec.rb +105 -0
  43. data/lib/clearance/spec/models/user_spec.rb +33 -0
  44. data/lib/clearance/test/functional/confirmations_controller_test.rb +50 -0
  45. data/lib/clearance/test/functional/passwords_controller_test.rb +224 -0
  46. data/lib/clearance/test/functional/sessions_controller_test.rb +148 -0
  47. data/lib/clearance/test/functional/users_controller_test.rb +203 -0
  48. data/lib/clearance/test/test_helper.rb +94 -0
  49. data/lib/clearance/test/unit/clearance_mailer_test.rb +65 -0
  50. data/lib/clearance/test/unit/user_test.rb +335 -0
  51. data/lib/clearance/version.rb +7 -0
  52. data/lib/clearance.rb +19 -0
  53. data/test/rails_root/Capfile +3 -0
  54. data/test/rails_root/Rakefile +10 -0
  55. data/test/rails_root/app/controllers/application.rb +5 -0
  56. data/test/rails_root/app/controllers/confirmations_controller.rb +3 -0
  57. data/test/rails_root/app/controllers/passwords_controller.rb +3 -0
  58. data/test/rails_root/app/controllers/sessions_controller.rb +8 -0
  59. data/test/rails_root/app/controllers/users_controller.rb +3 -0
  60. data/test/rails_root/app/helpers/application_helper.rb +5 -0
  61. data/test/rails_root/app/helpers/confirmations_helper.rb +2 -0
  62. data/test/rails_root/app/helpers/passwords_helper.rb +2 -0
  63. data/test/rails_root/app/models/clearance_mailer.rb +4 -0
  64. data/test/rails_root/app/models/user.rb +3 -0
  65. data/test/rails_root/app/views/clearance_mailer/confirmation.html.erb +1 -0
  66. data/test/rails_root/app/views/clearance_mailer/facebook_welcome.text.html.haml +4 -0
  67. data/test/rails_root/app/views/clearance_mailer/forgot_password.html.erb +6 -0
  68. data/test/rails_root/app/views/layouts/_flashes.erb +5 -0
  69. data/test/rails_root/app/views/layouts/application.html.erb +14 -0
  70. data/test/rails_root/app/views/passwords/edit.html.erb +18 -0
  71. data/test/rails_root/app/views/passwords/new.html.erb +15 -0
  72. data/test/rails_root/app/views/sessions/new.html.erb +29 -0
  73. data/test/rails_root/app/views/users/_form.html.erb +13 -0
  74. data/test/rails_root/app/views/users/_password_form.html.erb +13 -0
  75. data/test/rails_root/app/views/users/edit_password.html.erb +4 -0
  76. data/test/rails_root/app/views/users/new.html.erb +6 -0
  77. data/test/rails_root/config/boot.rb +109 -0
  78. data/test/rails_root/config/database.yml +13 -0
  79. data/test/rails_root/config/environment.rb +19 -0
  80. data/test/rails_root/config/environments/development.rb +19 -0
  81. data/test/rails_root/config/environments/test.rb +23 -0
  82. data/test/rails_root/config/facebooker.yml +13 -0
  83. data/test/rails_root/config/initializers/action_mailer.rb +1 -0
  84. data/test/rails_root/config/initializers/clearance.rb +8 -0
  85. data/test/rails_root/config/initializers/inflections.rb +10 -0
  86. data/test/rails_root/config/initializers/mime_types.rb +5 -0
  87. data/test/rails_root/config/initializers/requires.rb +13 -0
  88. data/test/rails_root/config/initializers/time_formats.rb +4 -0
  89. data/test/rails_root/config/routes.rb +12 -0
  90. data/test/rails_root/db/migrate/001_create_users.rb +25 -0
  91. data/test/rails_root/doc/README_FOR_APP +2 -0
  92. data/test/rails_root/doc/README_FOR_TEMPLATE +15 -0
  93. data/test/rails_root/lib/tasks/bootstrap.rake +16 -0
  94. data/test/rails_root/lib/tasks/capistrano.rake +96 -0
  95. data/test/rails_root/lib/tasks/git_tasks.rake +129 -0
  96. data/test/rails_root/lib/tasks/rspec.rake +132 -0
  97. data/test/rails_root/public/404.html +30 -0
  98. data/test/rails_root/public/422.html +30 -0
  99. data/test/rails_root/public/500.html +30 -0
  100. data/test/rails_root/public/dispatch.rb +10 -0
  101. data/test/rails_root/public/favicon.ico +0 -0
  102. data/test/rails_root/public/images/connect_light_medium_long.gif +0 -0
  103. data/test/rails_root/public/images/rails.png +0 -0
  104. data/test/rails_root/public/javascripts/application.js +2 -0
  105. data/test/rails_root/public/javascripts/builder.js +136 -0
  106. data/test/rails_root/public/javascripts/controls.js +963 -0
  107. data/test/rails_root/public/javascripts/dragdrop.js +972 -0
  108. data/test/rails_root/public/javascripts/effects.js +1120 -0
  109. data/test/rails_root/public/javascripts/facebooker.js +106 -0
  110. data/test/rails_root/public/javascripts/prototype.js +4225 -0
  111. data/test/rails_root/public/javascripts/scriptaculous.js +58 -0
  112. data/test/rails_root/public/javascripts/slider.js +277 -0
  113. data/test/rails_root/public/javascripts/sound.js +60 -0
  114. data/test/rails_root/public/robots.txt +1 -0
  115. data/test/rails_root/script/about +3 -0
  116. data/test/rails_root/script/autospec +5 -0
  117. data/test/rails_root/script/breakpointer +3 -0
  118. data/test/rails_root/script/console +3 -0
  119. data/test/rails_root/script/create_project.rb +52 -0
  120. data/test/rails_root/script/dbconsole +3 -0
  121. data/test/rails_root/script/destroy +3 -0
  122. data/test/rails_root/script/generate +3 -0
  123. data/test/rails_root/script/performance/benchmarker +3 -0
  124. data/test/rails_root/script/performance/profiler +3 -0
  125. data/test/rails_root/script/performance/request +3 -0
  126. data/test/rails_root/script/plugin +3 -0
  127. data/test/rails_root/script/process/inspector +3 -0
  128. data/test/rails_root/script/process/reaper +3 -0
  129. data/test/rails_root/script/process/spawner +3 -0
  130. data/test/rails_root/script/runner +3 -0
  131. data/test/rails_root/script/server +3 -0
  132. data/test/rails_root/script/spec +5 -0
  133. data/test/rails_root/script/spec_server +116 -0
  134. data/test/rails_root/spec/controllers/session_controller_spec.rb +5 -0
  135. data/test/rails_root/spec/models/user_spec.rb +5 -0
  136. data/test/rails_root/spec/rcov.opts +2 -0
  137. data/test/rails_root/spec/spec.opts +4 -0
  138. data/test/rails_root/spec/spec_helper.rb +51 -0
  139. data/test/rails_root/test/factories.rb +9 -0
  140. data/test/rails_root/test/functional/confirmations_controller_test.rb +5 -0
  141. data/test/rails_root/test/functional/passwords_controller_test.rb +5 -0
  142. data/test/rails_root/test/functional/sessions_controller_test.rb +5 -0
  143. data/test/rails_root/test/functional/users_controller_test.rb +5 -0
  144. data/test/rails_root/test/test_helper.rb +21 -0
  145. data/test/rails_root/test/unit/clearance_mailer_test.rb +6 -0
  146. data/test/rails_root/test/unit/user_test.rb +5 -0
  147. data/test/rails_root/vendor/gems/mocha-0.9.1/COPYING +3 -0
  148. data/test/rails_root/vendor/gems/mocha-0.9.1/MIT-LICENSE +7 -0
  149. data/test/rails_root/vendor/gems/mocha-0.9.1/README +35 -0
  150. data/test/rails_root/vendor/gems/mocha-0.9.1/RELEASE +246 -0
  151. data/test/rails_root/vendor/gems/mocha-0.9.1/Rakefile +188 -0
  152. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/misc.rb +44 -0
  153. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/mocha.rb +26 -0
  154. data/test/rails_root/vendor/gems/mocha-0.9.1/examples/stubba.rb +65 -0
  155. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/any_instance_method.rb +54 -0
  156. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/backtrace_filter.rb +17 -0
  157. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/cardinality.rb +95 -0
  158. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/central.rb +27 -0
  159. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/change_state_side_effect.rb +19 -0
  160. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/class_method.rb +86 -0
  161. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/configuration.rb +60 -0
  162. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/deprecation.rb +22 -0
  163. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/exception_raiser.rb +17 -0
  164. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation.rb +445 -0
  165. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation_error.rb +15 -0
  166. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/expectation_list.rb +50 -0
  167. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/in_state_ordering_constraint.rb +19 -0
  168. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/inspect.rb +39 -0
  169. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/instance_method.rb +16 -0
  170. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/is_a.rb +9 -0
  171. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/logger.rb +15 -0
  172. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/metaclass.rb +7 -0
  173. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/method_matcher.rb +21 -0
  174. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/mock.rb +196 -0
  175. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/mockery.rb +181 -0
  176. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/module_method.rb +16 -0
  177. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/multiple_yields.rb +20 -0
  178. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/names.rb +53 -0
  179. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/no_yields.rb +11 -0
  180. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/object.rb +134 -0
  181. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/all_of.rb +42 -0
  182. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/any_of.rb +47 -0
  183. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/any_parameters.rb +40 -0
  184. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/anything.rb +33 -0
  185. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/base.rb +15 -0
  186. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/equals.rb +42 -0
  187. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_entries.rb +45 -0
  188. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_entry.rb +56 -0
  189. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_key.rb +42 -0
  190. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/has_value.rb +42 -0
  191. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/includes.rb +40 -0
  192. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/instance_of.rb +42 -0
  193. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/is_a.rb +42 -0
  194. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/kind_of.rb +42 -0
  195. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/not.rb +42 -0
  196. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/object.rb +9 -0
  197. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/optionally.rb +55 -0
  198. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/regexp_matches.rb +43 -0
  199. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/responds_with.rb +43 -0
  200. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers/yaml_equivalent.rb +43 -0
  201. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameter_matchers.rb +26 -0
  202. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/parameters_matcher.rb +37 -0
  203. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/pretty_parameters.rb +28 -0
  204. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/return_values.rb +31 -0
  205. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/sequence.rb +42 -0
  206. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/single_return_value.rb +17 -0
  207. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/single_yield.rb +18 -0
  208. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/standalone.rb +166 -0
  209. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/state_machine.rb +91 -0
  210. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/stubbing_error.rb +16 -0
  211. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/test_case_adapter.rb +103 -0
  212. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/unexpected_invocation.rb +18 -0
  213. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha/yield_parameters.rb +31 -0
  214. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha.rb +20 -0
  215. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/mocha_standalone.rb +2 -0
  216. data/test/rails_root/vendor/gems/mocha-0.9.1/lib/stubba.rb +4 -0
  217. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/acceptance_test_helper.rb +38 -0
  218. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_18914_test.rb +43 -0
  219. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_21465_test.rb +34 -0
  220. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/bug_21563_test.rb +25 -0
  221. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/expected_invocation_count_test.rb +196 -0
  222. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/failure_messages_test.rb +64 -0
  223. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocha_example_test.rb +98 -0
  224. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocha_test_result_test.rb +84 -0
  225. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mock_test.rb +100 -0
  226. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mock_with_initializer_block_test.rb +51 -0
  227. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/mocked_methods_dispatch_test.rb +78 -0
  228. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/optional_parameters_test.rb +70 -0
  229. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/parameter_matcher_test.rb +179 -0
  230. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/partial_mocks_test.rb +47 -0
  231. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/return_value_test.rb +52 -0
  232. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/sequence_test.rb +186 -0
  233. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/standalone_test.rb +139 -0
  234. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/states_test.rb +70 -0
  235. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_any_instance_method_test.rb +195 -0
  236. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_class_method_test.rb +203 -0
  237. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_everything_test.rb +56 -0
  238. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_instance_method_test.rb +165 -0
  239. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_module_method_test.rb +163 -0
  240. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stub_test.rb +52 -0
  241. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_example_test.rb +102 -0
  242. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_test.rb +15 -0
  243. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubba_test_result_test.rb +66 -0
  244. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_error_backtrace_test.rb +64 -0
  245. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_method_unnecessarily_test.rb +65 -0
  246. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_any_instance_method_test.rb +130 -0
  247. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_class_method_test.rb +155 -0
  248. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_existent_instance_method_test.rb +145 -0
  249. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_any_instance_method_test.rb +130 -0
  250. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_class_method_test.rb +161 -0
  251. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_non_public_instance_method_test.rb +141 -0
  252. data/test/rails_root/vendor/gems/mocha-0.9.1/test/acceptance/stubbing_on_non_mock_object_test.rb +64 -0
  253. data/test/rails_root/vendor/gems/mocha-0.9.1/test/active_record_test_case.rb +36 -0
  254. data/test/rails_root/vendor/gems/mocha-0.9.1/test/deprecation_disabler.rb +15 -0
  255. data/test/rails_root/vendor/gems/mocha-0.9.1/test/execution_point.rb +36 -0
  256. data/test/rails_root/vendor/gems/mocha-0.9.1/test/method_definer.rb +18 -0
  257. data/test/rails_root/vendor/gems/mocha-0.9.1/test/simple_counter.rb +13 -0
  258. data/test/rails_root/vendor/gems/mocha-0.9.1/test/test_helper.rb +11 -0
  259. data/test/rails_root/vendor/gems/mocha-0.9.1/test/test_runner.rb +33 -0
  260. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/any_instance_method_test.rb +126 -0
  261. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/array_inspect_test.rb +16 -0
  262. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/backtrace_filter_test.rb +19 -0
  263. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/cardinality_test.rb +56 -0
  264. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/central_test.rb +65 -0
  265. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/change_state_side_effect_test.rb +41 -0
  266. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/class_method_test.rb +237 -0
  267. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/date_time_inspect_test.rb +21 -0
  268. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/exception_raiser_test.rb +42 -0
  269. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/expectation_list_test.rb +57 -0
  270. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/expectation_test.rb +459 -0
  271. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/hash_inspect_test.rb +16 -0
  272. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/in_state_ordering_constraint_test.rb +43 -0
  273. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/metaclass_test.rb +22 -0
  274. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/method_matcher_test.rb +23 -0
  275. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/mock_test.rb +290 -0
  276. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/mockery_test.rb +149 -0
  277. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/multiple_yields_test.rb +18 -0
  278. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/no_yields_test.rb +18 -0
  279. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/object_inspect_test.rb +37 -0
  280. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/object_test.rb +82 -0
  281. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/all_of_test.rb +26 -0
  282. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/any_of_test.rb +26 -0
  283. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/anything_test.rb +21 -0
  284. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/equals_test.rb +25 -0
  285. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_entries_test.rb +51 -0
  286. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_entry_test.rb +62 -0
  287. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_key_test.rb +36 -0
  288. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/has_value_test.rb +37 -0
  289. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/includes_test.rb +25 -0
  290. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/instance_of_test.rb +25 -0
  291. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/is_a_test.rb +25 -0
  292. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/kind_of_test.rb +25 -0
  293. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/not_test.rb +26 -0
  294. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/regexp_matches_test.rb +25 -0
  295. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/responds_with_test.rb +25 -0
  296. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/stub_matcher.rb +27 -0
  297. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameter_matchers/yaml_equivalent_test.rb +25 -0
  298. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/parameters_matcher_test.rb +121 -0
  299. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/return_values_test.rb +63 -0
  300. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/sequence_test.rb +104 -0
  301. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/single_return_value_test.rb +14 -0
  302. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/single_yield_test.rb +18 -0
  303. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/state_machine_test.rb +98 -0
  304. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/string_inspect_test.rb +11 -0
  305. data/test/rails_root/vendor/gems/mocha-0.9.1/test/unit/yield_parameters_test.rb +93 -0
  306. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/CONTRIBUTION_GUIDELINES.rdoc +12 -0
  307. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/MIT-LICENSE +22 -0
  308. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/README.rdoc +132 -0
  309. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/Rakefile +72 -0
  310. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/bin/convert_to_should_syntax +42 -0
  311. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/action_mailer/assertions.rb +39 -0
  312. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/action_mailer.rb +10 -0
  313. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record/assertions.rb +85 -0
  314. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record/macros.rb +715 -0
  315. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/active_record.rb +12 -0
  316. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/assertions.rb +45 -0
  317. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/context.rb +306 -0
  318. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/formats/html.rb +201 -0
  319. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/formats/xml.rb +170 -0
  320. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb +64 -0
  321. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/macros.rb +316 -0
  322. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/resource_options.rb +236 -0
  323. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller.rb +30 -0
  324. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/helpers.rb +10 -0
  325. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/macros.rb +74 -0
  326. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/private_helpers.rb +22 -0
  327. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/proc_extensions.rb +14 -0
  328. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/rails.rb +19 -0
  329. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks/list_tests.rake +24 -0
  330. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks/yaml_to_shoulda.rake +28 -0
  331. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/tasks.rb +3 -0
  332. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda.rb +17 -0
  333. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/rails/init.rb +1 -0
  334. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/README +36 -0
  335. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fail_macros.rb +34 -0
  336. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/addresses.yml +3 -0
  337. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/friendships.yml +0 -0
  338. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/posts.yml +5 -0
  339. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/products.yml +0 -0
  340. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/taggings.yml +0 -0
  341. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/tags.yml +9 -0
  342. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/fixtures/users.yml +6 -0
  343. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/functional/posts_controller_test.rb +104 -0
  344. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/functional/users_controller_test.rb +38 -0
  345. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/context_test.rb +145 -0
  346. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/convert_to_should_syntax_test.rb +63 -0
  347. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/helpers_test.rb +183 -0
  348. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/private_helpers_test.rb +34 -0
  349. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/other/should_test.rb +266 -0
  350. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/application.rb +25 -0
  351. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/posts_controller.rb +85 -0
  352. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/controllers/users_controller.rb +84 -0
  353. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/application_helper.rb +3 -0
  354. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/posts_helper.rb +2 -0
  355. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/helpers/users_helper.rb +2 -0
  356. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/address.rb +7 -0
  357. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/dog.rb +5 -0
  358. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/flea.rb +3 -0
  359. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/friendship.rb +4 -0
  360. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/post.rb +12 -0
  361. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/product.rb +12 -0
  362. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/tag.rb +8 -0
  363. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/tagging.rb +4 -0
  364. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/models/user.rb +28 -0
  365. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/posts.rhtml +17 -0
  366. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/users.rhtml +17 -0
  367. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/layouts/wide.html.erb +1 -0
  368. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/edit.rhtml +27 -0
  369. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/index.rhtml +25 -0
  370. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/new.rhtml +26 -0
  371. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/posts/show.rhtml +18 -0
  372. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/edit.rhtml +22 -0
  373. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/index.rhtml +22 -0
  374. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/new.rhtml +21 -0
  375. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/app/views/users/show.rhtml +13 -0
  376. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/boot.rb +109 -0
  377. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/database.yml +4 -0
  378. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/environment.rb +14 -0
  379. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/environments/sqlite3.rb +0 -0
  380. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/initializers/new_rails_defaults.rb +15 -0
  381. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/initializers/shoulda.rb +8 -0
  382. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/config/routes.rb +6 -0
  383. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/001_create_users.rb +18 -0
  384. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/002_create_posts.rb +13 -0
  385. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/003_create_taggings.rb +12 -0
  386. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/004_create_tags.rb +11 -0
  387. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/005_create_dogs.rb +12 -0
  388. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/006_create_addresses.rb +14 -0
  389. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/007_create_fleas.rb +11 -0
  390. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/008_create_dogs_fleas.rb +12 -0
  391. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/009_create_products.rb +17 -0
  392. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/migrate/010_create_friendships.rb +14 -0
  393. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/db/schema.rb +0 -0
  394. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/log/sqlite3.log +1 -0
  395. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/404.html +30 -0
  396. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/422.html +30 -0
  397. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/public/500.html +30 -0
  398. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/script/console +3 -0
  399. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/rails_root/script/generate +3 -0
  400. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/test_helper.rb +33 -0
  401. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/address_test.rb +10 -0
  402. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/dog_test.rb +7 -0
  403. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/flea_test.rb +6 -0
  404. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/friendship_test.rb +6 -0
  405. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/post_test.rb +15 -0
  406. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/product_test.rb +27 -0
  407. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/tag_test.rb +14 -0
  408. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/tagging_test.rb +6 -0
  409. data/test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/test/unit/user_test.rb +52 -0
  410. data/test/rails_root/vendor/plugins/facebooker/CHANGELOG.txt +0 -0
  411. data/test/rails_root/vendor/plugins/facebooker/COPYING +19 -0
  412. data/test/rails_root/vendor/plugins/facebooker/History.txt +16 -0
  413. data/test/rails_root/vendor/plugins/facebooker/Manifest.txt +110 -0
  414. data/test/rails_root/vendor/plugins/facebooker/README +46 -0
  415. data/test/rails_root/vendor/plugins/facebooker/README.txt +81 -0
  416. data/test/rails_root/vendor/plugins/facebooker/Rakefile +62 -0
  417. data/test/rails_root/vendor/plugins/facebooker/TODO.txt +10 -0
  418. data/test/rails_root/vendor/plugins/facebooker/examples/desktop_login.rb +14 -0
  419. data/test/rails_root/vendor/plugins/facebooker/facebooker.gemspec +34 -0
  420. data/test/rails_root/vendor/plugins/facebooker/generators/facebook/facebook_generator.rb +14 -0
  421. data/test/rails_root/vendor/plugins/facebooker/generators/facebook/templates/config/facebooker.yml +41 -0
  422. data/test/rails_root/vendor/plugins/facebooker/generators/facebook/templates/public/javascripts/facebooker.js +106 -0
  423. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/USAGE +33 -0
  424. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/facebook_controller_generator.rb +40 -0
  425. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/templates/controller.rb +7 -0
  426. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/templates/functional_test.rb +11 -0
  427. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/templates/helper.rb +2 -0
  428. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/templates/view.fbml.erb +2 -0
  429. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_controller/templates/view.html.erb +2 -0
  430. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_publisher/facebook_publisher_generator.rb +14 -0
  431. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_publisher/templates/create_facebook_templates.rb +15 -0
  432. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_publisher/templates/publisher.rb +3 -0
  433. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/USAGE +27 -0
  434. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/facebook_scaffold_generator.rb +118 -0
  435. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/controller.rb +93 -0
  436. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/facebook_style.css +2579 -0
  437. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/functional_test.rb +89 -0
  438. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/helper.rb +2 -0
  439. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/layout.fbml.erb +6 -0
  440. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/layout.html.erb +17 -0
  441. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/style.css +74 -0
  442. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_edit.fbml.erb +13 -0
  443. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_edit.html.erb +18 -0
  444. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_index.fbml.erb +24 -0
  445. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_index.html.erb +24 -0
  446. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_new.fbml.erb +12 -0
  447. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_new.html.erb +17 -0
  448. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_show.fbml.erb +10 -0
  449. data/test/rails_root/vendor/plugins/facebooker/generators/facebook_scaffold/templates/view_show.html.erb +10 -0
  450. data/test/rails_root/vendor/plugins/facebooker/generators/publisher/publisher_generator.rb +14 -0
  451. data/test/rails_root/vendor/plugins/facebooker/generators/receiver/receiver_generator.rb +9 -0
  452. data/test/rails_root/vendor/plugins/facebooker/generators/receiver/templates/xd_receiver.html +10 -0
  453. data/test/rails_root/vendor/plugins/facebooker/init.rb +54 -0
  454. data/test/rails_root/vendor/plugins/facebooker/install.rb +12 -0
  455. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/adapters/adapter_base.rb +87 -0
  456. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/adapters/bebo_adapter.rb +73 -0
  457. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/adapters/facebook_adapter.rb +48 -0
  458. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/admin.rb +28 -0
  459. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/batch_request.rb +44 -0
  460. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/data.rb +57 -0
  461. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/feed.rb +78 -0
  462. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/logging.rb +41 -0
  463. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/model.rb +123 -0
  464. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/affiliation.rb +10 -0
  465. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/album.rb +11 -0
  466. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/applicationproperties.rb +39 -0
  467. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/cookie.rb +10 -0
  468. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/education_info.rb +11 -0
  469. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/event.rb +26 -0
  470. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/friend_list.rb +14 -0
  471. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/group.rb +35 -0
  472. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/info_item.rb +10 -0
  473. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/info_section.rb +10 -0
  474. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/location.rb +8 -0
  475. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/notifications.rb +17 -0
  476. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/page.rb +27 -0
  477. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/photo.rb +10 -0
  478. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/tag.rb +12 -0
  479. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/user.rb +352 -0
  480. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/models/work_info.rb +9 -0
  481. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/parser.rb +540 -0
  482. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/controller.rb +246 -0
  483. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_asset_path.rb +18 -0
  484. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_form_builder.rb +112 -0
  485. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_pretty_errors.rb +14 -0
  486. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_request_fix.rb +24 -0
  487. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_session_handling.rb +58 -0
  488. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_url_helper.rb +191 -0
  489. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/facebook_url_rewriting.rb +39 -0
  490. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/helpers.rb +615 -0
  491. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/profile_publisher_extensions.rb +42 -0
  492. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/publisher.rb +475 -0
  493. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/routing.rb +49 -0
  494. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/test_helpers.rb +88 -0
  495. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/rails/utilities.rb +22 -0
  496. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/server_cache.rb +24 -0
  497. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/service.rb +31 -0
  498. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/session.rb +564 -0
  499. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker/version.rb +9 -0
  500. data/test/rails_root/vendor/plugins/facebooker/lib/facebooker.rb +143 -0
  501. data/test/rails_root/vendor/plugins/facebooker/lib/net/http_multipart_post.rb +123 -0
  502. data/test/rails_root/vendor/plugins/facebooker/lib/tasks/facebooker.rake +18 -0
  503. data/test/rails_root/vendor/plugins/facebooker/lib/tasks/tunnel.rake +46 -0
  504. data/test/rails_root/vendor/plugins/facebooker/rails/init.rb +1 -0
  505. data/test/rails_root/vendor/plugins/facebooker/setup.rb +1585 -0
  506. data/test/rails_root/vendor/plugins/facebooker/templates/layout.erb +24 -0
  507. data/test/rails_root/vendor/plugins/facebooker/test/adapters_test.rb +98 -0
  508. data/test/rails_root/vendor/plugins/facebooker/test/batch_request_test.rb +82 -0
  509. data/test/rails_root/vendor/plugins/facebooker/test/event_test.rb +15 -0
  510. data/test/rails_root/vendor/plugins/facebooker/test/facebook_admin_test.rb +75 -0
  511. data/test/rails_root/vendor/plugins/facebooker/test/facebook_cache_test.rb +43 -0
  512. data/test/rails_root/vendor/plugins/facebooker/test/facebook_data_test.rb +84 -0
  513. data/test/rails_root/vendor/plugins/facebooker/test/facebooker_test.rb +855 -0
  514. data/test/rails_root/vendor/plugins/facebooker/test/fixtures/multipart_post_body_with_only_parameters.txt +33 -0
  515. data/test/rails_root/vendor/plugins/facebooker/test/fixtures/multipart_post_body_with_single_file.txt +38 -0
  516. data/test/rails_root/vendor/plugins/facebooker/test/fixtures/multipart_post_body_with_single_file_that_has_nil_key.txt +38 -0
  517. data/test/rails_root/vendor/plugins/facebooker/test/http_multipart_post_test.rb +54 -0
  518. data/test/rails_root/vendor/plugins/facebooker/test/logging_test.rb +36 -0
  519. data/test/rails_root/vendor/plugins/facebooker/test/model_test.rb +91 -0
  520. data/test/rails_root/vendor/plugins/facebooker/test/publisher_test.rb +436 -0
  521. data/test/rails_root/vendor/plugins/facebooker/test/rails_integration_test.rb +1125 -0
  522. data/test/rails_root/vendor/plugins/facebooker/test/session_test.rb +587 -0
  523. data/test/rails_root/vendor/plugins/facebooker/test/test_helper.rb +60 -0
  524. data/test/rails_root/vendor/plugins/facebooker/test/user_test.rb +229 -0
  525. metadata +771 -0
@@ -0,0 +1,855 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'net/http_multipart_post'
3
+ class TestFacebooker < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @api_key = "95a71599e8293s66f1f0a6f4aeab3df7"
7
+ @secret_key = "3e4du8eea435d8e205a6c9b5d095bed1"
8
+ ENV["FACEBOOK_API_KEY"] = @api_key
9
+ ENV["FACEBOOK_SECRET_KEY"] = @secret_key
10
+ @session = Facebooker::Session.create(@api_key, @secret_key)
11
+ @desktop_session = Facebooker::Session::Desktop.create(@api_key, @secret_key)
12
+ @service = Facebooker::Service.new('http://apibase.com', '/api/path', @api_key)
13
+ @desktop_session.instance_variable_set("@service", @service)
14
+ end
15
+
16
+ def test_session_must_be_created_from_api_key_and_secret_key
17
+ assert_kind_of(Facebooker::Session, @session)
18
+ end
19
+
20
+ def test_session_can_tell_you_its_login_url
21
+ assert_not_nil(@session.login_url)
22
+ assert_equal("http://www.facebook.com/login.php?api_key=#{@api_key}&v=1.0", @session.login_url)
23
+ end
24
+
25
+ def test_desktop_session_returns_auth_toke_as_part_of_login_url
26
+ @service = flexmock(@service).should_receive(:post).at_least.once.and_return(123)
27
+ assert_kind_of(Facebooker::Session::Desktop, @desktop_session)
28
+ assert_match(/auth_token=[a-z0-9A-Z]/, @desktop_session.login_url)
29
+ end
30
+
31
+ def test_service_posts_data_to_http_location
32
+ flexmock(Net::HTTP).should_receive(:post_form).and_return(example_auth_token_xml)
33
+ assert_equal("http://www.facebook.com/login.php?api_key=#{@api_key}&v=1.0&auth_token=3e4a22bb2f5ed75114b0fc9995ea85f1", @desktop_session.login_url)
34
+ end
35
+
36
+ # def test_serivce_post_file_delegates_to_post_multipart_form
37
+ # # flexmock(@service).should_receive(:url).and_return('url')
38
+ # # flexmock(Net::HTTP).expects(:post_multipart_form).with('url', {:method => 'facebook.auth.createToken'}).returns(example_auth_token_xml)
39
+ #
40
+ # res = mock(:content_type => 'text/html', :code => '200', :body => '<html><body>my blog</body></html>')
41
+ # Net::HTTP.stubs(:get_response).once.with(uri).returns res
42
+ #
43
+ # @service.post_file(:method => 'facebook.auth.createToken')
44
+ # end
45
+
46
+ def test_desktop_session_be_secured_and_activated_after_receiving_auth_token_and_logging_in
47
+ establish_session
48
+ assert_equal("5f34e11bfb97c762e439e6a5-8055", @session.instance_variable_get("@session_key"))
49
+ end
50
+
51
+ def test_desktop_session_uses_secret_api_key_for_hashing_until_user_authenticates
52
+ assert_equal(@secret_key, @desktop_session.secret_for_method('facebook.auth.createToken'))
53
+ establish_session(@desktop_session)
54
+ assert_equal("ohairoflamao12345", @desktop_session.secret_for_method('anyNonAuthMethodName'))
55
+ end
56
+
57
+ def test_session_can_get_current_logged_in_user_id_and_will_cache
58
+ establish_session
59
+ flexmock(Net::HTTP).should_receive(:post_form).and_return(example_get_logged_in_user_xml)
60
+ assert_equal(8055, @session.user.id)
61
+ end
62
+
63
+ def test_can_get_current_users_friends
64
+ expect_http_posts_with_responses(example_friends_xml)
65
+ assert_equal([222333, 1240079], @session.user.friends.map{|friend| friend.id})
66
+ end
67
+
68
+ def test_can_get_current_users_friend_lists
69
+ expect_http_posts_with_responses(example_friend_lists_xml)
70
+ assert_equal([12089150545, 16361710545], @session.user.friend_lists.map{|friend_list| friend_list.flid})
71
+ end
72
+
73
+ def test_can_get_info_for_instance_of_user
74
+ populate_user_info
75
+ @session.user.first_name = "Dave"
76
+ end
77
+
78
+ def test_can_get_info_for_one_or_more_users
79
+ friends = populate_session_friends
80
+ friend = friends.detect{|f| f.id == 222333}
81
+ assert_equal('This field perpetuates the glorification of the ego. Also, it has a character limit.',
82
+ friend.about_me)
83
+ assert_equal('Facebook Developers', friend.affiliations.first.name)
84
+ assert_equal('Friendship', friend.meeting_for.first)
85
+ assert_equal('94303', friend.current_location.zip)
86
+ assert_equal('York', friend.hometown_location.city)
87
+ assert_equal('Harvard', friend.education_history.first.name)
88
+ assert(friend.education_history.first.concentrations.include?("Computer Science"))
89
+ assert_equal('Central York High School', friend.hs_info.hs1_name)
90
+ assert_equal('female', friend.meeting_sex.first)
91
+ assert_equal('I rule', friend.status.message)
92
+ end
93
+
94
+ def test_can_get_specific_info_for_one_or_more_users
95
+ friends = populate_session_friends_with_limited_fields
96
+ friend = friends.detect{|f| f.id == 222333}
97
+ assert_equal('I rule', friend.status.message)
98
+ assert_equal(nil, friend.hometown_location)
99
+ end
100
+
101
+ def test_session_can_expire_on_server_and_client_handles_appropriately
102
+ expect_http_posts_with_responses(example_session_expired_error_response)
103
+ assert_raises(Facebooker::Session::SessionExpired) {
104
+ @session.user.friends
105
+ }
106
+ end
107
+
108
+
109
+ def test_can_publish_story_to_users_feed
110
+ expect_http_posts_with_responses(example_publish_story_xml)
111
+ assert_nothing_raised {
112
+ assert(@session.user.publish_story((s = Facebooker::Feed::Story.new; s.title = 'o hai'; s.body = '4srsly'; s)))
113
+ }
114
+ end
115
+
116
+
117
+ def test_can_publish_action_to_users_feed
118
+ expect_http_posts_with_responses(example_publish_action_xml)
119
+ assert_nothing_raised {
120
+ assert(@session.user.publish_action((s = Facebooker::Feed::Action.new; s.title = 'o hai'; s.body = '4srsly'; s)))
121
+ }
122
+ end
123
+
124
+ def test_can_publish_templatized_action_to_users_feed
125
+ expect_http_posts_with_responses(example_publish_templatized_action_xml)
126
+ assert_nothing_raised {
127
+ action = Facebooker::Feed::TemplatizedAction.new
128
+ action.title_template = "{actor} did something"
129
+ assert(@session.user.publish_templatized_action(action))
130
+ }
131
+ end
132
+
133
+ def test_can_publish_templatized_action_to_users_feed_with_params_as_string
134
+ json_data="{\"move\": \"punch\"}"
135
+ action = Facebooker::Feed::TemplatizedAction.new
136
+ action.title_template = "{actor} did something "
137
+ action.title_data=json_data
138
+ assert_equal action.to_params[:title_data],json_data
139
+ end
140
+
141
+ def test_can_publish_templatized_action_to_users_feed_with_params_as_hash
142
+ json_data="{\"move\": \"punch\"}"
143
+ hash={:move=>"punch"}
144
+ hash.expects(:to_json).returns(json_data)
145
+ action = Facebooker::Feed::TemplatizedAction.new
146
+ action.title_template = "{actor} did something "
147
+ action.title_data=hash
148
+ assert_equal action.to_params[:title_data],json_data
149
+ end
150
+
151
+ def test_can_deactivate_template_bundle_by_id
152
+ expect_http_posts_with_responses(example_deactivate_template_bundle_by_id_xml)
153
+ assert_equal true, @session.post('facebook.feed.deactivateTemplateBundleByID', :template_bundle_id => 123)
154
+ end
155
+
156
+ def test_can_get_notifications_for_logged_in_user
157
+ expect_http_posts_with_responses(example_notifications_get_xml)
158
+ assert_equal("1", @session.user.notifications.messages.unread)
159
+ assert_equal("0", @session.user.notifications.pokes.unread)
160
+ assert_equal("1", @session.user.notifications.shares.unread)
161
+ end
162
+
163
+ def test_can_send_notifications
164
+ expect_http_posts_with_responses(example_notifications_send_xml)
165
+ assert_nothing_raised {
166
+ user_ids = [123, 321]
167
+ notification_fbml = "O HAI!!!"
168
+ optional_email_fbml = "This would be in the email. If this is not passed, facebook sends no mailz!"
169
+ assert_equal('http://www.facebook.com/send_email.php?from=211031&id=52', @session.send_notification(user_ids, notification_fbml, optional_email_fbml))
170
+ }
171
+ end
172
+
173
+ def test_can_send_emails
174
+ expect_http_posts_with_responses(example_notifications_send_email_xml)
175
+ assert_nothing_raised {
176
+ user_ids = [123, 321]
177
+ text = "Hi I am the text part of the email."
178
+ fbml = "Hi I am the fbml version of the <b>email</a>"
179
+ subject = "Somethign you should really pay attention to."
180
+ assert_equal('123,321', @session.send_email(user_ids, subject,text,fbml ))
181
+ }
182
+ end
183
+
184
+ def test_can_find_friends_who_have_installed_app
185
+ expect_http_posts_with_responses(example_app_users_xml)
186
+ assert_equal(2, @session.user.friends_with_this_app.size)
187
+ assert_equal([222333, 1240079], @session.user.friends_with_this_app.map{|f| f.id})
188
+ end
189
+
190
+ def test_when_marshaling_a_session_object_only_enough_data_to_stay_authenticated_is_stored
191
+ populate_session_friends
192
+ assert_equal(2, @session.user.friends.size)
193
+ reloaded_session = Marshal.load(Marshal.dump(@session))
194
+ %w(@session_key @uid @expires @secret_from_session @auth_token).each do |iv_name|
195
+ assert_not_nil(reloaded_session.instance_variable_get(iv_name))
196
+ end
197
+ assert_nil(reloaded_session.user.instance_variable_get("@friends"))
198
+ end
199
+
200
+ def test_sessions_can_be_infinite_or_can_expire
201
+ establish_session
202
+ assert(@session.expired?, "Session with expiry time #{@session.instance_variable_get('@expires')} occurred in the past and should be expired.")
203
+ @session.instance_variable_set("@expires", 0)
204
+ assert(@session.infinite?)
205
+ assert(!@session.expired?)
206
+ end
207
+
208
+ def test_session_can_tell_you_if_it_has_been_secured
209
+ mock = flexmock(Net::HTTP).should_receive(:post_form).and_return(example_auth_token_xml).once.ordered(:posts)
210
+ mock.should_receive(:post_form).and_return(example_get_session_xml.sub(/1173309298/, (Time.now + 60).to_i.to_s)).once.ordered(:posts)
211
+ @session.secure!
212
+ assert(@session.secured?)
213
+ end
214
+
215
+ def test_can_get_photos_by_pids
216
+ expect_http_posts_with_responses(example_get_photo_xml)
217
+ photos = @session.get_photos([97503428461115590, 97503428461115573])
218
+ assert_equal 2, photos.size
219
+ assert_equal "Rooftop barbecues make me act funny", photos.first.caption
220
+ end
221
+
222
+ def test_can_get_photos_by_subject_and_album
223
+ expect_http_posts_with_responses(example_get_photo_xml)
224
+ photos = @session.get_photos(nil, 22701786, 97503428432802022 )
225
+ assert_equal '97503428432802022', photos.first.aid
226
+ end
227
+
228
+ def test_getting_photos_requires_arguments
229
+ mock_http = establish_session
230
+ assert_raise(ArgumentError) { @session.get_photos() }
231
+ end
232
+
233
+ def test_can_get_albums_for_user
234
+ expect_http_posts_with_responses(example_user_albums_xml)
235
+ assert_equal('Summertime is Best', @session.user.albums.first.name)
236
+ assert_equal(2, @session.user.albums.size)
237
+ end
238
+
239
+ def test_can_get_albums_by_album_ids
240
+ expect_http_posts_with_responses(example_user_albums_xml)
241
+ albums = @session.get_albums([97503428432802022, 97503428432797817] )
242
+ assert_equal('Summertime is Best', albums[0].name)
243
+ assert_equal('Bonofon\'s Recital', albums[1].name)
244
+ end
245
+
246
+ def test_can_create_album
247
+ expect_http_posts_with_responses(example_new_album_xml)
248
+ assert_equal "My Empty Album", @session.user.create_album(:name => "My Empty Album", :location => "Limboland").name
249
+ end
250
+
251
+ def test_can_upload_photo
252
+ mock_http = establish_session
253
+ mock_http.should_receive(:post_multipart_form).and_return(example_upload_photo_xml).once.ordered(:posts)
254
+ f = Net::HTTP::MultipartPostFile.new("image.jpg", "image/jpeg", "RAW DATA")
255
+ assert_equal "Under the sunset", @session.user.upload_photo(f).caption
256
+ end
257
+
258
+ def test_can_get_photo_tags
259
+ expect_http_posts_with_responses(example_photo_tags_xml)
260
+ assert_instance_of Facebooker::Tag, @session.get_tags(:pids => 97503428461115571 ).first
261
+ end
262
+
263
+ # TODO: how to test that tags were created properly? Response doesn't contain much
264
+ def test_can_tag_a_user_in_a_photo
265
+ expect_http_posts_with_responses(example_add_tag_xml)
266
+ assert !@session.add_tags(pid = 97503428461115571, x= 30.0, y = 62.5, tag_uid = 1234567890).nil?
267
+ end
268
+
269
+ def test_can_add_multiple_tags_to_photos
270
+ end
271
+
272
+ def test_can_get_coordinates_for_photo_tags
273
+ expect_http_posts_with_responses(example_photo_tags_xml)
274
+ tag = @session.get_tags([97503428461115571]).first
275
+ assert_equal ['65.4248', '16.8627'], tag.coordinates
276
+ end
277
+
278
+ def test_can_get_app_profile_fbml_for_user
279
+ expect_http_posts_with_responses(example_get_fbml_xml)
280
+ assert_match(/My profile!/, @session.user.profile_fbml)
281
+ end
282
+
283
+ def test_can_set_app_profile_fbml_for_user
284
+ expect_http_posts_with_responses(example_set_fbml_xml)
285
+ assert_nothing_raised {
286
+ @session.user.profile_fbml = 'aha!'
287
+ }
288
+ end
289
+
290
+ def test_get_logged_in_user
291
+ expect_http_posts_with_responses(example_get_logged_in_user_xml)
292
+ assert_equal 1240077, @session.post('facebook.users.getLoggedInUser', :session_key => @session.session_key)
293
+ end
294
+
295
+ def test_pages_get_info
296
+ expect_http_posts_with_responses(example_pages_get_info_xml)
297
+ info = {
298
+ 'page_id' => '4846711747',
299
+ 'name' => 'Kronos Quartet',
300
+ 'website' => 'http://www.kronosquartet.org',
301
+ 'company_overview' => ""
302
+ }
303
+ assert_equal [info], @session.post('facebook.pages.getInfo', :fields => ['company_overview', 'website', 'name', 'page_id'].join(','), :page_ids => [4846711747].join(','))
304
+ end
305
+
306
+ def test_pages_is_admin_true
307
+ expect_http_posts_with_responses(example_pages_is_admin_true_xml)
308
+ assert_equal true, @session.post('facebook.pages.isAdmin', :page_id => 123)
309
+ end
310
+
311
+ def test_pages_is_admin_false
312
+ expect_http_posts_with_responses(example_pages_is_admin_false_xml)
313
+ assert_equal false, @session.post('facebook.pages.isAdmin', :page_id => 123)
314
+ end
315
+
316
+ def test_users_set_status_true
317
+ expect_http_posts_with_responses(example_users_set_status_true_xml)
318
+ assert_equal true, @session.post('facebook.users.setStatus', :uid => 123, :status => 'message')
319
+ end
320
+
321
+ def test_users_set_status_false
322
+ expect_http_posts_with_responses(example_users_set_status_false_xml)
323
+ assert_equal false, @session.post('facebook.users.setStatus', :uid => 123, :status => 'message')
324
+ end
325
+
326
+ def test_desktop_apps_cannot_request_to_get_or_set_profile_fbml_for_any_user_other_than_logged_in_user
327
+ mock_http = establish_session(@desktop_session)
328
+ mock_http.should_receive(:post_form).and_return(example_friends_xml).once.ordered(:posts)
329
+ assert_raises(Facebooker::NonSessionUser) {
330
+ @desktop_session.user.friends.first.profile_fbml
331
+ }
332
+ assert_raises(Facebooker::NonSessionUser) {
333
+ @desktop_session.user.friends.first.profile_fbml = "O rly"
334
+ }
335
+ end
336
+
337
+ private
338
+ def populate_user_info
339
+ mock_http = establish_session
340
+ mock_http.should_receive(:post_form).and_return(example_user_info_xml).once
341
+ @session.user.populate
342
+ end
343
+
344
+ def populate_user_info_with_limited_fields
345
+ expect_http_posts_with_responses(example_limited_user_info_xml)
346
+ @session.user.populate(:affiliations, :status, :meeting_for)
347
+ end
348
+
349
+ def populate_session_friends
350
+ expect_http_posts_with_responses(example_friends_xml, example_user_info_xml)
351
+ @session.user.friends!
352
+ end
353
+
354
+ def populate_session_friends_with_limited_fields
355
+ expect_http_posts_with_responses(example_friends_xml, example_limited_user_info_xml)
356
+ @session.user.friends!(:affiliations, :status, :meeting_for)
357
+ end
358
+
359
+ def sample_args_to_post
360
+ {:method=>"facebook.auth.createToken", :sig=>"18b3dc4f5258a63c0ad641eebd3e3930"}
361
+ end
362
+
363
+ def example_pages_get_info_xml
364
+ <<-XML
365
+ <?xml version="1.0" encoding="UTF-8"?>
366
+ <pages_getInfo_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
367
+ <page>
368
+ <page_id>4846711747</page_id>
369
+ <name>Kronos Quartet</name>
370
+ <website>http://www.kronosquartet.org</website>
371
+ <company_overview/>
372
+ </page>
373
+ </pages_getInfo_response>
374
+ XML
375
+ end
376
+
377
+ def example_pages_is_admin_true_xml
378
+ <<-XML
379
+ <?xml version="1.0" encoding="UTF-8"?>
380
+ <pages_isAdmin_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</pages_isAdmin_response>
381
+ XML
382
+ end
383
+
384
+ def example_pages_is_admin_false_xml
385
+ <<-XML
386
+ <?xml version="1.0" encoding="UTF-8"?>
387
+ <pages_isAdmin_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">0</pages_isAdmin_response>
388
+ XML
389
+ end
390
+
391
+ def example_users_set_status_true_xml
392
+ <<-XML
393
+ <?xml version="1.0" encoding="UTF-8"?>
394
+ <users_setStatus_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</users_setStatus_response>
395
+ XML
396
+ end
397
+
398
+ def example_users_set_status_false_xml
399
+ <<-XML
400
+ <?xml version="1.0" encoding="UTF-8"?>
401
+ <users_setStatus_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">0</users_setStatus_response>
402
+ XML
403
+ end
404
+
405
+ def example_set_fbml_xml
406
+ <<-XML
407
+ <?xml version="1.0" encoding="UTF-8"?>
408
+ <profile_setFBML_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</profile_setFBML_response>
409
+ XML
410
+ end
411
+
412
+ def example_get_fbml_xml
413
+ <<-XML
414
+ <?xml version="1.0" encoding="UTF-8"?>
415
+ <profile_getFBML_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
416
+ &lt;fb:if-is-own-profile&gt;My profile!
417
+ &lt;fb:else&gt; Not my profile!&lt;/fb:else&gt;
418
+ &lt;/fb:if-is-own-profile&gt;
419
+ </profile_getFBML_response>
420
+ XML
421
+ end
422
+
423
+ def example_notifications_send_xml
424
+ <<-XML
425
+ <?xml version="1.0" encoding="UTF-8"?>
426
+ <notifications_send_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">http://www.facebook.com/send_email.php?from=211031&id=52</notifications_send_response>
427
+ XML
428
+ end
429
+
430
+ def example_notifications_send_email_xml
431
+ <<-XML
432
+ <?xml version="1.0" encoding="UTF-8"?>
433
+ <notifications_sendEmail_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">123,321</notifications_sendEmail_response>
434
+ XML
435
+ end
436
+
437
+ def example_request_send_xml
438
+ <<-XML
439
+ <?xml version="1.0" encoding="UTF-8"?>
440
+ <notifications_sendRequest_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">http://www.facebook.com/send_req.php?from=211031&id=6</notifications_sendRequest_response>
441
+ XML
442
+ end
443
+
444
+ def example_notifications_get_xml
445
+ <<-XML
446
+ <?xml version="1.0" encoding="UTF-8"?>
447
+ <notifications_get_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
448
+ <messages>
449
+ <unread>1</unread>
450
+ <most_recent>1170644932</most_recent>
451
+ </messages>
452
+ <pokes>
453
+ <unread>0</unread>
454
+ <most_recent>0</most_recent>
455
+ </pokes>
456
+ <shares>
457
+ <unread>1</unread>
458
+ <most_recent>1170657686</most_recent>
459
+ </shares>
460
+ <friend_requests list="true">
461
+ <uid>2231342839</uid>
462
+ <uid>2231511925</uid>
463
+ <uid>2239284527</uid>
464
+ </friend_requests>
465
+ <group_invites list="true"/>
466
+ <event_invites list="true"/>
467
+ </notifications_get_response>
468
+ XML
469
+ end
470
+
471
+ def example_publish_story_xml
472
+ <<-XML
473
+ <?xml version="1.0" encoding="UTF-8"?>
474
+ <feed_publishStoryToUser_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</feed_publishStoryToUser_response>
475
+ XML
476
+ end
477
+
478
+ def example_publish_action_xml
479
+ <<-XML
480
+ <?xml version="1.0" encoding="UTF-8"?>
481
+ <feed_publishActionOfUser_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</feed_publishActionOfUser_response>
482
+ XML
483
+ end
484
+
485
+ def example_publish_templatized_action_xml
486
+ <<-XML
487
+ <?xml version="1.0" encoding="UTF-8"?>
488
+ <feed_publishTemplatizedAction_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
489
+ <feed_publishTemplatizedAction_response_elt>1</feed_publishTemplatizedAction_response_elt>
490
+ </feed_publishTemplatizedAction_response>
491
+ XML
492
+ end
493
+
494
+ def example_deactivate_template_bundle_by_id_xml
495
+ <<-XML
496
+ <?xml version="1.0" encoding="UTF-8"?>
497
+ <feed_deactivateTemplateBundleByID_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/">1</feed_deactivateTemplateBundleByID_response>
498
+ XML
499
+ end
500
+
501
+ def example_user_info_xml
502
+ <<-XML
503
+ <?xml version="1.0" encoding="UTF-8"?>
504
+ <users_getInfo_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
505
+ <user>
506
+ <uid>222333</uid>
507
+ <about_me>This field perpetuates the glorification of the ego. Also, it has a character limit.</about_me>
508
+ <activities>Here: facebook, etc. There: Glee Club, a capella, teaching.</activities>
509
+ <affiliations list="true">
510
+ <affiliation>
511
+ <nid>50453093</nid>
512
+ <name>Facebook Developers</name>
513
+ <type>work</type>
514
+ <status/>
515
+ <year/>
516
+ </affiliation>
517
+ </affiliations>
518
+ <birthday>November 3</birthday>
519
+ <books>The Brothers K, GEB, Ken Wilber, Zen and the Art, Fitzgerald, The Emporer's New Mind, The Wonderful Story of Henry Sugar</books>
520
+ <current_location>
521
+ <city>Palo Alto</city>
522
+ <state>CA</state>
523
+ <country>United States</country>
524
+ <zip>94303</zip>
525
+ </current_location>
526
+ <education_history list="true">
527
+ <education_info>
528
+ <name>Harvard</name>
529
+ <year>2003</year>
530
+ <concentrations list="true">
531
+ <concentration>Applied Mathematics</concentration>
532
+ <concentration>Computer Science</concentration>
533
+ </concentrations>
534
+ <degree>Masters</degree>
535
+ </education_info>
536
+ </education_history>
537
+ <first_name>Dave</first_name>
538
+ <hometown_location>
539
+ <city>York</city>
540
+ <state>PA</state>
541
+ <country>United States</country>
542
+ <zip>0</zip>
543
+ </hometown_location>
544
+ <hs_info>
545
+ <hs1_name>Central York High School</hs1_name>
546
+ <hs2_name/>
547
+ <grad_year>1999</grad_year>
548
+ <hs1_id>21846</hs1_id>
549
+ <hs2_id>0</hs2_id>
550
+ </hs_info>
551
+ <is_app_user>1</is_app_user>
552
+ <has_added_app>1</has_added_app>
553
+ <interests>coffee, computers, the funny, architecture, code breaking,snowboarding, philosophy, soccer, talking to strangers</interests>
554
+ <last_name>Fetterman</last_name>
555
+ <meeting_for list="true">
556
+ <seeking>Friendship</seeking>
557
+ </meeting_for>
558
+ <meeting_sex list="true">
559
+ <sex>female</sex>
560
+ </meeting_sex>
561
+ <movies>Tommy Boy, Billy Madison, Fight Club, Dirty Work, Meet the Parents, My Blue Heaven, Office Space </movies>
562
+ <music>New Found Glory, Daft Punk, Weezer, The Crystal Method, Rage, the KLF, Green Day, Live, Coldplay, Panic at the Disco, Family Force 5</music>
563
+ <name>Dave Fetterman</name>
564
+ <notes_count>0</notes_count>
565
+ <pic>http://photos-055.facebook.com/ip007/profile3/1271/65/s8055_39735.jpg</pic>
566
+ <pic_big>http://photos-055.facebook.com/ip007/profile3/1271/65/n8055_39735.jpg</pic_big>
567
+ <pic_small>http://photos-055.facebook.com/ip007/profile3/1271/65/t8055_39735.jpg</pic_small>
568
+ <pic_square>http://photos-055.facebook.com/ip007/profile3/1271/65/q8055_39735.jpg</pic_square>
569
+ <political>Moderate</political>
570
+ <profile_update_time>1170414620</profile_update_time>
571
+ <quotes/>
572
+ <relationship_status>In a Relationship</relationship_status>
573
+ <religion/>
574
+ <sex>male</sex>
575
+ <significant_other_id xsi:nil="true"/>
576
+ <status>
577
+ <message>I rule</message>
578
+ <time>0</time>
579
+ </status>
580
+ <timezone>-8</timezone>
581
+ <tv>cf. Bob Trahan</tv>
582
+ <wall_count>121</wall_count>
583
+ <work_history list="true">
584
+ <work_info>
585
+ <location>
586
+ <city>Palo Alto</city>
587
+ <state>CA</state>
588
+ <country>United States</country>
589
+ </location>
590
+ <company_name>Facebook</company_name>
591
+ <position>Software Engineer</position>
592
+ <description>Tech Lead, Facebook Platform</description>
593
+ <start_date>2006-01</start_date>
594
+ <end_date/>
595
+ </work_info>
596
+ </work_history>
597
+ </user>
598
+ <user>
599
+ <uid>1240079</uid>
600
+ <about_me>I am here.</about_me>
601
+ <activities>Party.</activities>
602
+ </user>
603
+ </users_getInfo_response>
604
+ XML
605
+ end
606
+
607
+ def example_limited_user_info_xml
608
+ <<-XML
609
+ <?xml version="1.0" encoding="UTF-8"?>
610
+ <users_getInfo_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
611
+ <user>
612
+ <uid>222333</uid>
613
+ <affiliations list="true">
614
+ <affiliation>
615
+ <nid>50453093</nid>
616
+ <name>Facebook Developers</name>
617
+ <type>work</type>
618
+ <status/>
619
+ <year/>
620
+ </affiliation>
621
+ </affiliations>
622
+ <meeting_for list="true">
623
+ <seeking>Friendship</seeking>
624
+ </meeting_for>
625
+ <status>
626
+ <message>I rule</message>
627
+ <time>0</time>
628
+ </status>
629
+ </user>
630
+ <user>
631
+ <uid>1240079</uid>
632
+ <activities>Party.</activities>
633
+ </user>
634
+ </users_getInfo_response>
635
+ XML
636
+ end
637
+
638
+
639
+ def example_friends_xml
640
+ <<-XML
641
+ <?xml version="1.0" encoding="UTF-8"?>
642
+ <friends_get_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
643
+ <uid>222333</uid>
644
+ <uid>1240079</uid>
645
+ </friends_get_response>
646
+ XML
647
+ end
648
+
649
+ def example_friend_lists_xml
650
+ <<-XML
651
+ <?xml version="1.0" encoding="UTF-8"?>
652
+ <friends_getLists_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
653
+ <friendlist>
654
+ <flid>12089150545</flid>
655
+ <name>Family</name>
656
+ </friendlist>
657
+ <friendlist>
658
+ <flid>16361710545</flid>
659
+ <name>Entrepreneuer</name>
660
+ </friendlist>
661
+ </friends_getLists_response>
662
+ XML
663
+ end
664
+
665
+ def example_get_logged_in_user_xml
666
+ <<-XML
667
+ <?xml version="1.0" encoding="UTF-8"?>
668
+ <users_getLoggedInUser_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">1240077</users_getLoggedInUser_response>
669
+ XML
670
+ end
671
+
672
+ def example_invalid_api_key_error_response
673
+ <<-XML
674
+ <?xml version="1.0" encoding="UTF-8"?>
675
+ <error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
676
+ <error_code>101</error_code>
677
+ <error_msg>Invalid API key</error_msg>
678
+ <request_args list="true">
679
+ <arg>
680
+ <key>v</key>
681
+ <value>1.0</value>
682
+ </arg>
683
+ <arg>
684
+ <key>method</key>
685
+ <value>facebook.auth.createToken</value>
686
+ </arg>
687
+ <arg>
688
+ <key>sig</key>
689
+ <value>611f5f44e55f3fe17f858a8de84a4b0a</value>
690
+ </arg>
691
+ <arg>
692
+ <key>call_id</key>
693
+ <value>1186088346.82142</value>
694
+ </arg>
695
+ </request_args>
696
+ </error_response>
697
+ XML
698
+ end
699
+
700
+ def example_session_expired_error_response
701
+ <<-XML
702
+ <?xml version="1.0" encoding="UTF-8"?>
703
+ <error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
704
+ <error_code>102</error_code>
705
+ <error_msg>Session Expired</error_msg>
706
+ <request_args list="true">
707
+ <arg>
708
+ <key>v</key>
709
+ <value>1.0</value>
710
+ </arg>
711
+ <arg>
712
+ <key>method</key>
713
+ <value>facebook.auth.createToken</value>
714
+ </arg>
715
+ <arg>
716
+ <key>sig</key>
717
+ <value>611f5f44e55f3fe17f858a8de84a4b0a</value>
718
+ </arg>
719
+ <arg>
720
+ <key>call_id</key>
721
+ <value>1186088346.82142</value>
722
+ </arg>
723
+ </request_args>
724
+ </error_response>
725
+ XML
726
+ end
727
+
728
+ def example_app_users_xml
729
+ <<-XML
730
+ <?xml version="1.0" encoding="UTF-8"?>
731
+ <friends_getAppUsers_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
732
+ <uid>222333</uid>
733
+ <uid>1240079</uid>
734
+ </friends_getAppUsers_response>
735
+ XML
736
+ end
737
+
738
+ def example_user_albums_xml
739
+ <<-XML
740
+ <?xml version="1.0" encoding="UTF-8"?>
741
+ <photos_getAlbums_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
742
+ <album>
743
+ <aid>97503428432802022</aid>
744
+ <cover_pid>97503428461115574</cover_pid>
745
+ <owner>22701786</owner>
746
+ <name>Summertime is Best</name>
747
+ <created>1184120648</created>
748
+ <modified>1185465771</modified>
749
+ <description>Happenings on or around Summer '07</description>
750
+ <location>Brooklyn, New York</location>
751
+ <link>http://www.facebook.com/album.php?aid=2011366&amp;id=22701786</link>
752
+ <size>49</size>
753
+ </album>
754
+ <album>
755
+ <aid>97503428432797817</aid>
756
+ <cover_pid>97503428460977993</cover_pid>
757
+ <owner>22701786</owner>
758
+ <name>Bonofon's Recital</name>
759
+ <created>1165356279</created>
760
+ <modified>1165382364</modified>
761
+ <description>The whole Ewing fam flies out to flatland to watch the Bonofon's senior recital. That boy sure can tinkle them ivories.</description>
762
+ <location>Grinnell College, Grinnell Iowa</location>
763
+ <link>http://www.facebook.com/album.php?aid=2007161&amp;id=22701786</link>
764
+ <size>14</size>
765
+ </album>
766
+ </photos_getAlbums_response>
767
+ XML
768
+ end
769
+
770
+ def example_upload_photo_xml
771
+ <<-XML
772
+ <?xml version="1.0" encoding="UTF-8"?>
773
+ <photos_upload_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
774
+ <pid>940915697041656</pid>
775
+ <aid>940915667462717</aid>
776
+ <owner>219074</owner>
777
+ <src>http://ip002.facebook.com/v67/161/72/219074/s219074_31637752_5455.jpg</src>
778
+ <src_big>http://ip002.facebook.com/v67/161/72/219074/n219074_31637752_5455.jpg</src_big>
779
+ <src_small>http://ip002.facebook.com/v67/161/72/219074/t219074_31637752_5455.jpg</src_small>
780
+ <link>http://www.facebook.com/photo.php?pid=31637752&id=219074</link>
781
+ <caption>Under the sunset</caption>
782
+ </photos_upload_response>
783
+ XML
784
+ end
785
+
786
+ def example_new_album_xml
787
+ <<-XML
788
+ <?xml version="1.0" encoding="UTF-8"?>
789
+ <photos_createAlbum_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">
790
+ <aid>34595963571485</aid>
791
+ <cover_pid>0</cover_pid>
792
+ <owner>8055</owner>
793
+ <name>My Empty Album</name>
794
+ <created>1132553109</created>
795
+ <modified>1132553363</modified>
796
+ <description>No I will not make out with you</description>
797
+ <location>York, PA</location>
798
+ <link>http://www.facebook.com/album.php?aid=2002205&id=8055</link>
799
+ <size>0</size>
800
+ </photos_createAlbum_response>
801
+ XML
802
+ end
803
+
804
+ def example_photo_tags_xml
805
+ <<-XML
806
+ <?xml version="1.0" encoding="UTF-8"?>
807
+ <photos_getTags_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
808
+ <photo_tag>
809
+ <pid>97503428461115571</pid>
810
+ <subject>570070524</subject>
811
+ <xcoord>65.4248</xcoord>
812
+ <ycoord>16.8627</ycoord>
813
+ </photo_tag>
814
+ </photos_getTags_response>
815
+ XML
816
+ end
817
+
818
+ def example_add_tag_xml
819
+ <<-XML
820
+ <?xml version="1.0" encoding="UTF-8"?>
821
+ <photos_addTag_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd">1</photos_addTag_response>
822
+ XML
823
+ end
824
+
825
+ def example_get_photo_xml
826
+ <<-XML
827
+ <?xml version="1.0" encoding="UTF-8"?>
828
+ <photos_get_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd" list="true">
829
+ <photo>
830
+ <pid>97503428461115590</pid>
831
+ <aid>97503428432802022</aid>
832
+ <owner>22701786</owner>
833
+ <src>http://photos-c.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/s22701786_30324934_7816.jpg</src>
834
+ <src_big>http://photos-c.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/n22701786_30324934_7816.jpg</src_big>
835
+ <src_small>http://photos-c.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/t22701786_30324934_7816.jpg</src_small>
836
+ <link>http://www.facebook.com/photo.php?pid=30324934&amp;id=22701786</link>
837
+ <caption>Rooftop barbecues make me act funny</caption>
838
+ <created>1184120987</created>
839
+ </photo>
840
+ <photo>
841
+ <pid>97503428461115573</pid>
842
+ <aid>97503428432802022</aid>
843
+ <owner>22701786</owner>
844
+ <src>http://photos-b.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/s22701786_30324917_4555.jpg</src>
845
+ <src_big>http://photos-b.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/n22701786_30324917_4555.jpg</src_big>
846
+ <src_small>http://photos-b.ak.facebook.com/photos-ak-sf2p/v77/74/112/22701786/t22701786_30324917_4555.jpg</src_small>
847
+ <link>http://www.facebook.com/photo.php?pid=30324917&amp;id=22701786</link>
848
+ <caption/>
849
+ <created>1184120654</created>
850
+ </photo>
851
+ </photos_get_response>
852
+ XML
853
+ end
854
+
855
+ end