96 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/xml"
 | 
						|
	"reflect"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestUnmarhshalChallengeRespones(t *testing.T) {
 | 
						|
	var testXml string = `
 | 
						|
<?xml version="1.0" encoding="UTF-8"?>
 | 
						|
<resp>
 | 
						|
  <action>sslvpn_logon</action>
 | 
						|
  <logon_status>4</logon_status>
 | 
						|
  <auth-domain-list>
 | 
						|
    <auth-domain>
 | 
						|
      <name>RADIUS</name>
 | 
						|
    </auth-domain>
 | 
						|
  </auth-domain-list>
 | 
						|
  <logon_id>441</logon_id>
 | 
						|
  <chaStr>Enter Your 6 Digit Passcode </chaStr>
 | 
						|
</resp>`
 | 
						|
 | 
						|
	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 = `
 | 
						|
<?xml version="1.0" encoding="UTF-8"?>
 | 
						|
<resp>
 | 
						|
  <action>sslvpn_logon</action>
 | 
						|
  <logon_status>2</logon_status>
 | 
						|
  <auth-domain-list>
 | 
						|
    <auth-domain>
 | 
						|
      <name>RADIUS</name>
 | 
						|
    </auth-domain>
 | 
						|
  </auth-domain-list>
 | 
						|
  <errStr>501</errStr>
 | 
						|
</resp>`
 | 
						|
 | 
						|
	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 = `
 | 
						|
<?xml version="1.0" encoding="UTF-8"?>
 | 
						|
<resp>
 | 
						|
  <action>sslvpn_logon</action>
 | 
						|
  <logon_status>1</logon_status>
 | 
						|
  <auth-domain-list>
 | 
						|
    <auth-domain>
 | 
						|
      <name>RADIUS</name>
 | 
						|
    </auth-domain>
 | 
						|
  </auth-domain-list>
 | 
						|
</resp>
 | 
						|
`
 | 
						|
	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()
 | 
						|
	}
 | 
						|
}
 |