Skip to content

Commit 98dce18

Browse files
committed
Add OpenDiffix.CLI test
figured out how to test main function add more tests Add a dummy testing project to kick off
1 parent 332296b commit 98dce18

File tree

5 files changed

+175
-1
lines changed

5 files changed

+175
-1
lines changed

DiffixReference.sln

+6
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenDiffix.Core.Tests", "sr
66
EndProject
77
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenDiffix.CLI", "src\OpenDiffix.CLI\OpenDiffix.CLI.fsproj", "{62F75DA8-12D4-4FFA-B778-E0DFD77F6AC8}"
88
EndProject
9+
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "OpenDiffix.CLI.Tests", "src\OpenDiffix.CLI.Tests\OpenDiffix.CLI.Tests.fsproj", "{7CF8FE82-2724-43D1-A025-226812EE2256}"
10+
EndProject
911
Global
1012
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1113
Debug|Any CPU = Debug|Any CPU
@@ -24,5 +26,9 @@ Global
2426
{62F75DA8-12D4-4FFA-B778-E0DFD77F6AC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
2527
{62F75DA8-12D4-4FFA-B778-E0DFD77F6AC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
2628
{62F75DA8-12D4-4FFA-B778-E0DFD77F6AC8}.Release|Any CPU.Build.0 = Release|Any CPU
29+
{7CF8FE82-2724-43D1-A025-226812EE2256}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30+
{7CF8FE82-2724-43D1-A025-226812EE2256}.Debug|Any CPU.Build.0 = Debug|Any CPU
31+
{7CF8FE82-2724-43D1-A025-226812EE2256}.Release|Any CPU.ActiveCfg = Release|Any CPU
32+
{7CF8FE82-2724-43D1-A025-226812EE2256}.Release|Any CPU.Build.0 = Release|Any CPU
2733
EndGlobalSection
2834
EndGlobal
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFramework>net5.0</TargetFramework>
4+
<IsPackable>false</IsPackable>
5+
<GenerateProgramFile>false</GenerateProgramFile>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<Compile Include="Program.Tests.fs" />
9+
<Compile Include="Program.fs" />
10+
</ItemGroup>
11+
<ItemGroup>
12+
<PackageReference Include="FsUnit.xUnit" Version="4.0.4" />
13+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
14+
<PackageReference Include="xunit" Version="2.4.1" />
15+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
16+
</ItemGroup>
17+
<ItemGroup>
18+
<ProjectReference Include="..\OpenDiffix.CLI\OpenDiffix.CLI.fsproj" />
19+
</ItemGroup>
20+
</Project>
+143
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
module OpenDiffix.CLI.ProgramTests
2+
3+
open Xunit
4+
open FsUnit.Xunit
5+
6+
open OpenDiffix.CLI.Program
7+
8+
[<Fact>]
9+
let ``Prints version`` () =
10+
let argv = [| "--version" |]
11+
12+
main argv |> should equal 0
13+
14+
[<Fact>]
15+
let ``Counts all rows`` () =
16+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
17+
18+
let argv = [| "-f"; dataDirectory; "--aid-columns"; "customers.id"; "-q"; "SELECT count(*) FROM customers" |]
19+
20+
main argv |> should equal 0
21+
22+
[<Fact>]
23+
let ``Counts all protected entities`` () =
24+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
25+
26+
let argv =
27+
[|
28+
"-f"
29+
dataDirectory
30+
"--aid-columns"
31+
"customers.id"
32+
"-q"
33+
"SELECT count(DISTINCT customers.id) FROM customers"
34+
|]
35+
36+
main argv |> should equal 0
37+
38+
[<Fact>]
39+
let ``Counts in non-anonymized tables`` () =
40+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
41+
42+
let argv =
43+
[|
44+
"-f"
45+
dataDirectory
46+
"--aid-columns"
47+
"customers.id"
48+
"-q"
49+
// note here that the aid column is on a different table
50+
"SELECT count(*) FROM purchases"
51+
|]
52+
53+
main argv |> should equal 0
54+
55+
[<Fact>]
56+
let ``Counts some buckets`` () =
57+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
58+
59+
let argv =
60+
[|
61+
"-f"
62+
dataDirectory
63+
"--aid-columns"
64+
"customers.id"
65+
"-q"
66+
"SELECT age, city, company_name, count(*) FROM customers GROUP BY age, city, company_name"
67+
|]
68+
69+
main argv |> should equal 0
70+
71+
[<Fact>]
72+
let ``Rejects invalid SQL`` () =
73+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
74+
75+
let argv =
76+
[|
77+
"-f"
78+
dataDirectory
79+
"--aid-columns"
80+
"customers.id"
81+
"-q"
82+
"SELECT no_such_column, count(*) FROM customers GROUP BY no_such_column"
83+
|]
84+
85+
main argv |> should equal 1
86+
87+
[<Fact>]
88+
let ``Rejects malformed SQL`` () =
89+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
90+
91+
let argv = [| "-f"; dataDirectory; "--aid-columns"; "customers.id"; "-q"; "foo" |]
92+
93+
main argv |> should equal 1
94+
95+
[<Fact>]
96+
let ``Guards against unknown params`` () =
97+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
98+
99+
let argv = [| "-f"; dataDirectory; "--foo"; "customers.id"; "-q"; "SELECT count(*) FROM customers" |]
100+
101+
main argv |> should equal 1
102+
103+
[<Fact>]
104+
let ``Accepts supported CLI parameters`` () =
105+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
106+
107+
let argv =
108+
[|
109+
"-f"
110+
dataDirectory
111+
"--salt"
112+
"1"
113+
"--json"
114+
"--outlier-count"
115+
"1"
116+
"2"
117+
"--top-count"
118+
"12"
119+
"14"
120+
"--low-threshold"
121+
"3"
122+
"--low-sd"
123+
"1.2"
124+
"--low-mean-gap"
125+
"1"
126+
"--noise-sd"
127+
"2.4"
128+
"--aid-columns"
129+
"customers.id"
130+
"-q"
131+
"SELECT count(*) FROM customers"
132+
|]
133+
134+
main argv |> should equal 0
135+
136+
[<Fact>]
137+
let ``Executes example batch query`` () =
138+
let dataDirectory = __SOURCE_DIRECTORY__ + "/../../data/data.sqlite"
139+
let batchDirectory = __SOURCE_DIRECTORY__ + "/../../queries-sample.json"
140+
141+
let argv = [| "-f"; dataDirectory; "--aid-columns"; "customers.id"; "--queries-path"; batchDirectory |]
142+
143+
main argv |> should equal 0

src/OpenDiffix.CLI.Tests/Program.fs

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module Program =
2+
[<EntryPoint>]
3+
let main _ = 0

src/OpenDiffix.CLI/Program.fs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
open System
1+
module OpenDiffix.CLI.Program
2+
3+
open System
24
open System.IO
35
open Argu
46
open OpenDiffix.CLI

0 commit comments

Comments
 (0)