1 | _ = require 'underscore'
|
2 | Browser = require 'zombie'
|
3 | app = require '../example'
|
4 | artsyXapp = require 'artsy-xapp'
|
5 | { ARTSY_EMAIL, ARTSY_PASSWORD, TWITTER_EMAIL, TWITTER_PASSWORD,
|
6 | FACEBOOK_EMAIL, FACEBOOK_PASSWORD, ARTSY_URL, ARTSY_ID,
|
7 | ARTSY_SECRET } = require '../config'
|
8 |
|
9 | describe 'Artsy Passport', ->
|
10 |
|
11 | before (done) ->
|
12 | artsyXapp.on('error', done).init
|
13 | url: ARTSY_URL
|
14 | id: ARTSY_ID
|
15 | secret: ARTSY_SECRET
|
16 | , -> app.listen 5000, done
|
17 |
|
18 | it 'can sign up with email and password', (done) ->
|
19 | Browser.visit 'http://localhost:5000', (e, browser) ->
|
20 | browser
|
21 | .fill('#signup [name="name"]', 'Foobar')
|
22 | .fill('#signup [name="email"]', "ap+#{_.random(0, 1000)}@artsypassport.com")
|
23 | .fill('#signup [name="password"]', 'moofooboo')
|
24 | .pressButton "Signup", ->
|
25 | browser.html().should.containEql 'Personalize!'
|
26 | done()
|
27 |
|
28 | it 'can log in and log out with email and password', (done) ->
|
29 | Browser.visit 'http://localhost:5000', (e, browser) ->
|
30 | browser
|
31 | .fill('#login [name=email]', ARTSY_EMAIL)
|
32 | .fill('#login [name=password]', ARTSY_PASSWORD)
|
33 | .pressButton "#login [type=submit]", ->
|
34 | browser.html().should.containEql '<h1>Hello'
|
35 | browser.html().should.containEql ARTSY_EMAIL
|
36 | browser
|
37 | .clickLink "Logout", ->
|
38 | browser.reload ->
|
39 | browser.html().should.containEql '<h1>Login'
|
40 | done()
|
41 |
|
42 | it 'cant log in without a csrf', (done) ->
|
43 | Browser.visit 'http://localhost:5000/nocsrf', (e, browser) ->
|
44 | browser
|
45 | .fill('#login [name=email]', ARTSY_EMAIL)
|
46 | .fill('#login [name=password]', ARTSY_PASSWORD)
|
47 | .pressButton "#login [type=submit]", ->
|
48 | browser.html().should.containEql 'ForbiddenError: invalid csrf token'
|
49 | done()
|
50 |
|
51 | it 'can log in with facebook', (done) ->
|
52 | Browser.visit 'http://localhost:5000', (e, browser) ->
|
53 | browser.clickLink "Login via Facebook", ->
|
54 | browser.location.href.should.containEql 'facebook.com'
|
55 | browser
|
56 | .fill('email', FACEBOOK_EMAIL)
|
57 | .fill('pass', FACEBOOK_PASSWORD)
|
58 | .pressButton 'Log In', ->
|
59 | console.log browser.html()
|
60 | done()
|
61 |
|
62 | it 'can log in with twitter', (done) ->
|
63 | Browser.visit 'http://localhost:5000', (e, browser) ->
|
64 | browser.clickLink "Login via Twitter", ->
|
65 | browser.location.href.should.containEql 'twitter.com'
|
66 | browser
|
67 | .fill('session[username_or_email]', TWITTER_EMAIL)
|
68 | .fill('session[password]', TWITTER_PASSWORD)
|
69 | .pressButton 'Authorize app', ->
|
70 | console.log browser.html()
|
71 | done()
|