77
88class ParserTest extends \PHPUnit_Framework_TestCase
99{
10+ public function setUp ()
11+ {
12+ $ this ->parser = new Parser ();
13+ }
14+
1015 /**
1116 * @dataProvider provideConvertTcpDumpToBinary
1217 */
@@ -34,10 +39,7 @@ public function testParseRequest()
3439
3540 $ data = $ this ->convertTcpDumpToBinary ($ data );
3641
37- $ request = new Message ();
38-
39- $ parser = new Parser ();
40- $ parser ->parseChunk ($ data , $ request );
42+ $ request = $ this ->parser ->parseMessage ($ data );
4143
4244 $ header = $ request ->header ;
4345 $ this ->assertSame (0x7262 , $ header ->get ('id ' ));
@@ -74,10 +76,7 @@ public function testParseResponse()
7476
7577 $ data = $ this ->convertTcpDumpToBinary ($ data );
7678
77- $ response = new Message ();
78-
79- $ parser = new Parser ();
80- $ parser ->parseChunk ($ data , $ response );
79+ $ response = $ this ->parser ->parseMessage ($ data );
8180
8281 $ header = $ response ->header ;
8382 $ this ->assertSame (0x7262 , $ header ->get ('id ' ));
@@ -121,8 +120,7 @@ public function testParseQuestionWithTwoQuestions()
121120 $ request ->header ->set ('qdCount ' , 2 );
122121 $ request ->data = $ data ;
123122
124- $ parser = new Parser ();
125- $ parser ->parseQuestion ($ request );
123+ $ this ->parser ->parseQuestion ($ request );
126124
127125 $ this ->assertCount (2 , $ request ->questions );
128126 $ this ->assertSame ('igor.io ' , $ request ->questions [0 ]['name ' ]);
@@ -148,8 +146,7 @@ public function testParseAnswerWithInlineData()
148146 $ response ->header ->set ('anCount ' , 1 );
149147 $ response ->data = $ data ;
150148
151- $ parser = new Parser ();
152- $ parser ->parseAnswer ($ response );
149+ $ this ->parser ->parseAnswer ($ response );
153150
154151 $ this ->assertCount (1 , $ response ->answers );
155152 $ this ->assertSame ('igor.io ' , $ response ->answers [0 ]->name );
@@ -174,10 +171,7 @@ public function testParseResponseWithCnameAndOffsetPointers()
174171
175172 $ data = $ this ->convertTcpDumpToBinary ($ data );
176173
177- $ response = new Message ();
178-
179- $ parser = new Parser ();
180- $ parser ->parseChunk ($ data , $ response );
174+ $ response = $ this ->parser ->parseMessage ($ data );
181175
182176 $ this ->assertCount (1 , $ response ->questions );
183177 $ this ->assertSame ('mail.google.com ' , $ response ->questions [0 ]['name ' ]);
@@ -212,10 +206,7 @@ public function testParseResponseWithTwoAnswers()
212206
213207 $ data = $ this ->convertTcpDumpToBinary ($ data );
214208
215- $ response = new Message ();
216-
217- $ parser = new Parser ();
218- $ parser ->parseChunk ($ data , $ response );
209+ $ response = $ this ->parser ->parseMessage ($ data );
219210
220211 $ this ->assertCount (1 , $ response ->questions );
221212 $ this ->assertSame ('io.whois-servers.net ' , $ response ->questions [0 ]['name ' ]);
@@ -237,6 +228,21 @@ public function testParseResponseWithTwoAnswers()
237228 $ this ->assertSame ('193.223.78.152 ' , $ response ->answers [1 ]->data );
238229 }
239230
231+ /**
232+ * @expectedException InvalidArgumentException
233+ */
234+ public function testParseIncomplete ()
235+ {
236+ $ data = "" ;
237+ $ data .= "72 62 01 00 00 01 00 00 00 00 00 00 " ; // header
238+ $ data .= "04 69 67 6f 72 02 69 6f 00 " ; // question: igor.io
239+ //$data .= "00 01 00 01"; // question: type A, class IN
240+
241+ $ data = $ this ->convertTcpDumpToBinary ($ data );
242+
243+ $ this ->parser ->parseMessage ($ data );
244+ }
245+
240246 private function convertTcpDumpToBinary ($ input )
241247 {
242248 // sudo ngrep -d en1 -x port 53
0 commit comments