tests_main.js 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. require.config({
  2. paths: {
  3. "jquery": "components/jquery/jquery",
  4. "locales": "locale/locales",
  5. "jquery.tinysort": "components/tinysort/src/jquery.tinysort",
  6. "underscore": "components/underscore/underscore",
  7. "backbone": "components/backbone/backbone",
  8. "backbone.localStorage": "components/backbone.localStorage/backbone.localStorage",
  9. "strophe": "components/strophe/strophe",
  10. "strophe.muc": "components/strophe.muc/index",
  11. "strophe.roster": "components/strophe.roster/index",
  12. "strophe.vcard": "components/strophe.vcard/index",
  13. "strophe.disco": "components/strophe.disco/index",
  14. "salsa20": "components/otr/build/dep/salsa20",
  15. "bigint": "src/bigint",
  16. "crypto.core": "components/otr/vendor/cryptojs/core",
  17. "crypto.enc-base64": "components/otr/vendor/cryptojs/enc-base64",
  18. "crypto.md5": "components/crypto-js/src/md5",
  19. "crypto.evpkdf": "components/crypto-js/src/evpkdf",
  20. "crypto.cipher-core": "components/otr/vendor/cryptojs/cipher-core",
  21. "crypto.aes": "components/otr/vendor/cryptojs/aes",
  22. "crypto.sha1": "components/otr/vendor/cryptojs/sha1",
  23. "crypto.sha256": "components/otr/vendor/cryptojs/sha256",
  24. "crypto.hmac": "components/otr/vendor/cryptojs/hmac",
  25. "crypto.pad-nopadding": "components/otr/vendor/cryptojs/pad-nopadding",
  26. "crypto.mode-ctr": "components/otr/vendor/cryptojs/mode-ctr",
  27. "crypto": "src/crypto",
  28. "eventemitter": "components/otr/build/dep/eventemitter",
  29. "otr": "components/otr/build/otr",
  30. "converse-dependencies": "src/deps-full",
  31. // Extra test dependencies
  32. "mock": "tests/mock",
  33. "utils": "tests/utils",
  34. "jasmine": "components/jasmine/lib/jasmine-core/jasmine",
  35. "jasmine-html": "components/jasmine/lib/jasmine-core/jasmine-html",
  36. "jasmine-console-reporter": "node_modules/jasmine-reporters/src/jasmine.console_reporter",
  37. "jasmine-junit-reporter": "node_modules/jasmine-reporters/src/jasmine.junit_reporter"
  38. },
  39. // define module dependencies for modules not using define
  40. shim: {
  41. 'backbone': {
  42. //These script dependencies should be loaded before loading
  43. //backbone.js
  44. deps: [
  45. 'underscore',
  46. 'jquery'
  47. ],
  48. //Once loaded, use the global 'Backbone' as the
  49. //module value.
  50. exports: 'Backbone'
  51. },
  52. 'jquery.tinysort': { deps: ['jquery'] },
  53. 'strophe': { deps: ['jquery'] },
  54. 'underscore': { exports: '_' },
  55. 'strophe.muc': { deps: ['strophe', 'jquery'] },
  56. 'strophe.roster': { deps: ['strophe'] },
  57. 'strophe.vcard': { deps: ['strophe'] },
  58. 'strophe.disco': { deps: ['strophe'] },
  59. // Extra test dependencies
  60. 'jasmine-html': {
  61. deps: ['jasmine'],
  62. exports: 'jasmine'
  63. },
  64. 'jasmine-console-reporter': {
  65. deps: ['jasmine-html'],
  66. exports: 'jasmine'
  67. },
  68. 'jasmine-junit-reporter': {
  69. deps: ['jasmine-html'],
  70. exports: 'jasmine'
  71. }
  72. }
  73. });
  74. // Polyfill 'bind' which is not available in phantomjs < 2.0
  75. if (!Function.prototype.bind) {
  76. Function.prototype.bind = function (oThis) {
  77. if (typeof this !== "function") {
  78. // closest thing possible to the ECMAScript 5 internal IsCallable function
  79. throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
  80. }
  81. var aArgs = Array.prototype.slice.call(arguments, 1),
  82. fToBind = this,
  83. fNOP = function () {},
  84. fBound = function () {
  85. return fToBind.apply(this instanceof fNOP && oThis ? this : oThis,
  86. aArgs.concat(Array.prototype.slice.call(arguments)));
  87. };
  88. fNOP.prototype = this.prototype;
  89. fBound.prototype = new fNOP();
  90. return fBound;
  91. };
  92. }
  93. require([
  94. "jquery",
  95. "converse",
  96. "mock",
  97. "jasmine-html"
  98. ], function($, converse, mock, jasmine) {
  99. // Set up converse.js
  100. window.converse_api = converse;
  101. window.localStorage.clear();
  102. converse.initialize({
  103. prebind: false,
  104. xhr_user_search: false,
  105. auto_subscribe: false,
  106. animate: false,
  107. show_call_button: true,
  108. connection: mock.mock_connection,
  109. testing: true
  110. }, function (converse) {
  111. window.converse = converse;
  112. window.crypto = {
  113. getRandomValues: function (buf) {
  114. var i;
  115. for (i=0, len=buf.length; i<len; i++) {
  116. buf[i] = Math.floor(Math.random()*256);
  117. }
  118. }
  119. };
  120. require([
  121. "jasmine-console-reporter",
  122. "jasmine-junit-reporter",
  123. "spec/converse",
  124. "spec/otr",
  125. "spec/eventemitter",
  126. "spec/controlbox",
  127. "spec/chatbox",
  128. "spec/chatroom"
  129. ], function () {
  130. // Make sure this callback is only called once.
  131. delete converse.callback;
  132. // Jasmine stuff
  133. var jasmineEnv = jasmine.getEnv();
  134. if (/PhantomJS/.test(navigator.userAgent)) {
  135. jasmineEnv.addReporter(new jasmine.TrivialReporter());
  136. jasmineEnv.addReporter(new jasmine.JUnitXmlReporter('./test-reports/'));
  137. jasmineEnv.addReporter(new jasmine.ConsoleReporter());
  138. jasmineEnv.updateInterval = 0;
  139. } else {
  140. var htmlReporter = new jasmine.HtmlReporter();
  141. jasmineEnv.addReporter(htmlReporter);
  142. jasmineEnv.addReporter(new jasmine.ConsoleReporter());
  143. jasmineEnv.specFilter = function(spec) {
  144. return htmlReporter.specFilter(spec);
  145. };
  146. jasmineEnv.updateInterval = 100;
  147. }
  148. jasmineEnv.execute();
  149. });
  150. });
  151. }
  152. );