blob: d48e0075e98c0051ac3fc8721c6fdea58b8c6441 [file] [log] [blame]
#!/usr/bin/env python
#
# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from abc import ABCMeta
from abc import abstractmethod
from vts.utils.python.file import file_utils
class KernelSelinuxFileTestBase(object):
"""Abstract test for the formatting of a selinux file.
Individual files can inherit from this class and define the correct path,
file content, and permissions.
"""
__metaclass__ = ABCMeta
@abstractmethod
def get_path(self):
"""Return the full path of this selinux file."""
pass
def result_correct(self, file_contents):
"""Return True if the file contents are correct.
Subclasses define the requirements for the selinux file and validate
that the contents of a file are correct.
Args:
file_contents: String, the contents of an selinux file
Returns:
True if the contents are correct, False otherwise.
"""
return True
def get_permission_checker(self):
"""Gets the function handle to use for validating file permissions.
Return the function that will check if the permissions are correct.
By default, return the IsReadOnly function from file_utils.
Returns:
function which takes one argument (the unix file permission bits
in octal format) and returns True if the permissions are correct,
False otherwise.
"""
return file_utils.IsReadOnly