{Checkpoint} = require '../auth/checkpoint'

# We have to provide a fake User class to allow
# or else it somehow screws with the rest of our 
# tests.
class User
  constructor: (@roles) ->

class Post

describe 'Checkpoint', ->

  permissions = {guest: {'Post': ['read']}}

  it 'should check a users permission to act on a class', (done) ->
    user = new User roles: ['guest']
    Checkpoint.check(permissions, user, Post, 'read').should.be.true
    Checkpoint.check(permissions, user, Post, 'update').should.be.false
    done()

  it 'should check a users permission to act on an instance by ownership'
  it 'should check a users permission to act on an instance by ACL'
  it 'should check a users permission to act on an instance by group membership'

  it 'should allow a user to check for permission', (done) ->
    Checkpoint.allow User, permissions
    user = new User roles: ['guest']
    user.can('read', Post).should.be.true
    user.can('update', Post).should.be.false
    done()
