Code coverage report for lib/parse-client-result.js

Statements: 100% (18 / 18)      Branches: 100% (13 / 13)      Functions: 100% (1 / 1)      Lines: 100% (18 / 18)      Ignored: none     

All files » lib/ » parse-client-result.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47    1   1 11 3 1       2         8 8 2 1         1         6 6 4 4       2 1         1        
'use strict';
 
module.exports = parseClientResult;
 
function parseClientResult(err, lastValidConfig, result) {
  if(err) {
    if(lastValidConfig) 
      return {
        errors: [new Error('Error encounted while getting config from etcd.  Returned last valid config.'), err],
        config: lastValidConfig
      };
    return {
      errors: [new Error('Error encountered while getting config from etcd.  No valid config found, returned error'), err]
    };
  }
    
  var value = result && result.node && result.node.value;
  if(!value) {
    if(lastValidConfig) {
      return {
        errors: [new Error('Value not found in etcd results.  Returned last valid config.')],
        config: lastValidConfig
      };
    }
    return {
      errors: [new Error('Value not found in etcd results.  No valid config found, returned error.')]
    };
  }
    
  try {
    var deserializedValue = JSON.parse(value);
    lastValidConfig = deserializedValue;
    return {
      config: deserializedValue
    };
  } catch (e) {
    if(lastValidConfig) {
      return {
        errors: [new Error('Flipr could not parse value as JSON.  Returned last valid config.'), e],
        config: lastValidConfig
      };
    }
    return {
      errors: [new Error('Flipr could not parse value as JSON.  No valid config found, returned error.'), e]
    };
  }
}