1--TEST-- 2RADIUS: RFC 3576 disconnect message support 3--INI-- 4display_errors=1 5error_reporting=22527 6--SKIPIF-- 7<?php 8include dirname(__FILE__).'/server/fake_server.php'; 9 10if (\RADIUS\FakeServer\FakeServer::skip()) { 11 die('SKIP: pcntl, radius and sockets extensions required'); 12} 13?> 14--FILE-- 15<?php 16include dirname(__FILE__).'/server/fake_server.php'; 17 18$server = new \RADIUS\FakeServer\FakeServer; 19$res = $server->getAuthResource(); 20 21$request = \RADIUS\FakeServer\Request::expect(RADIUS_ACCESS_REQUEST, array( 22 \RADIUS\FakeServer\Attribute\expect(RADIUS_USER_NAME, 'foo'), 23)); 24 25$response = new \RADIUS\FakeServer\RadiusResponse; 26$response->code = RADIUS_DISCONNECT_REQUEST; 27$response->attributes = array( 28 \RADIUS\FakeServer\Attribute\expect(RADIUS_NAS_IDENTIFIER, 'NAS'), 29); 30 31$server->addTransaction($request, $response); 32 33$request = \RADIUS\FakeServer\Request::expect(RADIUS_DISCONNECT_NAK, array( 34 \RADIUS\FakeServer\Attribute\expect(RADIUS_ERROR_CAUSE, pack('N', RADIUS_ERROR_CAUSE_MISSING_ATTRIBUTE)), 35)); 36 37$server->addTransaction($request, $response); 38 39$request = \RADIUS\FakeServer\Request::expect(RADIUS_DISCONNECT_ACK, array( 40)); 41 42$response = new \RADIUS\FakeServer\RadiusResponse; 43$response->code = RADIUS_DISCONNECT_ACK; 44 45$server->addTransaction($request, $response); 46 47$server->handle(); 48 49radius_create_request($res, RADIUS_ACCESS_REQUEST); 50radius_put_string($res, RADIUS_USER_NAME, 'foo'); 51radius_put_string($res, RADIUS_USER_PASSWORD, 'bar'); 52 53var_dump(radius_send_request($res) == RADIUS_DISCONNECT_REQUEST); 54var_dump(radius_get_attr($res)); 55 56radius_create_request($res, RADIUS_DISCONNECT_NAK); 57radius_put_int($res, RADIUS_ERROR_CAUSE, RADIUS_ERROR_CAUSE_MISSING_ATTRIBUTE); 58 59var_dump(radius_send_request($res) == RADIUS_DISCONNECT_REQUEST); 60var_dump(radius_get_attr($res)); 61 62radius_create_request($res, RADIUS_DISCONNECT_ACK); 63radius_send_request($res); 64 65var_dump($server->wait()); 66?> 67--EXPECTF-- 68bool(true) 69array(2) { 70 ["attr"]=> 71 int(32) 72 ["data"]=> 73 string(3) "NAS" 74} 75bool(true) 76array(2) { 77 ["attr"]=> 78 int(32) 79 ["data"]=> 80 string(3) "NAS" 81} 82int(0) 83