]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Add tests of sql User-Profile processing
authorNick Porter <nick@portercomputing.co.uk>
Wed, 10 Apr 2024 14:43:29 +0000 (15:43 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 23 Apr 2024 09:47:05 +0000 (10:47 +0100)
24 files changed:
src/tests/modules/sql/groups_no_profiles.attrs [new file with mode: 0644]
src/tests/modules/sql/groups_no_profiles.unlang [new file with mode: 0644]
src/tests/modules/sql/groups_then_profiles.attrs [new file with mode: 0644]
src/tests/modules/sql/groups_then_profiles.unlang [new file with mode: 0644]
src/tests/modules/sql/profiles.attrs [new file with mode: 0644]
src/tests/modules/sql/profiles.unlang [new file with mode: 0644]
src/tests/modules/sql_mysql/groups_no_profiles.attrs [new symlink]
src/tests/modules/sql_mysql/groups_no_profiles.unlang [new symlink]
src/tests/modules/sql_mysql/groups_then_profiles.attrs [new symlink]
src/tests/modules/sql_mysql/groups_then_profiles.unlang [new symlink]
src/tests/modules/sql_mysql/profiles.attrs [new symlink]
src/tests/modules/sql_mysql/profiles.unlang [new symlink]
src/tests/modules/sql_postgresql/groups_no_profiles.attrs [new symlink]
src/tests/modules/sql_postgresql/groups_no_profiles.unlang [new symlink]
src/tests/modules/sql_postgresql/groups_then_profiles.attrs [new symlink]
src/tests/modules/sql_postgresql/groups_then_profiles.unlang [new symlink]
src/tests/modules/sql_postgresql/profiles.attrs [new symlink]
src/tests/modules/sql_postgresql/profiles.unlang [new symlink]
src/tests/modules/sql_sqlite/groups_no_profiles.attrs [new symlink]
src/tests/modules/sql_sqlite/groups_no_profiles.unlang [new symlink]
src/tests/modules/sql_sqlite/groups_then_profiles.attrs [new symlink]
src/tests/modules/sql_sqlite/groups_then_profiles.unlang [new symlink]
src/tests/modules/sql_sqlite/profiles.attrs [new symlink]
src/tests/modules/sql_sqlite/profiles.unlang [new symlink]

diff --git a/src/tests/modules/sql/groups_no_profiles.attrs b/src/tests/modules/sql/groups_no_profiles.attrs
new file mode 100644 (file)
index 0000000..e492437
--- /dev/null
@@ -0,0 +1,13 @@
+#
+#  Input packet
+#
+Packet-Type = Access-Request
+User-Name = "groups_no_profiles_user"
+User-Password = "secret"
+NAS-IP-Address = "1.2.3.4"
+
+#
+#  Expected answer
+#
+Packet-Type == Access-Accept
+Reply-Message == "Hello Groups User"
diff --git a/src/tests/modules/sql/groups_no_profiles.unlang b/src/tests/modules/sql/groups_no_profiles.unlang
new file mode 100644 (file)
index 0000000..32f1d37
--- /dev/null
@@ -0,0 +1,45 @@
+#
+#  Clear out old data
+#
+%sql("${delete_from_radcheck} 'groups_no_profiles_user'")
+%sql("${delete_from_radreply} 'groups_no_profiles_user'")
+
+%sql("DELETE FROM radusergroup WHERE username = 'groups_no_profiles_user'")
+
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'group_no_profile_a'")
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'group_no_profile_b'")
+
+%sql("DELETE FROM radgroupreply WHERE groupname = 'group_no_profile_a'")
+%sql("DELETE FROM radgroupreply WHERE groupname = 'group_no_profile_b'")
+
+#
+#  Insert new test data
+#
+%sql("${insert_into_radcheck} ('group_profile_user_a', 'Password.Cleartext', ':=', 'invalidsecret')")
+
+%sql("INSERT INTO radusergroup (username, groupname, priority) VALUES ('groups_no_profiles_user', 'group_no_profile_a', 200)")
+
+%sql("INSERT INTO radgroupcheck (groupname, attribute, op, value) VALUES ('group_no_profile_a', 'Password.Cleartext', ':=', 'secret')")
+%sql("INSERT INTO radgroupcheck (groupname, attribute, op, value) VALUES ('group_no_profile_a', 'User-Profile', ':=', 'group_profile_b')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('group_no_profile_a', 'Reply-Message', ':=', 'Hello Groups User')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('group_no_profile_a', 'Fall-Through', ':=', 'no')")
+
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('group_no_profile_b', 'Reply-Message', ':=', 'Hello Profile User')")
+
+#
+#  Run SQL
+#
+sql
+if (!updated) {
+       test_fail
+}
+
+if !(&control.Password.Cleartext == &User-Password) {
+       test_fail
+}
+
+if !(&reply.Reply-Message == "Hello Groups User") {
+       test_fail
+}
+
+test_pass
diff --git a/src/tests/modules/sql/groups_then_profiles.attrs b/src/tests/modules/sql/groups_then_profiles.attrs
new file mode 100644 (file)
index 0000000..d96ac70
--- /dev/null
@@ -0,0 +1,13 @@
+#
+#  Input packet
+#
+Packet-Type = Access-Request
+User-Name = "groups_profile_user_a"
+User-Password = "secret"
+NAS-IP-Address = "1.2.3.4"
+
+#
+#  Expected answer
+#
+Packet-Type == Access-Accept
+Reply-Message == "Hello User"
diff --git a/src/tests/modules/sql/groups_then_profiles.unlang b/src/tests/modules/sql/groups_then_profiles.unlang
new file mode 100644 (file)
index 0000000..70894f6
--- /dev/null
@@ -0,0 +1,44 @@
+#
+#  Clear out old data
+#
+%sql("${delete_from_radcheck} 'groups_profile_user_a'")
+%sql("${delete_from_radreply} 'groups_profile_user_a'")
+
+%sql("DELETE FROM radusergroup WHERE username = 'groups_profile_user_a'")
+
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'group_profile_a'")
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'group_profile_b'")
+
+%sql("DELETE FROM radgroupreply WHERE groupname = 'group_profile_a'")
+%sql("DELETE FROM radgroupreply WHERE groupname = 'group_profile_b'")
+
+#
+#  Insert new test data
+#
+%sql("${insert_into_radcheck} ('group_profile_user_a', 'Password.Cleartext', ':=', 'invalidsecret')")
+
+%sql("INSERT INTO radusergroup (username, groupname, priority) VALUES ('groups_profile_user_a', 'group_profile_a', 100)")
+
+%sql("INSERT INTO radgroupcheck (groupname, attribute, op, value) VALUES ('group_profile_a', 'Password.Cleartext', ':=', 'secret')")
+%sql("INSERT INTO radgroupcheck (groupname, attribute, op, value) VALUES ('group_profile_a', 'User-Profile', ':=', 'group_profile_b')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('group_profile_a', 'Reply-Message', ':=', 'Hello User A')")
+
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('group_profile_b', 'Reply-Message', ':=', 'Hello User')")
+
+#
+#  Run SQL
+#
+sql
+if (!updated) {
+       test_fail
+}
+
+if !(&control.Password.Cleartext == &User-Password) {
+       test_fail
+}
+
+if !(&reply.Reply-Message == "Hello User") {
+       test_fail
+}
+
+test_pass
diff --git a/src/tests/modules/sql/profiles.attrs b/src/tests/modules/sql/profiles.attrs
new file mode 100644 (file)
index 0000000..747ce26
--- /dev/null
@@ -0,0 +1,13 @@
+#
+#  Input packet
+#
+Packet-Type = Access-Request
+User-Name = "profile_user_a"
+User-Password = "secret"
+NAS-IP-Address = "1.2.3.4"
+
+#
+#  Expected answer
+#
+Packet-Type == Access-Accept
+Reply-Message == "Hello User"
diff --git a/src/tests/modules/sql/profiles.unlang b/src/tests/modules/sql/profiles.unlang
new file mode 100644 (file)
index 0000000..0b769b8
--- /dev/null
@@ -0,0 +1,45 @@
+#
+#  Clear out old data
+#
+%sql("${delete_from_radcheck} 'profile_user_a'")
+%sql("${delete_from_radreply} 'profile_user_a'")
+
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'profile_a'")
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'profile_b'")
+%sql("DELETE FROM radgroupcheck WHERE groupname = 'profile_c'")
+
+%sql("DELETE FROM radgroupreply WHERE groupname = 'profile_a'")
+%sql("DELETE FROM radgroupreply WHERE groupname = 'profile_b'")
+%sql("DELETE FROM radgroupreply WHERE groupname = 'profile_c'")
+
+#
+#  Insert new test data
+#
+%sql("${insert_into_radcheck} ('profile_user_a', 'Password.Cleartext', ':=', 'invalidsecret')")
+%sql("${insert_into_radcheck} ('profile_user_a', 'User-Profile', ':=', 'profile_a')")
+%sql("${insert_into_radcheck} ('profile_user_a', 'User-Profile', '+=', 'profile_b')")
+
+%sql("INSERT INTO radgroupcheck (groupname, attribute, op, value) VALUES ('profile_a', 'Password.Cleartext', ':=', 'secret')")
+
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('profile_a', 'Reply-Message', ':=', 'Hello User A')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('profile_a', 'Fall-Through', ':=', 'yes')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('profile_b', 'Reply-Message', ':=', 'Hello User')")
+%sql("INSERT INTO radgroupreply (groupname, attribute, op, value) VALUES ('profile_c', 'Reply-Message', ':=', 'Hello User B')")
+
+#
+#  Run SQL
+#
+sql
+if (!updated) {
+       test_fail
+}
+
+if !(&control.Password.Cleartext == &User-Password) {
+       test_fail
+}
+
+if !(&reply.Reply-Message == "Hello User") {
+       test_fail
+}
+
+test_pass
diff --git a/src/tests/modules/sql_mysql/groups_no_profiles.attrs b/src/tests/modules/sql_mysql/groups_no_profiles.attrs
new file mode 120000 (symlink)
index 0000000..430405d
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_mysql/groups_no_profiles.unlang b/src/tests/modules/sql_mysql/groups_no_profiles.unlang
new file mode 120000 (symlink)
index 0000000..24b41d4
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_mysql/groups_then_profiles.attrs b/src/tests/modules/sql_mysql/groups_then_profiles.attrs
new file mode 120000 (symlink)
index 0000000..59da30f
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_mysql/groups_then_profiles.unlang b/src/tests/modules/sql_mysql/groups_then_profiles.unlang
new file mode 120000 (symlink)
index 0000000..5df9d80
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_mysql/profiles.attrs b/src/tests/modules/sql_mysql/profiles.attrs
new file mode 120000 (symlink)
index 0000000..600a1de
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_mysql/profiles.unlang b/src/tests/modules/sql_mysql/profiles.unlang
new file mode 120000 (symlink)
index 0000000..b882ef0
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/groups_no_profiles.attrs b/src/tests/modules/sql_postgresql/groups_no_profiles.attrs
new file mode 120000 (symlink)
index 0000000..430405d
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/groups_no_profiles.unlang b/src/tests/modules/sql_postgresql/groups_no_profiles.unlang
new file mode 120000 (symlink)
index 0000000..24b41d4
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/groups_then_profiles.attrs b/src/tests/modules/sql_postgresql/groups_then_profiles.attrs
new file mode 120000 (symlink)
index 0000000..59da30f
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/groups_then_profiles.unlang b/src/tests/modules/sql_postgresql/groups_then_profiles.unlang
new file mode 120000 (symlink)
index 0000000..5df9d80
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/profiles.attrs b/src/tests/modules/sql_postgresql/profiles.attrs
new file mode 120000 (symlink)
index 0000000..600a1de
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_postgresql/profiles.unlang b/src/tests/modules/sql_postgresql/profiles.unlang
new file mode 120000 (symlink)
index 0000000..b882ef0
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/groups_no_profiles.attrs b/src/tests/modules/sql_sqlite/groups_no_profiles.attrs
new file mode 120000 (symlink)
index 0000000..430405d
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/groups_no_profiles.unlang b/src/tests/modules/sql_sqlite/groups_no_profiles.unlang
new file mode 120000 (symlink)
index 0000000..24b41d4
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_no_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/groups_then_profiles.attrs b/src/tests/modules/sql_sqlite/groups_then_profiles.attrs
new file mode 120000 (symlink)
index 0000000..59da30f
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/groups_then_profiles.unlang b/src/tests/modules/sql_sqlite/groups_then_profiles.unlang
new file mode 120000 (symlink)
index 0000000..5df9d80
--- /dev/null
@@ -0,0 +1 @@
+../sql/groups_then_profiles.unlang
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/profiles.attrs b/src/tests/modules/sql_sqlite/profiles.attrs
new file mode 120000 (symlink)
index 0000000..600a1de
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.attrs
\ No newline at end of file
diff --git a/src/tests/modules/sql_sqlite/profiles.unlang b/src/tests/modules/sql_sqlite/profiles.unlang
new file mode 120000 (symlink)
index 0000000..b882ef0
--- /dev/null
@@ -0,0 +1 @@
+../sql/profiles.unlang
\ No newline at end of file