package main
import (
	"encoding/xml"
	"reflect"
	"testing"
)
func TestUnmarshalChallengeRespones(t *testing.T) {
	var testXml string = `
  sslvpn_logon
  4
  
    
      RADIUS
    
  
  441
  Enter Your 6 Digit Passcode 
`
	var r Resp
	xml.Unmarshal([]byte(testXml), &r)
	expected := Resp{
		Action:      "sslvpn_logon",
		LogonStatus: 4,
		LogonId:     441,
		Challenge:   "Enter Your 6 Digit Passcode ",
	}
	assertEqual(t, expected, r)
}
func TestUnmarshalLoginError(t *testing.T) {
	var testXml string = `
  sslvpn_logon
  2
  
    
      RADIUS
    
  
  501
`
	var r Resp
	xml.Unmarshal([]byte(testXml), &r)
	expected := Resp{
		Action:      "sslvpn_logon",
		LogonStatus: 2,
		Error:       "501",
	}
	assertEqual(t, expected, r)
}
func TestUnmarshalLoginSuccess(t *testing.T) {
	var testXml string = `
  sslvpn_logon
  1
  
    
      RADIUS
    
  
`
	var r Resp
	xml.Unmarshal([]byte(testXml), &r)
	expected := Resp{
		Action:      "sslvpn_logon",
		LogonStatus: 1,
	}
	assertEqual(t, expected, r)
}
func assertEqual(t *testing.T, expected interface{}, result interface{}) {
	if !reflect.DeepEqual(expected, result) {
		t.Errorf(
			"Unmarshaled values did not match.\nExpected: %v\nResult: %v\n",
			expected, result,
		)
		t.Fail()
	}
}