def test_check_for_updates_with_modification(self):
        info = dispatchinfo.DispatchInfoExternal(
            application='appid',
            dispatch=[
                dispatchinfo.DispatchEntry(url='*/path', module='bar'),
            ])
        new_info = dispatchinfo.DispatchInfoExternal(
            application='appid',
            dispatch=[
                dispatchinfo.DispatchEntry(url='*/path', module='foo'),
            ])

        os.path.getmtime('/appdir/dispatch.yaml').AndReturn(123.456)
        application_configuration.DispatchConfiguration._parse_configuration(
            '/appdir/dispatch.yaml').AndReturn(info)
        os.path.getmtime('/appdir/dispatch.yaml').AndReturn(124.456)
        application_configuration.DispatchConfiguration._parse_configuration(
            '/appdir/dispatch.yaml').AndReturn(new_info)

        self.mox.ReplayAll()
        config = application_configuration.DispatchConfiguration(
            '/appdir/dispatch.yaml')
        self.assertEqual('bar', config.dispatch[0][1])
        config.check_for_updates()
        self.mox.VerifyAll()
        self.assertEqual('foo', config.dispatch[0][1])
    def test_good_configuration(self):
        info = dispatchinfo.DispatchInfoExternal(
            application='appid',
            dispatch=[
                dispatchinfo.DispatchEntry(url='*/path', module='foo'),
                dispatchinfo.DispatchEntry(url='domain.com/path',
                                           module='bar'),
                dispatchinfo.DispatchEntry(url='*/path/*', module='baz'),
                dispatchinfo.DispatchEntry(url='*.domain.com/path/*',
                                           module='foo'),
            ])

        os.path.getmtime('/appdir/dispatch.yaml').AndReturn(123.456)
        application_configuration.DispatchConfiguration._parse_configuration(
            '/appdir/dispatch.yaml').AndReturn(info)

        self.mox.ReplayAll()
        config = application_configuration.DispatchConfiguration(
            '/appdir/dispatch.yaml')
        self.mox.VerifyAll()

        self.assertEqual(123.456, config._mtime)
        self.assertEqual(2, len(config.dispatch))
        self.assertEqual(vars(dispatchinfo.ParsedURL('*/path')),
                         vars(config.dispatch[0][0]))
        self.assertEqual('foo', config.dispatch[0][1])
        self.assertEqual(vars(dispatchinfo.ParsedURL('*/path/*')),
                         vars(config.dispatch[1][0]))
        self.assertEqual('baz', config.dispatch[1][1])
    def test_check_for_updates_no_modification(self):
        info = dispatchinfo.DispatchInfoExternal(application='appid',
                                                 dispatch=[])

        os.path.getmtime('/appdir/dispatch.yaml').AndReturn(123.456)
        application_configuration.DispatchConfiguration._parse_configuration(
            '/appdir/dispatch.yaml').AndReturn(info)
        os.path.getmtime('/appdir/dispatch.yaml').AndReturn(123.456)

        self.mox.ReplayAll()
        config = application_configuration.DispatchConfiguration(
            '/appdir/dispatch.yaml')
        config.check_for_updates()
        self.mox.VerifyAll()