From: Nick Porter Date: Wed, 10 Apr 2024 14:43:29 +0000 (+0100) Subject: Add tests of sql User-Profile processing X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=57901e1caa95ae90981c2da36baf58a4fcf45d5e;p=thirdparty%2Ffreeradius-server.git Add tests of sql User-Profile processing --- diff --git a/src/tests/modules/sql/groups_no_profiles.attrs b/src/tests/modules/sql/groups_no_profiles.attrs new file mode 100644 index 00000000000..e49243755cd --- /dev/null +++ b/src/tests/modules/sql/groups_no_profiles.attrs @@ -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 index 00000000000..32f1d37a3e2 --- /dev/null +++ b/src/tests/modules/sql/groups_no_profiles.unlang @@ -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 index 00000000000..d96ac7022fd --- /dev/null +++ b/src/tests/modules/sql/groups_then_profiles.attrs @@ -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 index 00000000000..70894f6b1a0 --- /dev/null +++ b/src/tests/modules/sql/groups_then_profiles.unlang @@ -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 index 00000000000..747ce261bbb --- /dev/null +++ b/src/tests/modules/sql/profiles.attrs @@ -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 index 00000000000..0b769b85fee --- /dev/null +++ b/src/tests/modules/sql/profiles.unlang @@ -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 index 00000000000..430405d6e94 --- /dev/null +++ b/src/tests/modules/sql_mysql/groups_no_profiles.attrs @@ -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 index 00000000000..24b41d4aceb --- /dev/null +++ b/src/tests/modules/sql_mysql/groups_no_profiles.unlang @@ -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 index 00000000000..59da30f7363 --- /dev/null +++ b/src/tests/modules/sql_mysql/groups_then_profiles.attrs @@ -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 index 00000000000..5df9d804b8a --- /dev/null +++ b/src/tests/modules/sql_mysql/groups_then_profiles.unlang @@ -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 index 00000000000..600a1de5311 --- /dev/null +++ b/src/tests/modules/sql_mysql/profiles.attrs @@ -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 index 00000000000..b882ef01d00 --- /dev/null +++ b/src/tests/modules/sql_mysql/profiles.unlang @@ -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 index 00000000000..430405d6e94 --- /dev/null +++ b/src/tests/modules/sql_postgresql/groups_no_profiles.attrs @@ -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 index 00000000000..24b41d4aceb --- /dev/null +++ b/src/tests/modules/sql_postgresql/groups_no_profiles.unlang @@ -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 index 00000000000..59da30f7363 --- /dev/null +++ b/src/tests/modules/sql_postgresql/groups_then_profiles.attrs @@ -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 index 00000000000..5df9d804b8a --- /dev/null +++ b/src/tests/modules/sql_postgresql/groups_then_profiles.unlang @@ -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 index 00000000000..600a1de5311 --- /dev/null +++ b/src/tests/modules/sql_postgresql/profiles.attrs @@ -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 index 00000000000..b882ef01d00 --- /dev/null +++ b/src/tests/modules/sql_postgresql/profiles.unlang @@ -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 index 00000000000..430405d6e94 --- /dev/null +++ b/src/tests/modules/sql_sqlite/groups_no_profiles.attrs @@ -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 index 00000000000..24b41d4aceb --- /dev/null +++ b/src/tests/modules/sql_sqlite/groups_no_profiles.unlang @@ -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 index 00000000000..59da30f7363 --- /dev/null +++ b/src/tests/modules/sql_sqlite/groups_then_profiles.attrs @@ -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 index 00000000000..5df9d804b8a --- /dev/null +++ b/src/tests/modules/sql_sqlite/groups_then_profiles.unlang @@ -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 index 00000000000..600a1de5311 --- /dev/null +++ b/src/tests/modules/sql_sqlite/profiles.attrs @@ -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 index 00000000000..b882ef01d00 --- /dev/null +++ b/src/tests/modules/sql_sqlite/profiles.unlang @@ -0,0 +1 @@ +../sql/profiles.unlang \ No newline at end of file