| 
									
										
										
										
											2019-02-06 15:46:00 +01:00
										 |  |  | import ./make-test.nix ({ pkgs, ... } : let | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   runWithOpenSSL = file: cmd: pkgs.runCommand file { | 
					
						
							|  |  |  |     buildInputs = [ pkgs.openssl ]; | 
					
						
							|  |  |  |   } cmd; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048"; | 
					
						
							|  |  |  |   ca_pem = runWithOpenSSL "ca.pem" ''
 | 
					
						
							|  |  |  |     openssl req \ | 
					
						
							|  |  |  |       -x509 -new -nodes -key ${ca_key} \ | 
					
						
							|  |  |  |       -days 10000 -out $out -subj "/CN=snakeoil-ca" | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  |   key = runWithOpenSSL "matrix_key.pem" "openssl genrsa -out $out 2048"; | 
					
						
							|  |  |  |   csr = runWithOpenSSL "matrix.csr" ''
 | 
					
						
							|  |  |  |     openssl req \ | 
					
						
							|  |  |  |        -new -key ${key} \ | 
					
						
							|  |  |  |        -out $out -subj "/CN=localhost" \ | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  |   cert = runWithOpenSSL "matrix_cert.pem" ''
 | 
					
						
							|  |  |  |     openssl x509 \ | 
					
						
							|  |  |  |       -req -in ${csr} \ | 
					
						
							|  |  |  |       -CA ${ca_pem} -CAkey ${ca_key} \ | 
					
						
							|  |  |  |       -CAcreateserial -out $out \ | 
					
						
							|  |  |  |       -days 365 | 
					
						
							|  |  |  |   '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | in { | 
					
						
							| 
									
										
										
										
											2017-11-04 15:21:55 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  |   name = "matrix-synapse"; | 
					
						
							|  |  |  |   meta = with pkgs.stdenv.lib.maintainers; { | 
					
						
							|  |  |  |     maintainers = [ corngood ]; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   nodes = { | 
					
						
							| 
									
										
										
										
											2018-08-26 10:38:52 +02:00
										 |  |  |     # Since 0.33.0, matrix-synapse doesn't allow underscores in server names | 
					
						
							|  |  |  |     serverpostgres = args: { | 
					
						
							| 
									
										
										
										
											2019-02-06 15:46:00 +01:00
										 |  |  |       services.matrix-synapse = { | 
					
						
							|  |  |  |         enable = true; | 
					
						
							|  |  |  |         database_type = "psycopg2"; | 
					
						
							|  |  |  |         tls_certificate_path = "${cert}"; | 
					
						
							|  |  |  |         tls_private_key_path = "${key}"; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:21:55 -03:00
										 |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-26 10:38:52 +02:00
										 |  |  |     serversqlite = args: { | 
					
						
							| 
									
										
										
										
											2019-02-06 15:46:00 +01:00
										 |  |  |       services.matrix-synapse = { | 
					
						
							|  |  |  |         enable = true; | 
					
						
							|  |  |  |         database_type = "sqlite3"; | 
					
						
							|  |  |  |         tls_certificate_path = "${cert}"; | 
					
						
							|  |  |  |         tls_private_key_path = "${key}"; | 
					
						
							|  |  |  |       }; | 
					
						
							| 
									
										
										
										
											2017-11-04 15:21:55 -03:00
										 |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   testScript = ''
 | 
					
						
							|  |  |  |     startAll; | 
					
						
							| 
									
										
										
										
											2018-08-26 10:38:52 +02:00
										 |  |  |     $serverpostgres->waitForUnit("matrix-synapse.service"); | 
					
						
							| 
									
										
										
										
											2019-02-06 15:46:00 +01:00
										 |  |  |     $serverpostgres->waitUntilSucceeds("curl -L --cacert ${ca_pem} https://localhost:8448/"); | 
					
						
							| 
									
										
										
										
											2018-08-26 10:38:52 +02:00
										 |  |  |     $serverpostgres->requireActiveUnit("postgresql.service"); | 
					
						
							|  |  |  |     $serversqlite->waitForUnit("matrix-synapse.service"); | 
					
						
							| 
									
										
										
										
											2019-02-06 15:46:00 +01:00
										 |  |  |     $serversqlite->waitUntilSucceeds("curl -L --cacert ${ca_pem} https://localhost:8448/"); | 
					
						
							| 
									
										
										
										
											2018-08-26 10:38:52 +02:00
										 |  |  |     $serversqlite->mustSucceed("[ -e /var/lib/matrix-synapse/homeserver.db ]"); | 
					
						
							| 
									
										
										
										
											2017-11-04 15:21:55 -03:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | }) |