|
13 | 13 | # language governing permissions and limitations under the License. |
14 | 14 | import os |
15 | 15 |
|
16 | | -from awscli.testutils import BaseAWSCommandParamsTest |
| 16 | +from awscli.testutils import BaseAWSCommandParamsTest, skip_if_windows |
17 | 17 |
|
18 | 18 |
|
19 | 19 | class TestCreateVirtualMFADevice(BaseAWSCommandParamsTest): |
@@ -161,3 +161,32 @@ def test_bad_response(self): |
161 | 161 | stderr_contains=self.parsed_response['Error']['Message'], |
162 | 162 | expected_rc=254, |
163 | 163 | ) |
| 164 | + |
| 165 | + @skip_if_windows("Permissions test not valid on Windows.") |
| 166 | + def test_output_file_permissions(self): |
| 167 | + outfile = self.getpath('fiebaz_perms.b32') |
| 168 | + self.addCleanup(self.remove_file_if_exists, outfile) |
| 169 | + cmdline = self.prefix |
| 170 | + cmdline += ' --virtual-mfa-device-name fiebaz' |
| 171 | + cmdline += ( |
| 172 | + ' --outfile %s --bootstrap-method Base32StringSeed' % outfile |
| 173 | + ) |
| 174 | + result = {"VirtualMFADeviceName": 'fiebaz'} |
| 175 | + self.assert_params_for_cmd(cmdline, result) |
| 176 | + self.assertEqual(os.stat(outfile).st_mode & 0xFFF, 0o600) |
| 177 | + |
| 178 | + @skip_if_windows("Permissions test not valid on Windows.") |
| 179 | + def test_output_file_permissions_existing_file(self): |
| 180 | + outfile = self.getpath('fiebaz_perms_existing.b32') |
| 181 | + self.addCleanup(self.remove_file_if_exists, outfile) |
| 182 | + with open(outfile, 'wb') as f: |
| 183 | + f.write(b'existing') |
| 184 | + os.chmod(outfile, 0o644) |
| 185 | + cmdline = self.prefix |
| 186 | + cmdline += ' --virtual-mfa-device-name fiebaz' |
| 187 | + cmdline += ( |
| 188 | + ' --outfile %s --bootstrap-method Base32StringSeed' % outfile |
| 189 | + ) |
| 190 | + result = {"VirtualMFADeviceName": 'fiebaz'} |
| 191 | + self.assert_params_for_cmd(cmdline, result) |
| 192 | + self.assertEqual(os.stat(outfile).st_mode & 0xFFF, 0o600) |
0 commit comments