def test_resubmit_failures_resubmitted(self, p_urlopen):

        def mocked_urlopen(request):
            xml_string = urllib.unquote_plus(request.data)
            if 'GetMediaList' in xml_string:
                xml_output = (
                    '<?xml version="1.0"?>'
                    '<Response><Message>OK</Message>'
                    '<MessageCode>7.4</MessageCode><Success>'
                    '<Media><MediaShortLink>abc123</MediaShortLink>'
                    '<VanityLink/>'
                    '<Notify>[email protected]</Notify>'
                    '<Created>2011-12-25 18:45:56</Created>'
                    '<Duration>350.75</Duration>'
                    '<Updated>2012-11-28 14:05:07</Updated>'
                    '<Status>Error</Status>'
                    '<IsDeleted>false</IsDeleted>'
                    '<IsPrivate>false</IsPrivate>'
                    '<IsPrivateCDN>false</IsPrivateCDN>'
                    '<CDN>AWS</CDN></Media>'
                    '</Success></Response>'
                )
                return StringIO(xml_output.strip())
            if 'AddMedia' in xml_string:
                xml_output = """
                    <?xml version="1.0"?>
                    <Response>
                      <Message>All medias have been added.</Message>
                      <MessageCode>2.1</MessageCode>
                      <BatchID>47520</BatchID>
                      <Success>
                        <MediaShortLink>
                          <SourceFile>http://www.com/file.flv</SourceFile>
                          <ShortLink>xyz123</ShortLink>
                          <MediaID>13969839</MediaID>
                          <QRCode>http://vid.ly/8oxv6x/qrcodeimg</QRCode>
                          <HtmlEmbed>code code</HtmlEmbed>
                          <EmailEmbed>more code code</EmailEmbed>
                        </MediaShortLink>
                      </Success>
                    </Response>
                """
                return StringIO(xml_output.strip())
            raise NotImplementedError(xml_string)

        p_urlopen.side_effect = mocked_urlopen
        resubmitted = vidly_submissions.resubmit_failures(verbose=True)
        # Because there are no known VidlySubmissions so we can't
        # figure out which event it belongs to.
        ok_(not resubmitted)

        event = Event.objects.get(title='Test event')
        submission = VidlySubmission.objects.create(
            event=event,
            url='https://example.com/file.mov',
            hd=True,
            token_protection=False,
            tag='abc123',
            errored=timezone.now() - datetime.timedelta(seconds=1),
        )

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(resubmitted)

        event = Event.objects.get(id=event.id)
        eq_(event.status, Event.STATUS_PROCESSING)
        other_submission, = VidlySubmission.objects.exclude(id=submission.id)
        eq_(other_submission.url, submission.url)
        eq_(other_submission.tag, 'xyz123')
        eq_(other_submission.hd, True)
        eq_(other_submission.token_protection, False)
    def test_resubmit_failures_resubmitted(self, p_urlopen):
        def mocked_urlopen(request):
            xml_string = urllib.unquote_plus(request.data)
            if 'GetMediaList' in xml_string:
                xml_output = ('<?xml version="1.0"?>'
                              '<Response><Message>OK</Message>'
                              '<MessageCode>7.4</MessageCode><Success>'
                              '<Media><MediaShortLink>abc123</MediaShortLink>'
                              '<VanityLink/>'
                              '<Notify>[email protected]</Notify>'
                              '<Created>2011-12-25 18:45:56</Created>'
                              '<Duration>350.75</Duration>'
                              '<Updated>2012-11-28 14:05:07</Updated>'
                              '<Status>Error</Status>'
                              '<IsDeleted>false</IsDeleted>'
                              '<IsPrivate>false</IsPrivate>'
                              '<IsPrivateCDN>false</IsPrivateCDN>'
                              '<CDN>AWS</CDN></Media>'
                              '</Success></Response>')
                return StringIO(xml_output.strip())
            if 'AddMedia' in xml_string:
                xml_output = """
                    <?xml version="1.0"?>
                    <Response>
                      <Message>All medias have been added.</Message>
                      <MessageCode>2.1</MessageCode>
                      <BatchID>47520</BatchID>
                      <Success>
                        <MediaShortLink>
                          <SourceFile>http://www.com/file.flv</SourceFile>
                          <ShortLink>xyz123</ShortLink>
                          <MediaID>13969839</MediaID>
                          <QRCode>http://vid.ly/8oxv6x/qrcodeimg</QRCode>
                          <HtmlEmbed>code code</HtmlEmbed>
                          <EmailEmbed>more code code</EmailEmbed>
                        </MediaShortLink>
                      </Success>
                    </Response>
                """
                return StringIO(xml_output.strip())
            raise NotImplementedError(xml_string)

        p_urlopen.side_effect = mocked_urlopen
        resubmitted = vidly_submissions.resubmit_failures(verbose=True)
        # Because there are no known VidlySubmissions so we can't
        # figure out which event it belongs to.
        ok_(not resubmitted)

        event = Event.objects.get(title='Test event')
        submission = VidlySubmission.objects.create(
            event=event,
            url='https://example.com/file.mov',
            hd=True,
            token_protection=False,
            tag='abc123',
            errored=timezone.now() - datetime.timedelta(seconds=1),
        )

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(resubmitted)

        event = Event.objects.get(id=event.id)
        eq_(event.status, Event.STATUS_PROCESSING)
        other_submission, = VidlySubmission.objects.exclude(id=submission.id)
        eq_(other_submission.url, submission.url)
        eq_(other_submission.tag, 'xyz123')
        eq_(other_submission.hd, True)
        eq_(other_submission.token_protection, False)
    def test_resubmit_failures_nothing_done(self, p_urlopen):

        def mocked_urlopen(request):
            xml_string = urllib.unquote_plus(request.data)
            if 'GetMediaList' in xml_string:
                xml_output = (
                    '<?xml version="1.0"?>'
                    '<Response><Message>OK</Message>'
                    '<MessageCode>7.4</MessageCode><Success>'
                    '<Media><MediaShortLink>abc123</MediaShortLink>'
                    '<VanityLink/>'
                    '<Notify>[email protected]</Notify>'
                    '<Created>2011-12-25 18:45:56</Created>'
                    '<Duration>350.75</Duration>'
                    '<Updated>2012-11-28 14:05:07</Updated>'
                    '<Status>Error</Status>'
                    '<IsDeleted>false</IsDeleted>'
                    '<IsPrivate>false</IsPrivate>'
                    '<IsPrivateCDN>false</IsPrivateCDN>'
                    '<CDN>AWS</CDN></Media>'
                    '</Success></Response>'
                )
                return StringIO(xml_output.strip())
            raise NotImplementedError(xml_string)

        p_urlopen.side_effect = mocked_urlopen
        resubmitted = vidly_submissions.resubmit_failures(verbose=True)
        # Because there are no known VidlySubmissions so we can't
        # figure out which event it belongs to.
        ok_(not resubmitted)

        event = Event.objects.get(title='Test event')
        submission = VidlySubmission.objects.create(
            event=event,
            url='https://example.com/file.mov',
            hd=True,
            token_protection=False,
            tag='abc123',
            errored=timezone.now() - datetime.timedelta(seconds=1),
        )
        new_submission = VidlySubmission.objects.create(
            event=event,
            url=submission.url,
            hd=submission.hd,
            token_protection=submission.token_protection,
            tag='xyz123',
            # Not finished
        )

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(not resubmitted)

        # let's delete that healthy one and put in another failed one
        new_submission.delete()

        VidlySubmission.objects.create(
            event=event,
            url=submission.url,
            hd=submission.hd,
            token_protection=submission.token_protection,
            tag='xyz123',
            errored=timezone.now()
        )

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(not resubmitted)
    def test_resubmit_failures_nothing_done(self, p_urlopen):
        def mocked_urlopen(request):
            xml_string = urllib.unquote_plus(request.data)
            if 'GetMediaList' in xml_string:
                xml_output = ('<?xml version="1.0"?>'
                              '<Response><Message>OK</Message>'
                              '<MessageCode>7.4</MessageCode><Success>'
                              '<Media><MediaShortLink>abc123</MediaShortLink>'
                              '<VanityLink/>'
                              '<Notify>[email protected]</Notify>'
                              '<Created>2011-12-25 18:45:56</Created>'
                              '<Duration>350.75</Duration>'
                              '<Updated>2012-11-28 14:05:07</Updated>'
                              '<Status>Error</Status>'
                              '<IsDeleted>false</IsDeleted>'
                              '<IsPrivate>false</IsPrivate>'
                              '<IsPrivateCDN>false</IsPrivateCDN>'
                              '<CDN>AWS</CDN></Media>'
                              '</Success></Response>')
                return StringIO(xml_output.strip())
            raise NotImplementedError(xml_string)

        p_urlopen.side_effect = mocked_urlopen
        resubmitted = vidly_submissions.resubmit_failures(verbose=True)
        # Because there are no known VidlySubmissions so we can't
        # figure out which event it belongs to.
        ok_(not resubmitted)

        event = Event.objects.get(title='Test event')
        submission = VidlySubmission.objects.create(
            event=event,
            url='https://example.com/file.mov',
            hd=True,
            token_protection=False,
            tag='abc123',
            errored=timezone.now() - datetime.timedelta(seconds=1),
        )
        new_submission = VidlySubmission.objects.create(
            event=event,
            url=submission.url,
            hd=submission.hd,
            token_protection=submission.token_protection,
            tag='xyz123',
            # Not finished
        )

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(not resubmitted)

        # let's delete that healthy one and put in another failed one
        new_submission.delete()

        VidlySubmission.objects.create(
            event=event,
            url=submission.url,
            hd=submission.hd,
            token_protection=submission.token_protection,
            tag='xyz123',
            errored=timezone.now())

        resubmitted = vidly_submissions.resubmit_failures()
        # Because there is another submission that is more recent
        # than the failed one.
        ok_(not resubmitted)