var zlib = require('zlib')
var test = require('tap').test

var server = require('./lib/server.js')
var common = require('./lib/common.js')
var client = common.freshClient({
  retry: {
    count: 1,
    minTimeout: 10,
    maxTimeout: 100
  }
})

var TEST_URL = common.registry + '/some-package-gzip/1.2.3'

var pkg = {
  _id: 'some-package-gzip@1.2.3',
  name: 'some-package-gzip',
  version: '1.2.3'
}

zlib.gzip(JSON.stringify(pkg), function (err, pkgGzip) {
  test('request gzip package content', function (t) {
    t.ifError(err, 'example package compressed')

    server.expect('GET', '/some-package-gzip/1.2.3', function (req, res) {
      res.statusCode = 200
      res.setHeader('Content-Encoding', 'gzip')
      res.setHeader('Content-Type', 'application/json')
      res.end(pkgGzip)
    })

    client.get(TEST_URL, {}, function (er, data) {
      if (er) throw er
      t.deepEqual(data, pkg, 'some-package-gzip version 1.2.3')
      t.end()
    })
  })

  test('request wrong gzip package content', function (t) {
    // will retry 3 times
    for (var i = 0; i < 3; i++) {
      server.expect('GET', '/some-package-gzip/1.2.3', function (req, res) {
        res.statusCode = 200
        res.setHeader('Content-Encoding', 'gzip')
        res.setHeader('Content-Type', 'application/json')
        res.end(new Buffer('wrong gzip content'))
      })
    }

    client.get(TEST_URL, {}, function (er) {
      t.ok(er, 'ungzip error')
      t.end()
    })
  })

  test('cleanup', function (t) {
    server.close()
    t.end()
  })
})
