示例#1
0
  def testAuthFail(self):
    mock_exc = glue.util.ExecError(returncode=self.RETURN_AUTH_FAIL)
    glue.util.GetPlistFromExec(
        mox.In(self.PATH), stdin=mox.StrContains(self.mock_pass)).AndRaise(
            mock_exc)

    self.mox.ReplayAll()
    self.assertRaises(
        glue.InputError,
        glue.ApplyEncryption,
        self.mock_fvclient, self.mock_user, self.mock_pass)
    self.mox.VerifyAll()
示例#2
0
    def test_get_endpoint_url_failed(self):
        self.mox.StubOutWithMock(self.client, "request")

        self.client.auth_token = TOKEN

        res200 = get_response(200)
        res401 = get_response(401)

        self.client.request(
            mox.StrContains(AUTH_URL + '/tokens/%s/endpoints' % TOKEN), 'GET',
            headers=mox.IsA(dict)
        ).AndReturn((res401, ''))
        self.client.request(
            AUTH_URL + '/tokens', 'POST',
            body=mox.IsA(str), headers=mox.IsA(dict)
        ).AndReturn((res200, json.dumps(KS_TOKEN_RESULT)))
        self.client.request(
            mox.StrContains(ENDPOINT_URL + '/resource'), 'GET',
            headers=mox.ContainsKeyValue('X-Auth-Token', TOKEN)
        ).AndReturn((res200, ''))
        self.mox.ReplayAll()
        self.client.do_request('/resource', 'GET')
示例#3
0
    def test_get_noauth(self):
        self.mox.StubOutWithMock(self.client, "request")

        res200 = get_response(200)

        self.client.request(
            mox.StrContains(ENDPOINT_URL + '/resource'), 'GET',
            headers=mox.IsA(dict),
        ).AndReturn((res200, ''))
        self.mox.ReplayAll()

        self.client.do_request('/resource', 'GET')
        self.assertEqual(self.client.endpoint_url, ENDPOINT_URL)
示例#4
0
  def testOk(self):
    self.mox.StubOutWithMock(glue.corestorage, 'GetRecoveryPartition')
    glue.corestorage.GetRecoveryPartition().AndReturn('/dev/disk0s3')

    self.mox.StubOutWithMock(glue.corestorage, 'GetState')
    glue.corestorage.GetState().AndReturn(glue.corestorage.State.none)

    self.mox.StubOutWithMock(glue.os, 'path')
    glue.os.path.exists(mox.StrContains('FileVaultMaster')).AndReturn(False)

    self.mox.ReplayAll()
    glue.CheckEncryptionPreconditions()
    self.mox.VerifyAll()
示例#5
0
  def testKeychainPresent(self):
    self.mox.StubOutWithMock(glue.corestorage, 'GetRecoveryPartition')
    glue.corestorage.GetRecoveryPartition().AndReturn('/dev/disk0s3')

    self.mox.StubOutWithMock(glue.corestorage, 'GetState')
    glue.corestorage.GetState().AndReturn(glue.corestorage.State.none)

    self.mox.StubOutWithMock(glue.os, 'path')
    glue.os.path.exists(mox.StrContains('FileVaultMaster')).AndReturn(True)

    self.mox.ReplayAll()
    self.assertRaises(glue.OptionError, glue.CheckEncryptionPreconditions)
    self.mox.VerifyAll()
示例#6
0
    def testFindModules(self):
        """Tests that we can return modules correctly when mocking out glob."""
        self.mox.StubOutWithMock(glob, 'glob')
        fake_command_file = 'cros_command_test.py'
        filtered_file = 'cros_command_unittest.py'
        mydir = 'mydir'

        glob.glob(mox.StrContains(mydir)).AndReturn(
            [fake_command_file, filtered_file])

        self.mox.ReplayAll()
        self.assertEqual(commands._FindModules(mydir), [fake_command_file])
        self.mox.VerifyAll()
示例#7
0
    def testResolveWithFailureURLError(self):
        """Ensure we rehash on a failed ping on a bad_host after urlerror."""
        # Retry mock just return the original method.
        retry.retry = retry_mock
        self.mox.StubOutWithMock(dev_server, '_get_dev_server_list')
        bad_host, good_host = 'http://bad_host:99', 'http://good_host:8080'
        dev_server._get_dev_server_list().MultipleTimes().AndReturn(
            [bad_host, good_host])

        # Mock out bad ping failure to bad_host by raising devserver exception.
        urllib2.urlopen(mox.StrContains(bad_host),
                        data=None).MultipleTimes().AndRaise(
                            urllib2.URLError('urlopen connection timeout'))

        # Good host is good.
        to_return = StringIO.StringIO('{"free_disk": 1024}')
        urllib2.urlopen(mox.StrContains(good_host),
                        data=None).AndReturn(to_return)

        self.mox.ReplayAll()
        host = dev_server.ImageServer.resolve(0)  # Using 0 as it'll hash to 0.
        self.assertEquals(host.url(), good_host)
        self.mox.VerifyAll()
    def test_what_provides_unsupported(self):
        """Test searching for package providing an unsupported type."""

        self._catch_callbacks()
        self.backend.error("not-supported", mox.StrContains("not implemented"),
                           True)
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides", [
            "None", enums.PROVIDES_PLASMA_SERVICE,
            "plasma4(dataengine-weather)"
        ])
示例#9
0
    def testGenericFail(self):
        self.mox.StubOutWithMock(logging, 'error')

        mock_exc = glue.util.ExecError(returncode=1)
        glue.util.GetPlistFromExec(mox.In(self.PATH),
                                   stdin=mox.StrContains(
                                       self.mock_pass)).AndRaise(mock_exc)
        logging.error(mox.IsA(basestring), mox.IsA(basestring),
                      mox.IgnoreArg())

        self.mox.ReplayAll()
        self.assertRaises(glue.Error, glue.ApplyEncryption, self.mock_fvclient,
                          self.mock_user, self.mock_pass)
        self.mox.VerifyAll()
    def test_what_provides_modalias(self):
        """Test searching for package providing a driver."""

        # invalid query
        self._catch_callbacks()
        self.backend.error("not-supported",
                           mox.StrContains("search term is invalid"), True)
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command(
            "what-provides", ["None", enums.PROVIDES_MODALIAS, "pci:1"])

        # no match
        self._catch_callbacks()
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides", [
            "None", enums.PROVIDES_MODALIAS,
            "modalias(pci:v0000DEADd0000BEEFsv00sd00bc02sc00i00)"
        ])

        # match
        self._catch_callbacks("package")
        self.backend.package("silly-driver;0.1-0;all;", enums.INFO_AVAILABLE,
                             mox.IsA(str))
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides", [
            "None", enums.PROVIDES_MODALIAS,
            "modalias(pci:v0000DEADd0000BEEFsv00sd00bc03sc00i00)"
        ])

        # second match
        self._catch_callbacks("package")
        self.backend.package("silly-driver;0.1-0;all;", enums.INFO_AVAILABLE,
                             mox.IsA(str))
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides", [
            "None", enums.PROVIDES_MODALIAS,
            "modalias(pci:v0000DEADd0000FACEsv00sd00bc03sc00i00)"
        ])
示例#11
0
    def testOk(self):
        pl = plistlib.readPlistFromString(self.OUTPUT)
        glue.util.GetPlistFromExec(mox.IsA(tuple),
                                   stdin=mox.StrContains(
                                       self.mock_pass)).AndReturn(pl)

        self.mock_fvclient.SetOwner(self.mock_user)

        self.mox.ReplayAll()
        result = glue.ApplyEncryption(self.mock_fvclient, self.mock_user,
                                      self.mock_pass)
        self.assertEquals(('217CEC95-018C-4CA5-964F-4E7235CA2937',
                           'DLEV-ZYT9-ODLA-PVML-66DV-HZ8R'), result)
        self.mox.VerifyAll()
示例#12
0
 def testGatherPageData_Download_WithoutDisposition(self):
   aid = self.attachment.attachment_id
   path = '/p/proj/issues/attachment?aid=%s&signed_aid=signed_%d' % (
       aid, aid)
   self.mox.StubOutWithMock(gcs_helpers, 'MaybeCreateDownload')
   gcs_helpers.MaybeCreateDownload(
       'app_default_bucket',
       '/pid/attachments/object_id',
       self.attachment.filename).AndReturn(False)
   self.mox.StubOutWithMock(gcs_helpers, 'SignUrl')
   gcs_helpers.SignUrl(
       'app_default_bucket',
       '/pid/attachments/object_id'
       ).AndReturn('googleusercontent.com/...')
   self.mox.StubOutWithMock(self.servlet, 'redirect')
   _request, mr = testing_helpers.GetRequestObjects(
       project=self.project, path=path,
       perms=permissions.READ_ONLY_PERMISSIONSET)  # includes VIEW
   self.servlet.redirect(
     mox.And(mox.StrContains('googleusercontent.com'),
             mox.Not(mox.StrContains('-download'))), abort=True)
   self.mox.ReplayAll()
   self.servlet.GatherPageData(mr)
   self.mox.VerifyAll()
示例#13
0
 def testUnparseableManifestPath(self):
     """Ensure we don't explode if we encounter an unparseable path."""
     since_date = datetime.datetime(year=2015, month=2, day=1)
     board = 'link'
     build_name = 'link-depthcharge-pgo-codename-release-suffix-part-two'
     manifest = 'build-name/%s/pass/25/1234.0.0.xml' % build_name
     self._ExpectGlob(['some/paths'])
     self.mox.StubOutWithMock(manifest_versions, '_SystemOutput')
     manifest_versions._SystemOutput(
         mox.StrContains('log')).MultipleTimes().AndReturn(manifest)
     self.mox.ReplayAll()
     br_man = self.mv.ManifestsSinceDate(since_date, board)
     # We should skip the manifest that we passed in, as we can't parse it,
     # so we should get no manifests back.
     self.assertEquals(br_man, {})
示例#14
0
    def test_refresh_token(self):
        self.mox.StubOutWithMock(self.client, "request")

        self.client.auth_token = TOKEN
        self.client.endpoint_url = ENDPOINT_URL

        res200 = get_response(200)
        res401 = get_response(401)

        # If a token is expired, tacker server retruns 401
        self.client.request(
            mox.StrContains(ENDPOINT_URL + '/resource'), 'GET',
            headers=mox.ContainsKeyValue('X-Auth-Token', TOKEN)
        ).AndReturn((res401, ''))
        self.client.request(
            AUTH_URL + '/tokens', 'POST',
            body=mox.IsA(str), headers=mox.IsA(dict)
        ).AndReturn((res200, json.dumps(KS_TOKEN_RESULT)))
        self.client.request(
            mox.StrContains(ENDPOINT_URL + '/resource'), 'GET',
            headers=mox.ContainsKeyValue('X-Auth-Token', TOKEN)
        ).AndReturn((res200, ''))
        self.mox.ReplayAll()
        self.client.do_request('/resource', 'GET')
示例#15
0
 def testInitJob_GoogleStorage(self):
     mapreduce_state = self.create_mapreduce_state(params={
         "filesystem": "gs",
         "gs_bucket_name": "foo",
         "gs_acl": "public"
     })
     m = mox.Mox()
     m.StubOutWithMock(files.gs, "create")
     files.gs.create(mox.StrContains("/gs/foo"),
                     mox.IgnoreArg(),
                     acl="public")
     m.ReplayAll()
     output_writers.FileOutputWriter.init_job(mapreduce_state)
     m.UnsetStubs()
     m.VerifyAll()
     self.assertTrue(mapreduce_state.writer_state)
示例#16
0
 def testManifestsSinceDate(self):
     """Ensure we can get manifests for a board since N days ago."""
     since_date = datetime.datetime(year=2015, month=2, day=1)
     board = 'x86-alex'
     self._ExpectGlob(['some/paths'])
     self.mox.StubOutWithMock(manifest_versions, '_SystemOutput')
     manifest_versions._SystemOutput(
         mox.StrContains('log')).MultipleTimes().AndReturn(
             self._MANIFESTS_STRING)
     self.mox.ReplayAll()
     br_man = self.mv.ManifestsSinceDate(since_date, board)
     for pair in br_man.keys():
         self.assertTrue(pair, self._BRANCHES)
     for manifest_list in br_man.itervalues():
         self.assertTrue(manifest_list)
     self.assertEquals(br_man[('release', '20')][-1], '2057.0.10')
    def _CallRunGS(self, str_should_contain, attempts=1):
        """Helper that wraps a RunGS for tests."""
        for attempt in range(attempts):
            if attempt == gsutil_util.GSUTIL_ATTEMPTS:
                # We can't mock more than we can attempt.
                return

            # Return 1's for all but last attempt.
            if attempt != attempts - 1:
                mock_process = self._bad_mock_process
            else:
                mock_process = self._good_mock_process

            subprocess.Popen(mox.StrContains(str_should_contain),
                             shell=True,
                             stdout=subprocess.PIPE).AndReturn(mock_process)
            mock_process.communicate().AndReturn(('Does not matter', None))
    def test_refresh_token_no_auth_url(self):
        self.mox.StubOutWithMock(self.client, "request")
        self.client.auth_url = None

        self.client.auth_token = TOKEN
        self.client.endpoint_url = ENDPOINT_URL

        res401 = get_response(401)

        # If a token is expired, neutron server returns 401
        self.client.request(mox.StrContains(ENDPOINT_URL + '/resource'),
                            'GET',
                            headers=mox.ContainsKeyValue(
                                'X-Auth-Token', TOKEN)).AndReturn((res401, ''))
        self.mox.ReplayAll()
        self.assertRaises(exceptions.NoAuthURLProvided, self.client.do_request,
                          '/resource', 'GET')
    def testStartBackendNonviewableCall(self):
        self.mox.StubOutWithMock(urlfetch, 'create_rpc')
        self.mox.StubOutWithMock(urlfetch, 'make_fetch_call')
        self.mox.StubOutWithMock(modules, 'get_hostname')
        a_fake_rpc = testing_helpers.Blank(callback=None)
        urlfetch.create_rpc(
            deadline=settings.backend_deadline).AndReturn(a_fake_rpc)
        modules.get_hostname(module='besearch')
        urlfetch.make_fetch_call(a_fake_rpc,
                                 mox.StrContains(urls.BACKEND_NONVIEWABLE),
                                 follow_redirects=False,
                                 headers=mox.IsA(dict))
        self.mox.ReplayAll()

        processed_invalidations_up_to = 12345
        frontendsearchpipeline._StartBackendNonviewableCall(
            789, 111L, 2, processed_invalidations_up_to)
        self.mox.VerifyAll()
示例#20
0
    def test_get_endpoint_url_other(self):
        self.client = client.HTTPClient(
            username=USERNAME, tenant_name=TENANT_NAME, password=PASSWORD,
            auth_url=AUTH_URL, region_name=REGION, endpoint_type='otherURL')
        self.mox.StubOutWithMock(self.client, "request")

        self.client.auth_token = TOKEN
        res200 = get_response(200)

        self.client.request(
            mox.StrContains(AUTH_URL + '/tokens/%s/endpoints' % TOKEN), 'GET',
            headers=mox.IsA(dict)
        ).AndReturn((res200, json.dumps(ENDPOINTS_RESULT)))
        self.mox.ReplayAll()
        self.assertRaises(exceptions.EndpointTypeNotFound,
                          self.client.do_request,
                          '/resource',
                          'GET')
示例#21
0
    def test_get_token(self):
        self.mox.StubOutWithMock(self.client, "request")

        res200 = get_response(200)

        self.client.request(
            AUTH_URL + '/tokens', 'POST',
            body=self.auth_body, headers=mox.IsA(dict)
        ).AndReturn((res200, json.dumps(KS_TOKEN_RESULT)))
        self.client.request(
            mox.StrContains(ENDPOINT_URL + '/resource'), 'GET',
            headers=mox.ContainsKeyValue('X-Auth-Token', TOKEN)
        ).AndReturn((res200, ''))
        self.mox.ReplayAll()

        self.client.do_request('/resource', 'GET')
        self.assertEqual(self.client.endpoint_url, ENDPOINT_URL)
        self.assertEqual(self.client.auth_token, TOKEN)
示例#22
0
    def test_use_given_endpoint_url(self):
        self.client = client.HTTPClient(
            username=USERNAME, tenant_name=TENANT_NAME, password=PASSWORD,
            auth_url=AUTH_URL, region_name=REGION,
            endpoint_url=ENDPOINT_OVERRIDE)
        self.assertEqual(self.client.endpoint_url, ENDPOINT_OVERRIDE)

        self.mox.StubOutWithMock(self.client, "request")

        self.client.auth_token = TOKEN
        res200 = get_response(200)

        self.client.request(
            mox.StrContains(ENDPOINT_OVERRIDE + '/resource'), 'GET',
            headers=mox.ContainsKeyValue('X-Auth-Token', TOKEN)
        ).AndReturn((res200, ''))
        self.mox.ReplayAll()
        self.client.do_request('/resource', 'GET')
        self.assertEqual(self.client.endpoint_url, ENDPOINT_OVERRIDE)
示例#23
0
    def testSuccessfulTriggerDownloadASync(self):
        """Call the dev server's download method with synchronous=False."""
        name = 'fake/image'
        to_return = StringIO.StringIO('Success')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('stage?'))).AndReturn(to_return)
        to_return = StringIO.StringIO('True')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('is_staged'))).AndReturn(to_return)

        self.mox.ReplayAll()
        self.dev_server.trigger_download(name, synchronous=False)
        self.mox.VerifyAll()
    def testStartBackendSearchCall(self):
        self.mox.StubOutWithMock(urlfetch, 'create_rpc')
        self.mox.StubOutWithMock(urlfetch, 'make_fetch_call')
        self.mox.StubOutWithMock(modules, 'get_hostname')
        a_fake_rpc = testing_helpers.Blank(callback=None)
        urlfetch.create_rpc(
            deadline=settings.backend_deadline).AndReturn(a_fake_rpc)
        modules.get_hostname(module='besearch')
        urlfetch.make_fetch_call(a_fake_rpc,
                                 mox.StrContains(urls.BACKEND_SEARCH),
                                 follow_redirects=False,
                                 headers=mox.IsA(dict))
        self.mox.ReplayAll()

        processed_invalidations_up_to = 12345
        mr = testing_helpers.MakeMonorailRequest(
            path='/p/proj/issues/list?q=foo')
        mr.me_user_id = 111L
        frontendsearchpipeline._StartBackendSearchCall(
            mr, ['proj'], (2, 'priority=high'), processed_invalidations_up_to)
        self.mox.VerifyAll()
示例#25
0
    def testSuccessfulFinishDownload(self):
        """Should successfully call the dev server's finish download method."""
        name = 'fake/image'
        to_return = StringIO.StringIO('Success')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('stage?'))).AndReturn(to_return)
        to_return = StringIO.StringIO('True')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('is_staged'))).AndReturn(to_return)

        # Synchronous case requires a call to finish download.
        self.mox.ReplayAll()
        self.dev_server.finish_download(name)  # Raises on failure.
        self.mox.VerifyAll()
示例#26
0
    def test_what_provides_codec(self):
        """Test searching for package providing a codec."""
        # invalid query
        self._catch_callbacks()
        self.backend.error("not-supported", mox.StrContains("search term is invalid"), True)
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides",
                                      ["None", enums.PROVIDES_CODEC, "audio/mpeg"])

        self._catch_callbacks("package")
        self.backend.package("gstreamer0.10-silly;0.1-0;all;",
                             enums.INFO_AVAILABLE,
                             mox.IsA(str))
        self.backend.finished()
        self.mox.ReplayAll()
        self.backend._open_cache()

        self.backend.dispatch_command("what-provides",
                                      ["None", enums.PROVIDES_CODEC, "gstreamer0.10(decoder-audio/ac3)"])
    def _CommonMarkAsStableTest(self, chrome_rev, new_version, old_ebuild_path,
                                new_ebuild_path, commit_string_indicator):
        """Common function used for test functions for MarkChromeEBuildAsStable.

    This function stubs out others calls, and runs MarkChromeEBuildAsStable
    with the specified args.

    Args:
      chrome_rev: standard chrome_rev argument
      new_version: version we are revving up to
      old_ebuild_path: path to the stable ebuild
      new_ebuild_path: path to the to be created path
      commit_string_indicator: a string that the commit message must contain
    """
        self.mox.StubOutWithMock(cros_build_lib, 'RunCommand')
        self.mox.StubOutWithMock(portage_utilities.EBuild, 'CommitChange')
        stable_candidate = cros_mark_chrome_as_stable.ChromeEBuild(
            old_ebuild_path)
        unstable_ebuild = cros_mark_chrome_as_stable.ChromeEBuild(
            self.unstable)
        chrome_version = new_version
        commit = None
        overlay_dir = self.mock_chrome_dir

        cros_build_lib.RunCommand(['git', 'add', new_ebuild_path],
                                  cwd=overlay_dir)
        cros_build_lib.RunCommand(['git', 'rm', old_ebuild_path],
                                  cwd=overlay_dir)
        portage_utilities.EBuild.CommitChange(
            mox.StrContains(commit_string_indicator), overlay_dir)

        self.mox.ReplayAll()
        cros_mark_chrome_as_stable.MarkChromeEBuildAsStable(
            stable_candidate, unstable_ebuild, chrome_rev, chrome_version,
            commit, overlay_dir)
        self.mox.VerifyAll()
示例#28
0
    def testSuccessfulTriggerDownloadSync(self):
        """Call the dev server's download method with synchronous=True."""
        name = 'fake/image'
        self.mox.StubOutWithMock(dev_server.ImageServer, '_finish_download')
        to_return = StringIO.StringIO('Success')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('stage?'))).AndReturn(to_return)
        to_return = StringIO.StringIO('True')
        urllib2.urlopen(
            mox.And(mox.StrContains(self._HOST), mox.StrContains(name),
                    mox.StrContains('is_staged'))).AndReturn(to_return)
        self.dev_server._finish_download(name, mox.IgnoreArg(),
                                         mox.IgnoreArg())

        # Synchronous case requires a call to finish download.
        self.mox.ReplayAll()
        self.dev_server.trigger_download(name, synchronous=True)
        self.mox.VerifyAll()
    def testUpdateStateful(self):
        """Tests that we call the stateful update script with the correct args.
        """
        self.mox.StubOutWithMock(autoupdater.ChromiumOSUpdater, '_run')
        self.mox.StubOutWithMock(autoupdater.ChromiumOSUpdater,
                                 '_get_stateful_update_script')
        update_url = ('http://172.22.50.205:8082/update/lumpy-chrome-perf/'
                      'R28-4444.0.0-b2996')
        static_update_url = ('http://172.22.50.205:8082/static/'
                             'lumpy-chrome-perf/R28-4444.0.0-b2996')
        update_script = '/usr/local/bin/stateful_update'

        # Test with clobber=False.
        autoupdater.ChromiumOSUpdater._get_stateful_update_script().AndReturn(
                update_script)
        autoupdater.ChromiumOSUpdater._run(
                mox.And(
                        mox.StrContains(update_script),
                        mox.StrContains(static_update_url),
                        mox.Not(mox.StrContains('--stateful_change=clean'))),
                timeout=mox.IgnoreArg())

        self.mox.ReplayAll()
        updater = autoupdater.ChromiumOSUpdater(update_url)
        updater.update_stateful(clobber=False)
        self.mox.VerifyAll()

        # Test with clobber=True.
        self.mox.ResetAll()
        autoupdater.ChromiumOSUpdater._get_stateful_update_script().AndReturn(
                update_script)
        autoupdater.ChromiumOSUpdater._run(
                mox.And(
                        mox.StrContains(update_script),
                        mox.StrContains(static_update_url),
                        mox.StrContains('--stateful_change=clean')),
                timeout=mox.IgnoreArg())
        self.mox.ReplayAll()
        updater = autoupdater.ChromiumOSUpdater(update_url)
        updater.update_stateful(clobber=True)
        self.mox.VerifyAll()
    def testIntegrationSpecificBoardFail(self):
        """Tests we don't generate a specific test if either payload missing."""
        board = 'x86-mario'
        branch = '24'
        target = '3000.0.0'
        src = '1234.0.0'

        argv = [
            '--specific', src, '--dump_dir', self.tmpdir, '--dump', target,
            board
        ]

        # Return target full payload
        gsutil_util.GSUtilRun(mox.And(
                mox.StrContains('gsutil cat'),
                mox.StrContains('%s/UPLOADED' % target)), mox.IgnoreArg()).\
                AndReturn('chromeos_R%s-%s_%s_full_dev.bin' % (
                        branch, target, board))
        # No src full payload
        gsutil_util.GSUtilRun(mox.And(
                mox.StrContains('gsutil cat'),
                mox.StrContains('%s/UPLOADED' % src)), mox.IgnoreArg()).\
                AndReturn('SOME OTHER DATA')
        self.mox.ReplayAll()
        self.assertEquals(full_release_test.main(argv), 1)
        self.mox.VerifyAll()

        self.mox.ResetAll()
        # Return target full payload
        gsutil_util.GSUtilRun(mox.And(
                mox.StrContains('gsutil cat'),
                mox.StrContains('%s/UPLOADED' % target)), mox.IgnoreArg()).\
                AndReturn('SOME OTHER DATA')
        self.mox.ReplayAll()
        self.assertEquals(full_release_test.main(argv), 1)
        self.mox.VerifyAll()