aboutsummaryrefslogblamecommitdiffstats
path: root/test/servers/resources_test.js
blob: 840b17c50ffeb942dbd9d1408b6aaa48d3c7bed7 (plain) (tree)






































































                                                                 
var debug = require('debug')('caldav:test:detailed');
var helper = require('./helper.js');
var Caldav = require('../../lib/caldav');
var assert = require('assert');

suite('resources', function() {

  suiteSetup(function(done) {
    if (!testEnv.homeUrl) {
      helper.findEnvHome(done);
    } else {
      done();
    }
  });

  function checkCalendarCap(url, calendar) {

    function cap(field) {
      var value = calendar[field];

      if (!value && value != 0) {
        helper.log(url + ' missing ' + field, false, 'cap');
      } else {
        helper.log(url + ' ' + field, value, 'cap');
      }
    }

    cap('color');
    cap('ctag');
    cap('privilegeSet');
    cap('name');
    cap('description');
  }

  test('find calendars', function(done) {
    var con = helper.connection();
    var resources = new Caldav.Request.Resources(con, {
      url: testEnv.homeUrl
    });

    resources.addResource('calendar', Caldav.Resources.Calendar);
    resources.prop(['ical', 'calendar-color']);
    resources.prop(['caldav', 'calendar-description']);
    resources.prop(['caldav', 'calendar-timezone']);
    resources.prop('displayname');
    resources.prop('resourcetype');
    resources.prop('getlastmodified');
    resources.prop('current-user-privilege-set');
    resources.prop(['calserver', 'getctag']);

    // found calendar home find calendars.
    resources.send(function(err, data) {
      helper.log('calendars:', data, 'detailed');

      if (!data || !data.calendar) {
        console.log('no calendars - fatal exiting.');
        helper.log('no calendars', err, 'fatal');
        process.exit(0);
      }

      helper.log('found calendars:', Object.keys(data.calendar));

      for (var id in data.calendar) {
        checkCalendarCap(id, data.calendar[id]);
      }

      done();
    });
  });

});