1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "sogo";
5 meta = with pkgs.lib.maintainers; {
6 maintainers = [ ];
7 };
8
9 nodes = {
10 sogo =
11 { config, pkgs, ... }:
12 {
13 services.nginx.enable = true;
14
15 services.mysql = {
16 enable = true;
17 package = pkgs.mariadb;
18 ensureDatabases = [ "sogo" ];
19 ensureUsers = [
20 {
21 name = "sogo";
22 ensurePermissions = {
23 "sogo.*" = "ALL PRIVILEGES";
24 };
25 }
26 ];
27 };
28
29 services.sogo = {
30 enable = true;
31 timezone = "Europe/Berlin";
32 extraConfig = ''
33 WOWorkersCount = 1;
34
35 SOGoUserSources = (
36 {
37 type = sql;
38 userPasswordAlgorithm = md5;
39 viewURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_users";
40 canAuthenticate = YES;
41 id = users;
42 }
43 );
44
45 SOGoProfileURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_user_profile";
46 OCSFolderInfoURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_folder_info";
47 OCSSessionsFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_sessions_folder";
48 OCSEMailAlarmsFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_alarms_folder";
49 OCSStoreURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_store";
50 OCSAclURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_acl";
51 OCSCacheFolderURL = "mysql://sogo@%2Frun%2Fmysqld%2Fmysqld.sock/sogo/sogo_cache_folder";
52 '';
53 };
54 };
55 };
56
57 testScript = ''
58 start_all()
59 sogo.wait_for_unit("multi-user.target")
60 sogo.wait_for_open_port(20000)
61 sogo.wait_for_open_port(80)
62 sogo.succeed("curl -sSfL http://sogo/SOGo")
63 '';
64 }
65)