def testBasicParseSuccess(self):
        path = self._MakeFile("""\
        - ipSubnetworks:
          - 192.168.100.14/24
          - 2001:db8::/48
          negate: true
        - members:
          - user:[email protected]
          - serviceAccount:[email protected]
        - requiredAccessLevels:
          - accessPolicies/my_policy/accessLevels/other_level
        """)

        conditions = levels.ParseBasicLevelConditions(self.api_version)(path)

        self.assertEqual(conditions, [
            self.messages.Condition(
                ipSubnetworks=['192.168.100.14/24', '2001:db8::/48'],
                negate=True),
            self.messages.Condition(members=[
                'user:[email protected]',
                'serviceAccount:[email protected]'
            ]),
            self.messages.Condition(requiredAccessLevels=[
                'accessPolicies/my_policy/accessLevels/other_level'
            ])
        ])
 def testBasicParseValidYamlInvalidObjectUnrecognizedField(self):
     path = self._MakeFile('[{"invalid-prop": "value"}]')
     with self.assertRaisesRegex(levels.ParseError,
                                 r'Unrecognized fields: \[invalid-prop\]'):
         levels.ParseBasicLevelConditions(self.api_version)(path)
 def testBasicParseValidYamlInvalidObjectEncodeError(self):
     path = self._MakeFile('test')
     with self.assertRaisesRegex(levels.ParseError, 'Invalid format'):
         levels.ParseBasicLevelConditions(self.api_version)(path)
 def testBasicParseEmpty(self):
     path = self._MakeFile('')
     with self.assertRaisesRegex(levels.ParseError, 'File is empty'):
         levels.ParseBasicLevelConditions(self.api_version)(path)
 def testBasicParseInvalidYaml(self):
     path = self._MakeFile(':')
     with self.assertRaisesRegex(yaml.YAMLParseError,
                                 'Failed to parse YAML'):
         levels.ParseBasicLevelConditions(self.api_version)(path)
 def testBasicParseMissingFile(self):
     with self.assertRaisesRegex(yaml.FileLoadError, 'Failed to load'):
         levels.ParseBasicLevelConditions(
             self.api_version)('does-not-exist.yaml')