test.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /* global browser, expect */
  2. const testURL = 'http://localhost:4567/providers'
  3. describe('File upload with Providers', () => {
  4. beforeEach(() => {
  5. browser.url(testURL)
  6. })
  7. // not using arrow functions as cb so to keep mocha in the 'this' context
  8. it('should upload a file completely with Google Drive', function () {
  9. if (process.env.UPPY_GOOGLE_EMAIL || process.env.UPPY_GOOGLE_EMAIL === undefined) {
  10. console.log('skipping Google Drive integration test')
  11. return this.skip()
  12. }
  13. // ensure session is cleared
  14. browser.reload()
  15. startUploadTest(browser, 'GoogleDrive')
  16. signIntoGoogle(browser)
  17. finishUploadTest(browser)
  18. })
  19. // not using arrow functions as cb so to keep mocha in the 'this' context
  20. it('should upload a file completely with Instagram', function () {
  21. if (process.env.UPPY_INSTAGRAM_USERNAME || process.env.UPPY_INSTAGRAM_USERNAME === undefined) {
  22. console.log('skipping Instagram integration test')
  23. return this.skip()
  24. }
  25. // ensure session is cleared
  26. browser.reload()
  27. startUploadTest(browser, 'Instagram')
  28. // do oauth authentication
  29. browser.waitForExist('input[name=username]')
  30. browser.setValue('input[name=username]', process.env.UPPY_INSTAGRAM_USERNAME)
  31. browser.setValue('input[name=password]', process.env.UPPY_INSTAGRAM_PASSWORD)
  32. browser.click('form button')
  33. finishUploadTest(browser)
  34. })
  35. // not using arrow functions as cb so to keep mocha in the 'this' context
  36. it('should upload a file completely with Dropbox', function () {
  37. if (process.env.UPPY_GOOGLE_EMAIL || process.env.UPPY_GOOGLE_EMAIL === undefined) {
  38. console.log('skipping Dropbox integration test')
  39. return this.skip()
  40. }
  41. // ensure session is cleared
  42. browser.reload()
  43. startUploadTest(browser, 'Dropbox')
  44. // do oauth authentication
  45. browser.waitForVisible('button.auth-google')
  46. browser.click('button.auth-google')
  47. // we login with google to avoid captcha
  48. signIntoGoogle(browser)
  49. // finish oauth
  50. browser.waitForVisible('button[name=allow_access]')
  51. browser.click('button[name=allow_access]')
  52. finishUploadTest(browser)
  53. })
  54. })
  55. const startUploadTest = (browser, providerName) => {
  56. browser.click(`.uppy-DashboardTab-btn[aria-controls=uppy-DashboardContent-panel--${providerName}]`)
  57. browser.waitForVisible('.uppy-Provider-authBtn', 3000)
  58. browser.click('.uppy-Provider-authBtn')
  59. // move control to instagram auth tab
  60. browser.switchTab(browser.getTabIds()[1])
  61. }
  62. const finishUploadTest = (browser) => {
  63. // switch back to uppy tab
  64. browser.switchTab(browser.getTabIds()[0])
  65. browser.waitForVisible('.uppy-ProviderBrowser-list li.uppy-ProviderBrowserItem')
  66. browser.click('.uppy-ProviderBrowser-list li.uppy-ProviderBrowserItem:last-child button')
  67. browser.waitForVisible('.uppy-ProviderBrowser-footer .uppy-u-reset.uppy-c-btn.uppy-c-btn-primary')
  68. browser.click('.uppy-ProviderBrowser-footer .uppy-u-reset.uppy-c-btn.uppy-c-btn-primary')
  69. browser.waitForVisible('.uppy-StatusBar-content[title="Complete"]', 20000)
  70. }
  71. const signIntoGoogle = (browser) => {
  72. browser.waitForExist('#identifierId')
  73. browser.setValue('#identifierId', process.env.UPPY_GOOGLE_EMAIL)
  74. browser.click('#identifierNext')
  75. browser.waitForVisible('input[name=password]')
  76. browser.setValue('input[name=password]', process.env.UPPY_GOOGLE_PASSWORD)
  77. browser.click('#passwordNext')
  78. // if suspicious login was detected, the window will remain unclosed
  79. // so we have to confirm the recovery email or phone no
  80. if (browser.getTabIds().length > 1) {
  81. // confirm recovery email option
  82. if (browser.isExisting('li div[data-challengetype="12"]')) {
  83. browser.click('li div[data-challengetype="12"]')
  84. browser.waitForVisible('input[name=knowledgePreregisteredEmailResponse]')
  85. browser.setValue('input[name=knowledgePreregisteredEmailResponse]', process.env.UPPY_GOOGLE_RECOVERY_EMAIL)
  86. // confirm recovery phone number
  87. } else if (browser.isExisting('#countryList')) {
  88. browser.click('div#countryList')
  89. browser.click('div[data-value=nl]')
  90. browser.setValue('input#phoneNumberId', process.env.UPPY_GOOGLE_PHONE_NO)
  91. }
  92. browser.click('#next[role=button]')
  93. }
  94. }