1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2  * vim: sw=2 ts=2 et lcs=trail\:.,tab\:>~ :
3  * This Source Code Form is subject to the terms of the Mozilla Public
4  * License, v. 2.0. If a copy of the MPL was not distributed with this
5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 
7 #include "storage_test_harness.h"
8 #include "nsIFile.h"
9 #include "prio.h"
10 
11 /**
12  * This file tests that the file permissions of the sqlite files match what
13  * we request they be
14  */
15 
TEST(storage_file_perms,Test)16 TEST(storage_file_perms, Test)
17 {
18   nsCOMPtr<mozIStorageConnection> db(getDatabase());
19   nsCOMPtr<nsIFile> dbFile;
20   do_check_success(db->GetDatabaseFile(getter_AddRefs(dbFile)));
21 
22   uint32_t perms = 0;
23   do_check_success(dbFile->GetPermissions(&perms));
24 
25   // This reflexts the permissions defined by SQLITE_DEFAULT_FILE_PERMISSIONS in
26   // db/sqlite3/src/Makefile.in and must be kept in sync with that
27 #ifdef ANDROID
28   do_check_true(perms == (PR_IRUSR | PR_IWUSR));
29 #elif defined(XP_WIN)
30   do_check_true(perms == (PR_IRUSR | PR_IWUSR | PR_IRGRP | PR_IWGRP | PR_IROTH | PR_IWOTH));
31 #else
32   do_check_true(perms == (PR_IRUSR | PR_IWUSR | PR_IRGRP | PR_IROTH));
33 #endif
34 }
35 
36