var fs = require("fs")
var ini = require("ini")
var test = require("tap").test
var npmconf = require("../../lib/config/core.js")
var common = require("./00-config-setup.js")

var expectConf = [
  "globalconfig = " + common.globalconfig,
  "email = i@izs.me",
  "env-thing = asdf",
  "init.author.name = Isaac Z. Schlueter",
  "init.author.email = i@izs.me",
  "init.author.url = http://blog.izs.me/",
  "init.version = 1.2.3",
  "proprietary-attribs = false",
  "npm:publishtest = true",
  "_npmjs.org:couch = https://admin:password@localhost:5984/registry",
  "npm-www:nocache = 1",
  "sign-git-tag = false",
  "message = v%s",
  "strict-ssl = false",
  "_auth = dXNlcm5hbWU6cGFzc3dvcmQ=",
  "",
  "[_token]",
  "AuthSession = yabba-dabba-doodle",
  "version = 1",
  "expires = 1345001053415",
  "path = /",
  "httponly = true",
  ""
].join("\n")

var expectFile = [
  "globalconfig = " + common.globalconfig,
  "email = i@izs.me",
  "env-thing = asdf",
  "init.author.name = Isaac Z. Schlueter",
  "init.author.email = i@izs.me",
  "init.author.url = http://blog.izs.me/",
  "init.version = 1.2.3",
  "proprietary-attribs = false",
  "npm:publishtest = true",
  "_npmjs.org:couch = https://admin:password@localhost:5984/registry",
  "npm-www:nocache = 1",
  "sign-git-tag = false",
  "message = v%s",
  "strict-ssl = false",
  "_auth = dXNlcm5hbWU6cGFzc3dvcmQ=",
  "",
  "[_token]",
  "AuthSession = yabba-dabba-doodle",
  "version = 1",
  "expires = 1345001053415",
  "path = /",
  "httponly = true",
  ""
].join("\n")

test("saving configs", function (t) {
  npmconf.load(function (er, conf) {
    if (er)
      throw er
    conf.set("sign-git-tag", false, "user")
    conf.del("nodedir")
    conf.del("tmp")
    var foundConf = ini.stringify(conf.sources.user.data)
    t.same(ini.parse(foundConf), ini.parse(expectConf))
    fs.unlinkSync(common.userconfig)
    conf.save("user", function (er) {
      if (er)
        throw er
      var uc = fs.readFileSync(conf.get("userconfig"), "utf8")
      t.same(ini.parse(uc), ini.parse(expectFile))
      t.end()
    })
  })
})

test("setting prefix", function (t) {
  npmconf.load(function (er, conf) {
    if (er)
      throw er

    conf.prefix = "newvalue"
    t.same(conf.prefix, "newvalue")
    t.end()
  })
})
