Home | History | Annotate | Download | only in functional
      1 #!/usr/bin/env python
      2 # Copyright (c) 2011 The Chromium Authors. All rights reserved.
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 import commands
      7 import glob
      8 import logging
      9 import os
     10 import sys
     11 import unittest
     12 
     13 import pyauto_functional # Must import before pyauto
     14 import pyauto
     15 
     16 class CodesignTest(pyauto.PyUITest):
     17   """Test if the build is code signed"""
     18 
     19   def testCodeSign(self):
     20     """Check the app for codesign and bail out if it's non-branded."""
     21     browser_info = self.GetBrowserInfo()
     22 
     23     # bail out if not a branded build
     24     if browser_info['properties']['branding'] != 'Google Chrome':
     25       return
     26 
     27     # TODO: Add functionality for other operating systems (see crbug.com/47902)
     28     if self.IsMac():
     29       self._MacCodeSign(browser_info)
     30 
     31   def _MacCodeSign(self, browser_info):
     32     valid_text = 'valid on disk'
     33     app_name = 'Google Chrome.app'
     34 
     35     # Codesign of the app @ xcodebuild/Release/Google Chrome.app/
     36     app_path = browser_info['child_process_path']
     37     app_path = app_path[:app_path.find(app_name)]
     38     app_path = app_path + app_name
     39     self.assertTrue(valid_text in self._checkCodeSign(app_path))
     40 
     41     # Codesign of the frameWork
     42     framework_path = glob.glob(os.path.join(app_path, 'Contents', 'Versions',
     43                                             '*.*.*.*'))[0]
     44     framework_path = os.path.join(framework_path,
     45                                   'Google Chrome Framework.framework')
     46     self.assertTrue(valid_text in self._checkCodeSign(framework_path))
     47 
     48   def _checkCodeSign(self, file_path):
     49     """Return the output of the codesign"""
     50     return commands.getoutput('codesign -vvv "%s"' % file_path)
     51 
     52 
     53 if __name__ == '__main__':
     54   pyauto_functional.Main()
     55