'Test the server\'s handling of requests for specific body sections.'

def testFetchBodyParts(self):

    self.function = self.client.fetchSpecific
    self.messages = '1'
    outerBody = ''
    innerBody1 = 'Contained    body    message    text.        Squarge.'
    innerBody2 = 'Secondary    <i>message</i>    text    of    squarge    body.'
    headers = OrderedDict()
    headers['from'] = 'sender@host'
    headers['to'] = 'recipient@domain'
    headers['subject'] = 'booga    booga    boo'
    headers['content-type'] = 'multipart/alternative;    boundary="xyz"'
    innerHeaders = OrderedDict()
    innerHeaders['subject'] = 'this    is    subject    text'
    innerHeaders['content-type'] = 'text/plain'
    innerHeaders2 = OrderedDict()
    innerHeaders2['subject'] = '<b>this    is    subject</b>'
    innerHeaders2['content-type'] = 'text/html'
    self.msgObjs = [FakeyMessage(headers, (), None, outerBody, 123, [FakeyMessage(innerHeaders, (), None, innerBody1, None, None), FakeyMessage(innerHeaders2, (), None, innerBody2, None, None)])]
    self.expected = {0: [['BODY', ['1'], 'Contained    body    message    text.        Squarge.']]}
    def result(R):
        self.result = R
    self.connected.addCallback((lambda _: self.function(self.messages, headerNumber=1)))
    self.connected.addCallback(result)
    self.connected.addCallback(self._cbStopClient)
    self.connected.addErrback(self._ebGeneral)
    d = loopback.loopbackTCP(self.server, self.client, noisy=False)
    d.addCallback((lambda ign: self.assertEqual(self.result, self.expected)))
    return d
