partially reintrodueced integration tests
This commit is contained in:
		
							parent
							
								
									e1775a864d
								
							
						
					
					
						commit
						dd7507225f
					
				
							
								
								
									
										196
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										196
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -24,8 +24,8 @@ dependencies = [
 | 
				
			|||||||
 "futures-sink",
 | 
					 "futures-sink",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "pin-project 0.4.28",
 | 
					 "pin-project 0.4.28",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-util 0.3.1",
 | 
					 "tokio-util",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -93,7 +93,7 @@ dependencies = [
 | 
				
			|||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "fxhash",
 | 
					 "fxhash",
 | 
				
			||||||
 "h2 0.2.7",
 | 
					 "h2",
 | 
				
			||||||
 "http",
 | 
					 "http",
 | 
				
			||||||
 "httparse",
 | 
					 "httparse",
 | 
				
			||||||
 "indexmap",
 | 
					 "indexmap",
 | 
				
			||||||
@ -163,7 +163,7 @@ dependencies = [
 | 
				
			|||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -179,11 +179,11 @@ dependencies = [
 | 
				
			|||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "mio 0.6.23",
 | 
					 "mio",
 | 
				
			||||||
 "mio-uds",
 | 
					 "mio-uds",
 | 
				
			||||||
 "num_cpus",
 | 
					 "num_cpus",
 | 
				
			||||||
 "slab",
 | 
					 "slab",
 | 
				
			||||||
 "socket2 0.3.19",
 | 
					 "socket2",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -207,7 +207,7 @@ dependencies = [
 | 
				
			|||||||
 "actix-server",
 | 
					 "actix-server",
 | 
				
			||||||
 "actix-service",
 | 
					 "actix-service",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "socket2 0.3.19",
 | 
					 "socket2",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -290,7 +290,7 @@ dependencies = [
 | 
				
			|||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_json",
 | 
					 "serde_json",
 | 
				
			||||||
 "serde_urlencoded",
 | 
					 "serde_urlencoded",
 | 
				
			||||||
 "socket2 0.3.19",
 | 
					 "socket2",
 | 
				
			||||||
 "time 0.2.27",
 | 
					 "time 0.2.27",
 | 
				
			||||||
 "tinyvec",
 | 
					 "tinyvec",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
@ -1676,31 +1676,12 @@ dependencies = [
 | 
				
			|||||||
 "http",
 | 
					 "http",
 | 
				
			||||||
 "indexmap",
 | 
					 "indexmap",
 | 
				
			||||||
 "slab",
 | 
					 "slab",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-util 0.3.1",
 | 
					 "tokio-util",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
 "tracing-futures",
 | 
					 "tracing-futures",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "h2"
 | 
					 | 
				
			||||||
version = "0.3.3"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 | 
				
			||||||
 "fnv",
 | 
					 | 
				
			||||||
 "futures-core",
 | 
					 | 
				
			||||||
 "futures-sink",
 | 
					 | 
				
			||||||
 "futures-util",
 | 
					 | 
				
			||||||
 "http",
 | 
					 | 
				
			||||||
 "indexmap",
 | 
					 | 
				
			||||||
 "slab",
 | 
					 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 | 
				
			||||||
 "tokio-util 0.6.7",
 | 
					 | 
				
			||||||
 "tracing",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hashbrown"
 | 
					name = "hashbrown"
 | 
				
			||||||
version = "0.1.8"
 | 
					version = "0.1.8"
 | 
				
			||||||
@ -1803,13 +1784,12 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "http-body"
 | 
					name = "http-body"
 | 
				
			||||||
version = "0.4.2"
 | 
					version = "0.3.1"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9"
 | 
					checksum = "13d5ff830006f7646652e057693569bfe0d51760c0085a071769d142a205111b"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 "bytes 0.5.6",
 | 
				
			||||||
 "http",
 | 
					 "http",
 | 
				
			||||||
 "pin-project-lite 0.2.7",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1820,9 +1800,9 @@ checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "httpdate"
 | 
					name = "httpdate"
 | 
				
			||||||
version = "1.0.1"
 | 
					version = "0.3.2"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440"
 | 
					checksum = "494b4d60369511e7dea41cf646832512a94e542f68bb9c49e54518e0f468eb47"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "humantime"
 | 
					name = "humantime"
 | 
				
			||||||
@ -1835,23 +1815,23 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hyper"
 | 
					name = "hyper"
 | 
				
			||||||
version = "0.14.10"
 | 
					version = "0.13.10"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "7728a72c4c7d72665fde02204bcbd93b247721025b222ef78606f14513e0fd03"
 | 
					checksum = "8a6f157065790a3ed2f88679250419b5cdd96e714a0d65f7797fd337186e96bb"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 "bytes 0.5.6",
 | 
				
			||||||
 "futures-channel",
 | 
					 "futures-channel",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "futures-util",
 | 
					 "futures-util",
 | 
				
			||||||
 "h2 0.3.3",
 | 
					 "h2",
 | 
				
			||||||
 "http",
 | 
					 "http",
 | 
				
			||||||
 "http-body",
 | 
					 "http-body",
 | 
				
			||||||
 "httparse",
 | 
					 "httparse",
 | 
				
			||||||
 "httpdate",
 | 
					 "httpdate",
 | 
				
			||||||
 "itoa",
 | 
					 "itoa",
 | 
				
			||||||
 "pin-project-lite 0.2.7",
 | 
					 "pin-project 1.0.7",
 | 
				
			||||||
 "socket2 0.4.0",
 | 
					 "socket2",
 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 "tokio",
 | 
				
			||||||
 "tower-service",
 | 
					 "tower-service",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
 "want",
 | 
					 "want",
 | 
				
			||||||
@ -1859,15 +1839,15 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "hyper-tls"
 | 
					name = "hyper-tls"
 | 
				
			||||||
version = "0.5.0"
 | 
					version = "0.4.3"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905"
 | 
					checksum = "d979acc56dcb5b8dddba3917601745e877576475aa046df3226eabdecef78eed"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 "bytes 0.5.6",
 | 
				
			||||||
 "hyper",
 | 
					 "hyper",
 | 
				
			||||||
 "native-tls",
 | 
					 "native-tls",
 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-native-tls",
 | 
					 "tokio-tls",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -1978,7 +1958,7 @@ version = "0.2.2"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7"
 | 
					checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "socket2 0.3.19",
 | 
					 "socket2",
 | 
				
			||||||
 "widestring",
 | 
					 "widestring",
 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 "winapi 0.3.9",
 | 
				
			||||||
 "winreg 0.6.2",
 | 
					 "winreg 0.6.2",
 | 
				
			||||||
@ -2217,25 +2197,12 @@ dependencies = [
 | 
				
			|||||||
 "kernel32-sys",
 | 
					 "kernel32-sys",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "miow 0.2.2",
 | 
					 "miow",
 | 
				
			||||||
 "net2",
 | 
					 "net2",
 | 
				
			||||||
 "slab",
 | 
					 "slab",
 | 
				
			||||||
 "winapi 0.2.8",
 | 
					 "winapi 0.2.8",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "mio"
 | 
					 | 
				
			||||||
version = "0.7.13"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "libc",
 | 
					 | 
				
			||||||
 "log",
 | 
					 | 
				
			||||||
 "miow 0.3.7",
 | 
					 | 
				
			||||||
 "ntapi",
 | 
					 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "mio-uds"
 | 
					name = "mio-uds"
 | 
				
			||||||
version = "0.6.8"
 | 
					version = "0.6.8"
 | 
				
			||||||
@ -2244,7 +2211,7 @@ checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "iovec",
 | 
					 "iovec",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "mio 0.6.23",
 | 
					 "mio",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -2259,15 +2226,6 @@ dependencies = [
 | 
				
			|||||||
 "ws2_32-sys",
 | 
					 "ws2_32-sys",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "miow"
 | 
					 | 
				
			||||||
version = "0.3.7"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "nanorand"
 | 
					name = "nanorand"
 | 
				
			||||||
version = "0.5.2"
 | 
					version = "0.5.2"
 | 
				
			||||||
@ -2335,15 +2293,6 @@ version = "0.3.0"
 | 
				
			|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
 | 
					checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "ntapi"
 | 
					 | 
				
			||||||
version = "0.3.6"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "num-integer"
 | 
					name = "num-integer"
 | 
				
			||||||
version = "0.1.44"
 | 
					version = "0.1.44"
 | 
				
			||||||
@ -2812,7 +2761,7 @@ dependencies = [
 | 
				
			|||||||
 "tempdir",
 | 
					 "tempdir",
 | 
				
			||||||
 "test_bin",
 | 
					 "test_bin",
 | 
				
			||||||
 "thiserror",
 | 
					 "thiserror",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "tracing",
 | 
					 "tracing",
 | 
				
			||||||
 "tracing-actix-web",
 | 
					 "tracing-actix-web",
 | 
				
			||||||
 "tracing-opentelemetry",
 | 
					 "tracing-opentelemetry",
 | 
				
			||||||
@ -3171,12 +3120,12 @@ dependencies = [
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "reqwest"
 | 
					name = "reqwest"
 | 
				
			||||||
version = "0.11.4"
 | 
					version = "0.10.10"
 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22"
 | 
					checksum = "0718f81a8e14c4dbb3b34cf23dc6aaf9ab8a0dfec160c534b3dbca1aaa21f47c"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "base64 0.13.0",
 | 
					 "base64 0.13.0",
 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 "bytes 0.5.6",
 | 
				
			||||||
 "cookie",
 | 
					 "cookie",
 | 
				
			||||||
 "cookie_store",
 | 
					 "cookie_store",
 | 
				
			||||||
 "encoding_rs",
 | 
					 "encoding_rs",
 | 
				
			||||||
@ -3191,14 +3140,15 @@ dependencies = [
 | 
				
			|||||||
 "lazy_static",
 | 
					 "lazy_static",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "mime",
 | 
					 "mime",
 | 
				
			||||||
 | 
					 "mime_guess",
 | 
				
			||||||
 "native-tls",
 | 
					 "native-tls",
 | 
				
			||||||
 "percent-encoding",
 | 
					 "percent-encoding",
 | 
				
			||||||
 "pin-project-lite 0.2.7",
 | 
					 "pin-project-lite 0.2.7",
 | 
				
			||||||
 "serde",
 | 
					 "serde",
 | 
				
			||||||
 "serde_urlencoded",
 | 
					 "serde_urlencoded",
 | 
				
			||||||
 "time 0.2.27",
 | 
					 "time 0.2.27",
 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-native-tls",
 | 
					 "tokio-tls",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
 "wasm-bindgen",
 | 
					 "wasm-bindgen",
 | 
				
			||||||
 "wasm-bindgen-futures",
 | 
					 "wasm-bindgen-futures",
 | 
				
			||||||
@ -3569,16 +3519,6 @@ dependencies = [
 | 
				
			|||||||
 "winapi 0.3.9",
 | 
					 "winapi 0.3.9",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "socket2"
 | 
					 | 
				
			||||||
version = "0.4.0"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "libc",
 | 
					 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "spin"
 | 
					name = "spin"
 | 
				
			||||||
version = "0.5.2"
 | 
					version = "0.5.2"
 | 
				
			||||||
@ -3694,7 +3634,7 @@ dependencies = [
 | 
				
			|||||||
 "actix-rt",
 | 
					 "actix-rt",
 | 
				
			||||||
 "actix-threadpool",
 | 
					 "actix-threadpool",
 | 
				
			||||||
 "once_cell",
 | 
					 "once_cell",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "tokio-rustls",
 | 
					 "tokio-rustls",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4023,12 +3963,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			|||||||
checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092"
 | 
					checksum = "6703a273949a90131b290be1fe7b039d0fc884aa1935860dfcbe056f28cd8092"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "bytes 0.5.6",
 | 
					 "bytes 0.5.6",
 | 
				
			||||||
 | 
					 "fnv",
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "iovec",
 | 
					 "iovec",
 | 
				
			||||||
 "lazy_static",
 | 
					 "lazy_static",
 | 
				
			||||||
 "libc",
 | 
					 "libc",
 | 
				
			||||||
 "memchr",
 | 
					 "memchr",
 | 
				
			||||||
 "mio 0.6.23",
 | 
					 "mio",
 | 
				
			||||||
 "mio-uds",
 | 
					 "mio-uds",
 | 
				
			||||||
 "num_cpus",
 | 
					 "num_cpus",
 | 
				
			||||||
 "pin-project-lite 0.1.12",
 | 
					 "pin-project-lite 0.1.12",
 | 
				
			||||||
@ -4038,21 +3979,6 @@ dependencies = [
 | 
				
			|||||||
 "winapi 0.3.9",
 | 
					 "winapi 0.3.9",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "tokio"
 | 
					 | 
				
			||||||
version = "1.8.1"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "98c8b05dc14c75ea83d63dd391100353789f5f24b8b3866542a5e85c8be8e985"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "autocfg 1.0.1",
 | 
					 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 | 
				
			||||||
 "libc",
 | 
					 | 
				
			||||||
 "memchr",
 | 
					 | 
				
			||||||
 "mio 0.7.13",
 | 
					 | 
				
			||||||
 "pin-project-lite 0.2.7",
 | 
					 | 
				
			||||||
 "winapi 0.3.9",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio-macros"
 | 
					name = "tokio-macros"
 | 
				
			||||||
version = "0.2.6"
 | 
					version = "0.2.6"
 | 
				
			||||||
@ -4064,16 +3990,6 @@ dependencies = [
 | 
				
			|||||||
 "syn",
 | 
					 "syn",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "tokio-native-tls"
 | 
					 | 
				
			||||||
version = "0.3.0"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "native-tls",
 | 
					 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio-rustls"
 | 
					name = "tokio-rustls"
 | 
				
			||||||
version = "0.14.1"
 | 
					version = "0.14.1"
 | 
				
			||||||
@ -4082,10 +3998,20 @@ checksum = "e12831b255bcfa39dc0436b01e19fea231a37db570686c06ee72c423479f889a"
 | 
				
			|||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "futures-core",
 | 
					 "futures-core",
 | 
				
			||||||
 "rustls",
 | 
					 "rustls",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "webpki",
 | 
					 "webpki",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[[package]]
 | 
				
			||||||
 | 
					name = "tokio-tls"
 | 
				
			||||||
 | 
					version = "0.3.1"
 | 
				
			||||||
 | 
					source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
				
			||||||
 | 
					checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					 "native-tls",
 | 
				
			||||||
 | 
					 "tokio",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "tokio-util"
 | 
					name = "tokio-util"
 | 
				
			||||||
version = "0.3.1"
 | 
					version = "0.3.1"
 | 
				
			||||||
@ -4097,21 +4023,7 @@ dependencies = [
 | 
				
			|||||||
 "futures-sink",
 | 
					 "futures-sink",
 | 
				
			||||||
 "log",
 | 
					 "log",
 | 
				
			||||||
 "pin-project-lite 0.1.12",
 | 
					 "pin-project-lite 0.1.12",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[[package]]
 | 
					 | 
				
			||||||
name = "tokio-util"
 | 
					 | 
				
			||||||
version = "0.6.7"
 | 
					 | 
				
			||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
					 | 
				
			||||||
checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592"
 | 
					 | 
				
			||||||
dependencies = [
 | 
					 | 
				
			||||||
 "bytes 1.0.1",
 | 
					 | 
				
			||||||
 "futures-core",
 | 
					 | 
				
			||||||
 "futures-sink",
 | 
					 | 
				
			||||||
 "log",
 | 
					 | 
				
			||||||
 "pin-project-lite 0.2.7",
 | 
					 | 
				
			||||||
 "tokio 1.8.1",
 | 
					 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
@ -4254,7 +4166,7 @@ dependencies = [
 | 
				
			|||||||
 "rand 0.7.3",
 | 
					 "rand 0.7.3",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
 "thiserror",
 | 
					 "thiserror",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "url",
 | 
					 "url",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -4273,7 +4185,7 @@ dependencies = [
 | 
				
			|||||||
 "resolv-conf",
 | 
					 "resolv-conf",
 | 
				
			||||||
 "smallvec",
 | 
					 "smallvec",
 | 
				
			||||||
 "thiserror",
 | 
					 "thiserror",
 | 
				
			||||||
 "tokio 0.2.25",
 | 
					 "tokio",
 | 
				
			||||||
 "trust-dns-proto",
 | 
					 "trust-dns-proto",
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -66,6 +66,7 @@ tokio = "0.2.25"
 | 
				
			|||||||
assert_cmd = "1.0.7"
 | 
					assert_cmd = "1.0.7"
 | 
				
			||||||
predicates = "2.0.0"
 | 
					predicates = "2.0.0"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[dev-dependencies.reqwest]
 | 
					[dev-dependencies.reqwest]
 | 
				
			||||||
features = ["cookies"]
 | 
					features = ["cookies"]
 | 
				
			||||||
version = "0.11.3"
 | 
					version = "0.10.10"
 | 
				
			||||||
 | 
				
			|||||||
@ -1,356 +1,404 @@
 | 
				
			|||||||
// use assert_cmd::prelude::*; // Add methods on commands
 | 
					use assert_cmd::prelude::*; // Add methods on commands
 | 
				
			||||||
// use predicates::prelude::*;
 | 
					use predicates::prelude::*;
 | 
				
			||||||
// use std::process::Command; // Used for writing assertions
 | 
					use std::{
 | 
				
			||||||
 | 
					    io::Read,
 | 
				
			||||||
 | 
					    process::{Child, Command},
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					use tempdir::TempDir; // Used for writing assertions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// use shared::datatypes::Secret;
 | 
					use shared::datatypes::Secret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #[test]
 | 
					#[test]
 | 
				
			||||||
// fn test_help_of_command_for_breaking_changes() {
 | 
					fn test_help_of_command_for_breaking_changes() {
 | 
				
			||||||
//     let output = test_bin::get_test_bin("pslink")
 | 
					    let output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed to start pslink");
 | 
					        .expect("Failed to start pslink");
 | 
				
			||||||
//     assert!(String::from_utf8_lossy(&output.stdout).contains("USAGE"));
 | 
					    assert!(String::from_utf8_lossy(&output.stdout).contains("USAGE"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let output = test_bin::get_test_bin("pslink")
 | 
					    let output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["--help"])
 | 
					        .args(&["--help"])
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed to start pslink");
 | 
					        .expect("Failed to start pslink");
 | 
				
			||||||
//     let outstring = String::from_utf8_lossy(&output.stdout);
 | 
					    let outstring = String::from_utf8_lossy(&output.stdout);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let args = &[
 | 
					    let args = &[
 | 
				
			||||||
//         "USAGE",
 | 
					        "USAGE",
 | 
				
			||||||
//         "-h",
 | 
					        "-h",
 | 
				
			||||||
//         "--help",
 | 
					        "--help",
 | 
				
			||||||
//         "-b",
 | 
					        "-b",
 | 
				
			||||||
//         "-e",
 | 
					        "-e",
 | 
				
			||||||
//         "-i",
 | 
					        "-i",
 | 
				
			||||||
//         "-p",
 | 
					        "-p",
 | 
				
			||||||
//         "-t",
 | 
					        "-t",
 | 
				
			||||||
//         "-u",
 | 
					        "-u",
 | 
				
			||||||
//         "runserver",
 | 
					        "runserver",
 | 
				
			||||||
//         "create-admin",
 | 
					        "create-admin",
 | 
				
			||||||
//         "generate-env",
 | 
					        "generate-env",
 | 
				
			||||||
//         "migrate-database",
 | 
					        "migrate-database",
 | 
				
			||||||
//         "help",
 | 
					        "help",
 | 
				
			||||||
//     ];
 | 
					    ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     for s in args {
 | 
					    for s in args {
 | 
				
			||||||
//         assert!(
 | 
					        assert!(
 | 
				
			||||||
//             outstring.contains(s),
 | 
					            outstring.contains(s),
 | 
				
			||||||
//             "{} was not found in the help - this is a breaking change",
 | 
					            "{} was not found in the help - this is a breaking change",
 | 
				
			||||||
//             s
 | 
					            s
 | 
				
			||||||
//         );
 | 
					        );
 | 
				
			||||||
//     }
 | 
					    }
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #[test]
 | 
					#[test]
 | 
				
			||||||
// fn test_generate_env() {
 | 
					fn test_generate_env() {
 | 
				
			||||||
//     use std::io::BufRead;
 | 
					    use std::io::BufRead;
 | 
				
			||||||
//     let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
					    let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
				
			||||||
//     let output = test_bin::get_test_bin("pslink")
 | 
					    let output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["generate-env", "--secret", "abcdefghijklmnopqrstuvw"])
 | 
					        .args(&["generate-env", "--secret", "abcdefghijklmnopqrstuvw"])
 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed to start pslink");
 | 
					        .expect("Failed to start pslink");
 | 
				
			||||||
//     let envfile = tmp_dir.path().join(".env");
 | 
					    let envfile = tmp_dir.path().join(".env");
 | 
				
			||||||
//     let dbfile = tmp_dir.path().join("links.db");
 | 
					    let dbfile = tmp_dir.path().join("links.db");
 | 
				
			||||||
//     println!("{}", envfile.display());
 | 
					    println!("{}", envfile.display());
 | 
				
			||||||
//     println!("{}", dbfile.display());
 | 
					    println!("{}", dbfile.display());
 | 
				
			||||||
//     println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
					    println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
				
			||||||
//     assert!(envfile.exists(), "No .env-file was created!");
 | 
					    assert!(envfile.exists(), "No .env-file was created!");
 | 
				
			||||||
//     assert!(dbfile.exists(), "No database-file was created!");
 | 
					    assert!(dbfile.exists(), "No database-file was created!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let envfile = std::fs::File::open(envfile).unwrap();
 | 
					    let envfile = std::fs::File::open(envfile).unwrap();
 | 
				
			||||||
//     let envcontent: Vec<Result<String, _>> = std::io::BufReader::new(envfile).lines().collect();
 | 
					    let envcontent: Vec<Result<String, _>> = std::io::BufReader::new(envfile).lines().collect();
 | 
				
			||||||
//     assert!(
 | 
					    assert!(
 | 
				
			||||||
//         envcontent
 | 
					        envcontent
 | 
				
			||||||
//             .iter()
 | 
					            .iter()
 | 
				
			||||||
//             .any(|s| s.as_ref().unwrap().starts_with("PSLINK_PORT=")),
 | 
					            .any(|s| s.as_ref().unwrap().starts_with("PSLINK_PORT=")),
 | 
				
			||||||
//         "Failed to find PSLINK_PORT in the generated .env file."
 | 
					        "Failed to find PSLINK_PORT in the generated .env file."
 | 
				
			||||||
//     );
 | 
					    );
 | 
				
			||||||
//     assert!(
 | 
					    assert!(
 | 
				
			||||||
//         envcontent
 | 
					        envcontent
 | 
				
			||||||
//             .iter()
 | 
					            .iter()
 | 
				
			||||||
//             .any(|s| s.as_ref().unwrap().starts_with("PSLINK_SECRET=")),
 | 
					            .any(|s| s.as_ref().unwrap().starts_with("PSLINK_SECRET=")),
 | 
				
			||||||
//         "Failed to find PSLINK_SECRET in the generated .env file."
 | 
					        "Failed to find PSLINK_SECRET in the generated .env file."
 | 
				
			||||||
//     );
 | 
					    );
 | 
				
			||||||
//     assert!(
 | 
					    assert!(
 | 
				
			||||||
//         !envcontent.iter().any(|s| {
 | 
					        !envcontent.iter().any(|s| {
 | 
				
			||||||
//             let r = s.as_ref().unwrap().contains("***SECRET***");
 | 
					            let r = s.as_ref().unwrap().contains("***SECRET***");
 | 
				
			||||||
//             r
 | 
					            r
 | 
				
			||||||
//         }),
 | 
					        }),
 | 
				
			||||||
//         "It seems that a censored secret was used in the .env file."
 | 
					        "It seems that a censored secret was used in the .env file."
 | 
				
			||||||
//     );
 | 
					    );
 | 
				
			||||||
//     assert!(
 | 
					    assert!(
 | 
				
			||||||
//         envcontent.iter().any(|s| {
 | 
					        envcontent.iter().any(|s| {
 | 
				
			||||||
//             let r = s.as_ref().unwrap().contains("abcdefghijklmnopqrstuvw");
 | 
					            let r = s.as_ref().unwrap().contains("abcdefghijklmnopqrstuvw");
 | 
				
			||||||
//             r
 | 
					            r
 | 
				
			||||||
//         }),
 | 
					        }),
 | 
				
			||||||
//         "The secret has not made it into the .env file!"
 | 
					        "The secret has not made it into the .env file!"
 | 
				
			||||||
//     );
 | 
					    );
 | 
				
			||||||
//     let output = test_bin::get_test_bin("pslink")
 | 
					    let output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["generate-env"])
 | 
					        .args(&["generate-env"])
 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed to start pslink");
 | 
					        .expect("Failed to start pslink");
 | 
				
			||||||
//     let second_out = String::from_utf8_lossy(&output.stdout);
 | 
					    let second_out = String::from_utf8_lossy(&output.stdout);
 | 
				
			||||||
//     assert!(!second_out.contains("secret"));
 | 
					    assert!(!second_out.contains("secret"));
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #[actix_rt::test]
 | 
					#[actix_rt::test]
 | 
				
			||||||
// async fn test_migrate_database() {
 | 
					async fn test_migrate_database() {
 | 
				
			||||||
//     use std::io::Write;
 | 
					    use std::io::Write;
 | 
				
			||||||
//     #[derive(serde::Serialize, Debug)]
 | 
					    #[derive(serde::Serialize, Debug)]
 | 
				
			||||||
//     pub struct Count {
 | 
					    pub struct Count {
 | 
				
			||||||
//         pub number: i32,
 | 
					        pub number: i32,
 | 
				
			||||||
//     }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
					    let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
				
			||||||
//     // generate .env file
 | 
					    // generate .env file
 | 
				
			||||||
//     let _output = test_bin::get_test_bin("pslink")
 | 
					    let _output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["generate-env"])
 | 
					        .args(&["generate-env"])
 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed generate .env");
 | 
					        .expect("Failed generate .env");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // migrate the database
 | 
					    // migrate the database
 | 
				
			||||||
//     let output = test_bin::get_test_bin("pslink")
 | 
					    let output = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["migrate-database"])
 | 
					        .args(&["migrate-database"])
 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .output()
 | 
					        .output()
 | 
				
			||||||
//         .expect("Failed to migrate the database");
 | 
					        .expect("Failed to migrate the database");
 | 
				
			||||||
//     println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
					    println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // check if the users table exists by counting the number of admins.
 | 
					    // check if the users table exists by counting the number of admins.
 | 
				
			||||||
//     let db_pool = sqlx::pool::Pool::<sqlx::sqlite::Sqlite>::connect(
 | 
					    let db_pool = sqlx::pool::Pool::<sqlx::sqlite::Sqlite>::connect(
 | 
				
			||||||
//         &tmp_dir.path().join("links.db").display().to_string(),
 | 
					        &tmp_dir.path().join("links.db").display().to_string(),
 | 
				
			||||||
//     )
 | 
					    )
 | 
				
			||||||
//     .await
 | 
					    .await
 | 
				
			||||||
//     .expect("Error: Failed to connect to database!");
 | 
					    .expect("Error: Failed to connect to database!");
 | 
				
			||||||
//     let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
					    let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
				
			||||||
//         .fetch_one(&db_pool)
 | 
					        .fetch_one(&db_pool)
 | 
				
			||||||
//         .await
 | 
					        .await
 | 
				
			||||||
//         .unwrap();
 | 
					        .unwrap();
 | 
				
			||||||
//     // initially no admin is present
 | 
					    // initially no admin is present
 | 
				
			||||||
//     assert_eq!(num.number, 0, "Failed to create the database!");
 | 
					    assert_eq!(num.number, 0, "Failed to create the database!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // create a new admin
 | 
					    // create a new admin
 | 
				
			||||||
//     let mut input = test_bin::get_test_bin("pslink")
 | 
					    let mut input = test_bin::get_test_bin("pslink")
 | 
				
			||||||
//         .args(&["create-admin"])
 | 
					        .args(&["create-admin"])
 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .stdin(std::process::Stdio::piped())
 | 
					        .stdin(std::process::Stdio::piped())
 | 
				
			||||||
//         .stdout(std::process::Stdio::piped())
 | 
					        .stdout(std::process::Stdio::piped())
 | 
				
			||||||
//         .spawn()
 | 
					        .spawn()
 | 
				
			||||||
//         .expect("Failed to migrate the database");
 | 
					        .expect("Failed to migrate the database");
 | 
				
			||||||
//     let mut procin = input.stdin.take().unwrap();
 | 
					    let mut procin = input.stdin.take().unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     procin.write_all(b"test\n").unwrap();
 | 
					    procin.write_all(b"test\n").unwrap();
 | 
				
			||||||
//     procin.write_all(b"test@mail.test\n").unwrap();
 | 
					    procin.write_all(b"test@mail.test\n").unwrap();
 | 
				
			||||||
//     procin.write_all(b"testpw\n").unwrap();
 | 
					    procin.write_all(b"testpw\n").unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let r = input.wait().unwrap();
 | 
					    let r = input.wait().unwrap();
 | 
				
			||||||
//     println!("Exitstatus is: {}", r);
 | 
					    println!("Exitstatus is: {}", r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
					    println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
				
			||||||
//     let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
					    let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
				
			||||||
//         .fetch_one(&db_pool)
 | 
					        .fetch_one(&db_pool)
 | 
				
			||||||
//         .await
 | 
					        .await
 | 
				
			||||||
//         .unwrap();
 | 
					        .unwrap();
 | 
				
			||||||
//     // now 1 admin is there
 | 
					    // now 1 admin is there
 | 
				
			||||||
//     assert_eq!(num.number, 1, "Failed to create an admin!");
 | 
					    assert_eq!(num.number, 1, "Failed to create an admin!");
 | 
				
			||||||
// }
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// async fn run_server() {
 | 
					struct RunningServer {
 | 
				
			||||||
//     use std::io::Write;
 | 
					    server: Child,
 | 
				
			||||||
//     #[derive(serde::Serialize, Debug)]
 | 
					    port: i32,
 | 
				
			||||||
//     pub struct Count {
 | 
					    dir: TempDir,
 | 
				
			||||||
//         pub number: i32,
 | 
					}
 | 
				
			||||||
//     }
 | 
					 | 
				
			||||||
//     let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
					 | 
				
			||||||
//     // generate .env file
 | 
					 | 
				
			||||||
//     let _output = Command::cargo_bin("pslink")
 | 
					 | 
				
			||||||
//         .expect("Failed to get binary executable")
 | 
					 | 
				
			||||||
//         .args(&["generate-env", "--secret", "abcdefghijklmnopqrstuvw"])
 | 
					 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					 | 
				
			||||||
//         .output()
 | 
					 | 
				
			||||||
//         .expect("Failed generate .env");
 | 
					 | 
				
			||||||
//     // migrate the database
 | 
					 | 
				
			||||||
//     let output = Command::cargo_bin("pslink")
 | 
					 | 
				
			||||||
//         .args(&["migrate-database"])
 | 
					 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					 | 
				
			||||||
//         .output()
 | 
					 | 
				
			||||||
//         .expect("Failed to migrate the database");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // create a database connection.
 | 
					impl Drop for RunningServer {
 | 
				
			||||||
//     let db_pool = sqlx::pool::Pool::<sqlx::sqlite::Sqlite>::connect(
 | 
					    fn drop(&mut self) {
 | 
				
			||||||
//         &tmp_dir.path().join("links.db").display().to_string(),
 | 
					        self.server.kill().unwrap();
 | 
				
			||||||
//     )
 | 
					    }
 | 
				
			||||||
//     .await
 | 
					}
 | 
				
			||||||
//     .expect("Error: Failed to connect to database!"); // create a new admin
 | 
					 | 
				
			||||||
//     let mut input = test_bin::get_test_bin("pslink")
 | 
					 | 
				
			||||||
//         .args(&["create-admin"])
 | 
					 | 
				
			||||||
//         .current_dir(&tmp_dir)
 | 
					 | 
				
			||||||
//         .stdin(std::process::Stdio::piped())
 | 
					 | 
				
			||||||
//         .stdout(std::process::Stdio::piped())
 | 
					 | 
				
			||||||
//         .spawn()
 | 
					 | 
				
			||||||
//         .expect("Failed to migrate the database");
 | 
					 | 
				
			||||||
//     let mut procin = input.stdin.take().unwrap();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     procin.write_all(b"test\n").unwrap();
 | 
					async fn run_server() -> RunningServer {
 | 
				
			||||||
//     procin.write_all(b"test@mail.test\n").unwrap();
 | 
					    use std::io::Write;
 | 
				
			||||||
//     procin.write_all(b"testpw\n").unwrap();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let r = input.wait().unwrap();
 | 
					    use rand::thread_rng;
 | 
				
			||||||
//     println!("Exitstatus is: {}", r);
 | 
					    use rand::Rng;
 | 
				
			||||||
 | 
					    let mut rng = thread_rng();
 | 
				
			||||||
 | 
					    let port = rng.gen_range(12000..20000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
					    #[derive(serde::Serialize, Debug)]
 | 
				
			||||||
//     let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
					    pub struct Count {
 | 
				
			||||||
//         .fetch_one(&db_pool)
 | 
					        pub number: i32,
 | 
				
			||||||
//         .await
 | 
					    }
 | 
				
			||||||
//         .unwrap();
 | 
					    let tmp_dir = tempdir::TempDir::new("pslink_test_env").expect("create temp dir");
 | 
				
			||||||
//     // now 1 admin is there
 | 
					    // generate .env file
 | 
				
			||||||
//     assert_eq!(
 | 
					    let _output = Command::cargo_bin("pslink")
 | 
				
			||||||
//         num.number, 1,
 | 
					        .expect("Failed to get binary executable")
 | 
				
			||||||
//         "Failed to create an admin! See previous tests!"
 | 
					        .args(&[
 | 
				
			||||||
//     );
 | 
					            "generate-env",
 | 
				
			||||||
 | 
					            "--secret",
 | 
				
			||||||
 | 
					            "abcdefghijklmnopqrstuvw",
 | 
				
			||||||
 | 
					            "--port",
 | 
				
			||||||
 | 
					            &port.to_string(),
 | 
				
			||||||
 | 
					        ])
 | 
				
			||||||
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
 | 
					        .output()
 | 
				
			||||||
 | 
					        .expect("Failed generate .env");
 | 
				
			||||||
 | 
					    // migrate the database
 | 
				
			||||||
 | 
					    let output = Command::cargo_bin("pslink")
 | 
				
			||||||
 | 
					        .unwrap()
 | 
				
			||||||
 | 
					        .args(&["migrate-database"])
 | 
				
			||||||
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
 | 
					        .output()
 | 
				
			||||||
 | 
					        .expect("Failed to migrate the database");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let server_config = pslink::ServerConfig {
 | 
					    // create a database connection.
 | 
				
			||||||
//         secret: Secret::new("abcdefghijklmnopqrstuvw".to_string()),
 | 
					    let db_pool = sqlx::pool::Pool::<sqlx::sqlite::Sqlite>::connect(
 | 
				
			||||||
//         db: std::path::PathBuf::from("links.db"),
 | 
					        &tmp_dir.path().join("links.db").display().to_string(),
 | 
				
			||||||
//         db_pool,
 | 
					    )
 | 
				
			||||||
//         public_url: "localhost:8080".to_string(),
 | 
					    .await
 | 
				
			||||||
//         internal_ip: "localhost".to_string(),
 | 
					    .expect("Error: Failed to connect to database!"); // create a new admin
 | 
				
			||||||
//         port: 8080,
 | 
					    let mut input = Command::cargo_bin("pslink")
 | 
				
			||||||
//         protocol: pslink::Protocol::Http,
 | 
					        .unwrap()
 | 
				
			||||||
//         empty_forward_url: "https://github.com/enaut/pslink".to_string(),
 | 
					        .args(&["create-admin"])
 | 
				
			||||||
//         brand_name: "Pslink".to_string(),
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//     };
 | 
					        .stdin(std::process::Stdio::piped())
 | 
				
			||||||
 | 
					        .stdout(std::process::Stdio::piped())
 | 
				
			||||||
 | 
					        .spawn()
 | 
				
			||||||
 | 
					        .expect("Failed to migrate the database");
 | 
				
			||||||
 | 
					    let mut procin = input.stdin.take().unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let server = pslink::main::webservice(server_config);
 | 
					    procin.write_all(b"test\n").unwrap();
 | 
				
			||||||
 | 
					    procin.write_all(b"test@mail.test\n").unwrap();
 | 
				
			||||||
 | 
					    procin.write_all(b"testpw\n").unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     let _neveruse = tokio::spawn(server);
 | 
					    let r = input.wait().unwrap();
 | 
				
			||||||
// }
 | 
					    println!("Exitstatus is: {}", r);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// #[actix_rt::test]
 | 
					    println!("{}", String::from_utf8_lossy(&output.stdout));
 | 
				
			||||||
// async fn test_web_paths() {
 | 
					    let num = sqlx::query_as!(Count, "select count(*) as number from users where role = 2")
 | 
				
			||||||
//     run_server().await;
 | 
					        .fetch_one(&db_pool)
 | 
				
			||||||
 | 
					        .await
 | 
				
			||||||
 | 
					        .unwrap();
 | 
				
			||||||
 | 
					    // now 1 admin is there
 | 
				
			||||||
 | 
					    assert_eq!(
 | 
				
			||||||
 | 
					        num.number, 1,
 | 
				
			||||||
 | 
					        "Failed to create an admin! See previous tests!"
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // We need to bring in `reqwest`
 | 
					    let mut server = Command::cargo_bin("pslink")
 | 
				
			||||||
//     // to perform HTTP requests against our application.
 | 
					        .unwrap()
 | 
				
			||||||
//     let client = reqwest::Client::builder()
 | 
					        .args(&["runserver"])
 | 
				
			||||||
//         .cookie_store(true)
 | 
					        .current_dir(&tmp_dir)
 | 
				
			||||||
//         .redirect(reqwest::redirect::Policy::none())
 | 
					        .stdout(std::process::Stdio::piped())
 | 
				
			||||||
//         .build()
 | 
					        .spawn()
 | 
				
			||||||
//         .unwrap();
 | 
					        .unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // Act
 | 
					    // Wait until the server signals it is up and running.
 | 
				
			||||||
//     let response = client
 | 
					    let mut sout = server.stdout.take().unwrap();
 | 
				
			||||||
//         .get("http://localhost:8080/")
 | 
					    let mut buffer = [0; 15];
 | 
				
			||||||
//         .send()
 | 
					    println!("Running the webserver for testing #############");
 | 
				
			||||||
//         .await
 | 
					    loop {
 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					        let num = sout.read(&mut buffer[..]).unwrap();
 | 
				
			||||||
 | 
					        println!("{}", num);
 | 
				
			||||||
 | 
					        let t = std::str::from_utf8(&buffer).unwrap();
 | 
				
			||||||
 | 
					        println!("{:?}", std::str::from_utf8(&buffer));
 | 
				
			||||||
 | 
					        if num > 0 && t.contains("/app") {
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // The basic redirection is working!
 | 
					    RunningServer {
 | 
				
			||||||
//     assert!(response.status().is_redirection());
 | 
					        server,
 | 
				
			||||||
//     let location = response.headers().get("location").unwrap();
 | 
					        port,
 | 
				
			||||||
//     assert!(location.to_str().unwrap().contains("github"));
 | 
					        dir: tmp_dir,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // Act
 | 
					#[actix_rt::test]
 | 
				
			||||||
//     let response = client
 | 
					async fn test_web_paths() {
 | 
				
			||||||
//         .get("http://localhost:8080/admin/login/")
 | 
					    let mut server = run_server().await;
 | 
				
			||||||
//         .send()
 | 
					 | 
				
			||||||
//         .await
 | 
					 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // The Loginpage is reachable and contains a password field!
 | 
					    // We need to bring in `reqwest`
 | 
				
			||||||
//     assert!(response.status().is_success());
 | 
					    // to perform HTTP requests against our application.
 | 
				
			||||||
//     let content = response.text().await.unwrap();
 | 
					    let client = reqwest::Client::builder()
 | 
				
			||||||
//     assert!(
 | 
					        .cookie_store(true)
 | 
				
			||||||
//         content.contains(r#"<input type="password"#),
 | 
					        .redirect(reqwest::redirect::Policy::none())
 | 
				
			||||||
//         "No password field was found!"
 | 
					        .build()
 | 
				
			||||||
//     );
 | 
					        .unwrap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // Act
 | 
					    let base_url = "http://localhost:".to_string() + &server.port.to_string() + "/";
 | 
				
			||||||
//     let formdata = &[("username", "test"), ("password", "testpw")];
 | 
					    println!("{}", base_url);
 | 
				
			||||||
//     let response = client
 | 
					 | 
				
			||||||
//         .post("http://localhost:8080/admin/login/")
 | 
					 | 
				
			||||||
//         .form(formdata)
 | 
					 | 
				
			||||||
//         .send()
 | 
					 | 
				
			||||||
//         .await
 | 
					 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // It is possible to login
 | 
					    // Act
 | 
				
			||||||
//     assert!(response.status().is_redirection());
 | 
					    let response = client
 | 
				
			||||||
//     let location = response.headers().get("location").unwrap();
 | 
					        .get(&base_url.clone())
 | 
				
			||||||
//     assert_eq!("/admin/index/", location.to_str().unwrap());
 | 
					        .send()
 | 
				
			||||||
//     assert!(
 | 
					        .await
 | 
				
			||||||
//         response.headers().get("set-cookie").is_some(),
 | 
					        .expect("Failed to execute request.");
 | 
				
			||||||
//         "A auth cookie is not set even though authentication succeeds"
 | 
					 | 
				
			||||||
//     );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // After login this should return a redirect
 | 
					    // // The basic redirection is working!
 | 
				
			||||||
//     let response = client
 | 
					    // assert!(response.status().is_redirection());
 | 
				
			||||||
//         .get("http://localhost:8080/admin/login/")
 | 
					    // let location = response.headers().get("location").unwrap();
 | 
				
			||||||
//         .send()
 | 
					    // assert!(location.to_str().unwrap().contains("github"));
 | 
				
			||||||
//         .await
 | 
					 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // The Loginpage redirects to link index when logged in
 | 
					    // let login_url = base_url.clone() + "/admin/login/";
 | 
				
			||||||
//     assert!(
 | 
					    // // Act
 | 
				
			||||||
//         response.status().is_redirection(),
 | 
					    // let response = client
 | 
				
			||||||
//         "/admin/login/ is not redirecting correctly when logged in!"
 | 
					    //     .get(login_url.clone())
 | 
				
			||||||
//     );
 | 
					    //     .send()
 | 
				
			||||||
//     let location = response.headers().get("location").unwrap();
 | 
					    //     .await
 | 
				
			||||||
//     assert_eq!("/admin/index/", location.to_str().unwrap());
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // After login this should return a redirect
 | 
					    // // The Loginpage is reachable and contains a password field!
 | 
				
			||||||
//     let response = client
 | 
					    // assert!(response.status().is_success());
 | 
				
			||||||
//         .get("http://localhost:8080/admin/index/")
 | 
					    // let content = response.text().await.unwrap();
 | 
				
			||||||
//         .send()
 | 
					    // assert!(
 | 
				
			||||||
//         .await
 | 
					    //     content.contains(r#"<input type="password"#),
 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					    //     "No password field was found!"
 | 
				
			||||||
 | 
					    // );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // The Loginpage redirects to link index when logged in
 | 
					    // // Act
 | 
				
			||||||
//     assert!(
 | 
					    // let formdata = &[("username", "test"), ("password", "testpw")];
 | 
				
			||||||
//         response.status().is_success(),
 | 
					    // let response = client
 | 
				
			||||||
//         "Could not access /admin/index/"
 | 
					    //     .post(login_url)
 | 
				
			||||||
//     );
 | 
					    //     .form(formdata)
 | 
				
			||||||
//     let content = response.text().await.unwrap();
 | 
					    //     .send()
 | 
				
			||||||
//     assert!(
 | 
					    //     .await
 | 
				
			||||||
//         content.contains(r#"<a href="/admin/logout/">"#),
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
//         "No Logout Button was found on /admin/index/!"
 | 
					 | 
				
			||||||
//     );
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // Act title=haupt&target=http%3A%2F%2Fdas.geht%2Fjetzt%2F&code=tpuah
 | 
					    // // It is possible to login
 | 
				
			||||||
//     let formdata = &[
 | 
					    // assert!(response.status().is_redirection());
 | 
				
			||||||
//         ("title", "haupt"),
 | 
					    // let location = response.headers().get("location").unwrap();
 | 
				
			||||||
//         ("target", "https://das.geht/jetzt/"),
 | 
					    // assert_eq!("/admin/index/", location.to_str().unwrap());
 | 
				
			||||||
//         ("code", "tpuah"),
 | 
					    // assert!(
 | 
				
			||||||
//     ];
 | 
					    //     response.headers().get("set-cookie").is_some(),
 | 
				
			||||||
//     let response = client
 | 
					    //     "A auth cookie is not set even though authentication succeeds"
 | 
				
			||||||
//         .post("http://localhost:8080/admin/submit/")
 | 
					    // );
 | 
				
			||||||
//         .form(formdata)
 | 
					 | 
				
			||||||
//         .send()
 | 
					 | 
				
			||||||
//         .await
 | 
					 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // It is possible to login
 | 
					    // // After login this should return a redirect
 | 
				
			||||||
//     assert!(response.status().is_redirection());
 | 
					    // let response = client
 | 
				
			||||||
//     let location = response.headers().get("location").unwrap();
 | 
					    //     .get("http://localhost:8080/admin/login/")
 | 
				
			||||||
//     assert_eq!("/admin/view/link/tpuah", location.to_str().unwrap());
 | 
					    //     .send()
 | 
				
			||||||
 | 
					    //     .await
 | 
				
			||||||
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // Act
 | 
					    // // The Loginpage redirects to link index when logged in
 | 
				
			||||||
//     let response = client
 | 
					    // assert!(
 | 
				
			||||||
//         .get("http://localhost:8080/tpuah")
 | 
					    //     response.status().is_redirection(),
 | 
				
			||||||
//         .send()
 | 
					    //     "/admin/login/ is not redirecting correctly when logged in!"
 | 
				
			||||||
//         .await
 | 
					    // );
 | 
				
			||||||
//         .expect("Failed to execute request.");
 | 
					    // let location = response.headers().get("location").unwrap();
 | 
				
			||||||
 | 
					    // assert_eq!("/admin/index/", location.to_str().unwrap());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//     // The basic redirection is working!
 | 
					    // // After login this should return a redirect
 | 
				
			||||||
//     assert!(response.status().is_redirection());
 | 
					    // let response = client
 | 
				
			||||||
//     let location = response.headers().get("location").unwrap();
 | 
					    //     .get("http://localhost:8080/admin/index/")
 | 
				
			||||||
//     assert!(location
 | 
					    //     .send()
 | 
				
			||||||
//         .to_str()
 | 
					    //     .await
 | 
				
			||||||
//         .unwrap()
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
//         .contains("https://das.geht/jetzt/"));
 | 
					
 | 
				
			||||||
// }
 | 
					    // // The Loginpage redirects to link index when logged in
 | 
				
			||||||
 | 
					    // assert!(
 | 
				
			||||||
 | 
					    //     response.status().is_success(),
 | 
				
			||||||
 | 
					    //     "Could not access /admin/index/"
 | 
				
			||||||
 | 
					    // );
 | 
				
			||||||
 | 
					    // let content = response.text().await.unwrap();
 | 
				
			||||||
 | 
					    // assert!(
 | 
				
			||||||
 | 
					    //     content.contains(r#"<a href="/admin/logout/">"#),
 | 
				
			||||||
 | 
					    //     "No Logout Button was found on /admin/index/!"
 | 
				
			||||||
 | 
					    // );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // Act title=haupt&target=http%3A%2F%2Fdas.geht%2Fjetzt%2F&code=tpuah
 | 
				
			||||||
 | 
					    // let formdata = &[
 | 
				
			||||||
 | 
					    //     ("title", "haupt"),
 | 
				
			||||||
 | 
					    //     ("target", "https://das.geht/jetzt/"),
 | 
				
			||||||
 | 
					    //     ("code", "tpuah"),
 | 
				
			||||||
 | 
					    // ];
 | 
				
			||||||
 | 
					    // let response = client
 | 
				
			||||||
 | 
					    //     .post("http://localhost:8080/admin/submit/")
 | 
				
			||||||
 | 
					    //     .form(formdata)
 | 
				
			||||||
 | 
					    //     .send()
 | 
				
			||||||
 | 
					    //     .await
 | 
				
			||||||
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // It is possible to login
 | 
				
			||||||
 | 
					    // assert!(response.status().is_redirection());
 | 
				
			||||||
 | 
					    // let location = response.headers().get("location").unwrap();
 | 
				
			||||||
 | 
					    // assert_eq!("/admin/view/link/tpuah", location.to_str().unwrap());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // Act
 | 
				
			||||||
 | 
					    // let response = client
 | 
				
			||||||
 | 
					    //     .get("http://localhost:8080/tpuah")
 | 
				
			||||||
 | 
					    //     .send()
 | 
				
			||||||
 | 
					    //     .await
 | 
				
			||||||
 | 
					    //     .expect("Failed to execute request.");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // // The basic redirection is working!
 | 
				
			||||||
 | 
					    // assert!(response.status().is_redirection());
 | 
				
			||||||
 | 
					    // let location = response.headers().get("location").unwrap();
 | 
				
			||||||
 | 
					    // assert!(location
 | 
				
			||||||
 | 
					    //     .to_str()
 | 
				
			||||||
 | 
					    //     .unwrap()
 | 
				
			||||||
 | 
					    //     .contains("https://das.geht/jetzt/"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    drop(server);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user