var util = require('../lib/test-utils.js');
var expect = require('chai').expect;

describe('fs.chmod, fs.fchmod', function() {
  beforeEach(util.setup);
  afterEach(util.cleanup);

  it('should be functions', function() {
    var fs = util.fs();
    expect(typeof fs.chmod).to.equal('function');
    expect(typeof fs.fchmod).to.equal('function');
  });

  it('should automatically set mode=755 for a directory', function(done) {
    var fs = util.fs();

    fs.mkdir('/dir', function(err) {
      if(err) throw err;

      fs.stat('/dir', function(err, stats) {
        if(err) throw err;
        expect(stats.mode & 0o755).to.equal(0o755);
        done();
      });
    });
  });

  it('should automatically set mode=644 for a file', function(done) {
    var fs = util.fs();

    fs.open('/file', 'w', function(err, fd) {
      if(err) throw err;

      fs.fstat(fd, function(err, stats) {
        if(err) throw err;
        expect(stats.mode & 0o644).to.equal(0o644);
        fs.close(fd, done);
      });
    });
  });

  it('should be a valid mode value to set permissions', function(done){
    var fs = util.fs();

    fs.mkdir('/file',function(err) {
      if(err) throw err;
      
      fs.chmod('file', 1000, function(err) {
        expect(err).to.exist;
        expect(err.code).to.equal('EINVAL');
        done();
      });
    });
  });

  it('should allow for updating mode of a given file', function(done) {
    var fs = util.fs();

    fs.open('/file', 'w', function(err, fd) {
      if(err) throw err;

      fs.fchmod(fd, 0o777, function(err) {
        if(err) throw err;

        fs.fstat(fd, function(err, stats) {
          if(err) throw err;
          expect(stats.mode & 0o777).to.equal(0o777);

          fs.close(fd, function(err) {
            if(err) throw err;
                       
            fs.chmod('/file', 0o444, function(err) {
              if(err) throw err;
      
              fs.stat('/file', function(err, stats) {
                if(err) throw err;

                expect(stats.mode & 0o444).to.equal(0o444);
                done();
              });
            });
          });
        });
      });
    });
  });
});

@@ -1134,16 +1134,17 @@
 '/file',
+ 
 function

Add chmod --test for chmode mode value