00001 <?php
00002
00003 lt_include( PLOG_CLASS_PATH."class/net/http/httpclient.class.php" );
00004
00054 class UIScriptRunner
00055 {
00056 var $c;
00057 var $failedStep;
00058 var $failedStepErrorMessage;
00059 var $debug;
00060
00061 function UIScriptRunner()
00062 {
00063 $this->c = new HttpClient();
00064
00065 $this->debug = false;
00066 }
00067
00071 function run( $script )
00072 {
00073 $result = false;
00074 foreach( $script as $stepName => $step ) {
00075 $result = $this->_runStep( $step );
00076 if( !$result ) {
00077 $this->failedStep = "$stepName";
00078 $this->failedStepErrorMessage = $step["message"];
00079 break;
00080 }
00081 }
00082
00083 return( $result );
00084 }
00085
00092 function getFailedStep()
00093 {
00094 return( $this->failedStep );
00095 }
00096
00103 function getFailedStepErrorMessage()
00104 {
00105 return( $this->failedStepErrorMessage );
00106 }
00107
00111 function _runStep( $step )
00112 {
00113
00114 $url = $step["url"];
00115
00116
00117 $type = $step["type"];
00118 if( $type == "get" ) {
00119 if( isset( $step["params"] )) {
00120 $params = $step["params"];
00121 $query = "";
00122 foreach( $params as $var => $value ) {
00123 $query .= $var."=".urlencode( $value )."&";
00124 }
00125 $query = $url."?".$query;
00126 }
00127 else {
00128 $query = $url;
00129 }
00130
00131
00132 $result = $this->c->fetch( $query );
00133 }
00134 else {
00135 $result = $this->c->submit( $url, $step["params"] );
00136 }
00137
00138
00139
00140 $this->c->setcookies();
00141
00142
00143 if( !$result )
00144 return false;
00145
00146 if( $this->debug ) {
00147 print($this->c->results);
00148 print("<hr/>");
00149 }
00150
00151
00152 if( isset( $step["httpcode"] )) {
00153 if( $this->c->response_code != $step["httpcode"] )
00154 return false;
00155 }
00156
00157
00158 if( isset( $step["expected"] )) {
00159 $expected = $step["expected"];
00160 if( is_array( $expected )) {
00161 foreach( $expected as $string ) {
00162 if( !strstr( $this->c->results, $string ))
00163 return false;
00164 }
00165 }
00166 else {
00167 if( !strstr( $this->c->results, $expected ))
00168 return false;
00169 }
00170 }
00171
00172
00173 if( isset( $step["notexpected"] )) {
00174 $expected = $step["notexpected"];
00175 if( is_array( $expected )) {
00176 foreach( $expected as $string ) {
00177 if( strstr( $this->c->results, $string ))
00178 return false;
00179 }
00180 }
00181 else {
00182 if( strstr( $this->c->results, $expected ))
00183 return false;
00184 }
00185 }
00186
00187
00188 return true;
00189 }
00190 }
00191 ?>