var logging = require('../../../helper/logging');

module.exports.tests = {};

module.exports.tests.dnt = function(test) {
  test('DNT=1 triggers DNT detection', function(t) {
    var req = {
      headers: {
        DNT: '1'
      }
    };

    t.ok(logging.isDNT(req), 'DNT detected');
    t.end();
  });

  test('DNT=0 triggers DNT detection', function(t) {
    // because this is common apparently, although the spec says to do the opposite
    // see https://en.wikipedia.org/wiki/Do_Not_Track
    var req = {
      headers: {
        DNT: '0'
      }
    };

    t.ok(logging.isDNT(req), 'DNT detected');
    t.end();
  });

  test('do_not_track header triggers DNT detection', function(t) {
    // according to @riordan, some people use this too
    var req = {
      headers: {
        do_not_track: '1'
      }
    };

    t.ok(logging.isDNT(req), 'DNT detected');
    t.end();
  });

  test('no DNT or do_not_track header does not trigger DNT detection', function(t) {
    var req = {
      headers: {
        'Accept-Charset': 'utf-8'
      }
    };

    t.notOk(logging.isDNT(req), 'DNT detected');
    t.end();
  });
};

module.exports.tests.field_removal = function(test) {
  test('removes multiple fields that may have sensitive information', function(t) {
    var query = {
      text: 'possibly sensitive text',
      'point.lat': 'possibly sensitive location info'
    };

    var cleaned_query = logging.removeFields(query);

    var expected = {
      text: '[removed]',
      'point.lat': '[removed]'
    };

    t.deepEquals(cleaned_query, expected, 'multiple sensitive fields removed');
    t.end();
  });

  test('non-sensitive fields untouched', function(t) {
    var query = {
      sources: 'wof,gn'
    };

    var cleaned_query = logging.removeFields(query);

    var expected = {
      sources: 'wof,gn'
    };

    t.deepEquals(cleaned_query, expected, 'non-sensitive fields are not touched');
    t.end();
  });
};

module.exports.all = function (tape, common) {
  function test(name, testFunction) {
    return tape('logging: ' + name, testFunction);
  }

  for( var testCase in module.exports.tests ){
    module.exports.tests[testCase](test, common);
  }
};