{"action":"created","comment":{"url":"https://api.github.com/repos/apereo/cas/pulls/comments/168409541","pull_request_review_id":96769349,"id":168409541,"diff_hunk":"@@ -0,0 +1,55 @@\n+package org.apereo.cas.config;\n+\n+import lombok.extern.slf4j.Slf4j;\n+import org.apereo.cas.adaptors.radius.RadiusServer;\n+import org.apereo.cas.configuration.CasConfigurationProperties;\n+import org.apereo.cas.services.ServicesManager;\n+import org.junit.Test;\n+import org.junit.runner.RunWith;\n+import org.springframework.beans.factory.annotation.Autowired;\n+import org.springframework.beans.factory.annotation.Qualifier;\n+import org.springframework.boot.test.context.SpringBootTest;\n+import org.springframework.boot.test.mock.mockito.MockBean;\n+import org.springframework.cloud.autoconfigure.RefreshAutoConfiguration;\n+import org.springframework.test.context.junit4.SpringRunner;\n+import org.springframework.test.context.TestPropertySource;\n+\n+import java.util.List;\n+\n+import static org.junit.Assert.*;\n+import static org.mockito.Mockito.*;\n+\n+/**\n+ * @author Jozef Kotlar\n+ * @since 5.3.0\n+ */\n+@RunWith(SpringRunner.class)\n+@SpringBootTest(classes={RadiusConfiguration.class, RefreshAutoConfiguration.class})\n+@TestPropertySource(locations = {\"classpath:/radius2.properties\"})\n+@Slf4j\n+public class RadiusConfigurationTests {\n+\n+    @MockBean\n+    @Qualifier(\"servicesManager\")\n+    private ServicesManager servicesManager;\n+\n+    @Autowired\n+    private CasConfigurationProperties casProperties;\n+\n+    @Autowired\n+    @Qualifier(\"radiusConfiguration\")\n+    private RadiusConfiguration radiusConfiguration;","path":"support/cas-server-support-radius/src/test/java/org/apereo/cas/config/RadiusConfigurationTests.java","position":43,"original_position":41,"commit_id":"0c58603ba412f6d5dc5d3d76f182a94123ff52bb","original_commit_id":"90c1c3d1ab1f0257ee386ffb96b07cb155fac187","user":{"login":"mmoayyed","id":1205228,"avatar_url":"https://avatars1.githubusercontent.com/u/1205228?v=4","gravatar_id":"","url":"https://api.github.com/users/mmoayyed","html_url":"https://github.com/mmoayyed","followers_url":"https://api.github.com/users/mmoayyed/followers","following_url":"https://api.github.com/users/mmoayyed/following{/other_user}","gists_url":"https://api.github.com/users/mmoayyed/gists{/gist_id}","starred_url":"https://api.github.com/users/mmoayyed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmoayyed/subscriptions","organizations_url":"https://api.github.com/users/mmoayyed/orgs","repos_url":"https://api.github.com/users/mmoayyed/repos","events_url":"https://api.github.com/users/mmoayyed/events{/privacy}","received_events_url":"https://api.github.com/users/mmoayyed/received_events","type":"User","site_admin":false},"body":"Cool. Not a showstopper for this patch of course, but it would be great if you could contribute in that area when time permits.\r\n\r\nThe process is somewhat simple:\r\n\r\n- When Travis CI starts, it will spin up a number of Docker images. You might need to find one based on freeradius that is configured with the essentials (i.e. protocol, client, secret, user accounts, etc). Then, you make sure Travis CI is able to start your container like it's done here for Couchbase:\r\nhttps://github.com/apereo/cas/blob/master/.travis.yml#L50\r\n\r\n- And you write a shell script that is able to start the freeradius docker container:\r\nhttps://github.com/apereo/cas/blob/master/ci/run-couchbase-server.sh\r\n\r\n- Finally, your test case will need to be just like any other test but it must be annotated with the following:\r\n\r\n```java\r\n@RunWith(ConditionalSpringRunner.class)\r\n@ConditionalIgnore(condition = RunningContinuousIntegrationCondition.class)\r\npublic class MyTests {\r\n...\r\n}\r\n```\r\n\r\nThis will make sure tests are only executed as part of Travis CI only. \r\n\r\nI should say that if you can find some sort of \"embedded\" free-radius server that can be started/stopped/configured programmatically, we can skip all the docker business and simply write normal tests...or just as well, if you can find a free cloud-based radiusserver that we can use a basic subscription for testing, that's fine too.\r\n\r\n","created_at":"2018-02-15T08:52:15Z","updated_at":"2018-02-15T08:52:15Z","html_url":"https://github.com/apereo/cas/pull/3204#discussion_r168409541","pull_request_url":"https://api.github.com/repos/apereo/cas/pulls/3204","author_association":"OWNER","_links":{"self":{"href":"https://api.github.com/repos/apereo/cas/pulls/comments/168409541"},"html":{"href":"https://github.com/apereo/cas/pull/3204#discussion_r168409541"},"pull_request":{"href":"https://api.github.com/repos/apereo/cas/pulls/3204"}},"in_reply_to_id":168110271},"pull_request":{"url":"https://api.github.com/repos/apereo/cas/pulls/3204","id":168981300,"html_url":"https://github.com/apereo/cas/pull/3204","diff_url":"https://github.com/apereo/cas/pull/3204.diff","patch_url":"https://github.com/apereo/cas/pull/3204.patch","issue_url":"https://api.github.com/repos/apereo/cas/issues/3204","number":3204,"state":"open","locked":false,"title":"support more RADIUS servers in client config","user":{"login":"dodok1","id":199430,"avatar_url":"https://avatars0.githubusercontent.com/u/199430?v=4","gravatar_id":"","url":"https://api.github.com/users/dodok1","html_url":"https://github.com/dodok1","followers_url":"https://api.github.com/users/dodok1/followers","following_url":"https://api.github.com/users/dodok1/following{/other_user}","gists_url":"https://api.github.com/users/dodok1/gists{/gist_id}","starred_url":"https://api.github.com/users/dodok1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dodok1/subscriptions","organizations_url":"https://api.github.com/users/dodok1/orgs","repos_url":"https://api.github.com/users/dodok1/repos","events_url":"https://api.github.com/users/dodok1/events{/privacy}","received_events_url":"https://api.github.com/users/dodok1/received_events","type":"User","site_admin":false},"body":"despite support for failover, there is not possibility to specify more servers\r\n\r\nchange enables to specify more IPs to \r\ncas.authn.mfa.radius.client.inetAddress separated by spaces \r\nalong with\r\n    cas.authn.mfa.radius.failoverOnException=true\r\nthis provides failover servers\r\n\r\n<!--\r\n\r\n# Contributing\r\n\r\nFirst off, thank you for considering to contribute to CAS. \r\n\r\n# Details\r\n\r\nCloses #IssueNumber\r\n\r\nEnsure that you include the following:\r\n\r\n- [] Brief description of changes applied\r\n- [] Any documentation on how to configure, test\r\n- [] Any possible limitations, side effects, etc\r\n- [] Reference any other pull requests that might be related.\r\n\r\n-->\r\n","created_at":"2018-02-13T23:07:32Z","updated_at":"2018-02-15T08:52:15Z","closed_at":null,"merged_at":null,"merge_commit_sha":"22155d7442d0387f3e0a0e6e610cd4504e2ac387","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":806591397,"url":"https://api.github.com/repos/apereo/cas/labels/Pending","name":"Pending","color":"fbca04","default":false}],"milestone":{"url":"https://api.github.com/repos/apereo/cas/milestones/73","html_url":"https://github.com/apereo/cas/milestone/73","labels_url":"https://api.github.com/repos/apereo/cas/milestones/73/labels","id":2941041,"number":73,"title":"5.3.0-RC3","description":"Feature Release Candidate","creator":{"login":"mmoayyed","id":1205228,"avatar_url":"https://avatars1.githubusercontent.com/u/1205228?v=4","gravatar_id":"","url":"https://api.github.com/users/mmoayyed","html_url":"https://github.com/mmoayyed","followers_url":"https://api.github.com/users/mmoayyed/followers","following_url":"https://api.github.com/users/mmoayyed/following{/other_user}","gists_url":"https://api.github.com/users/mmoayyed/gists{/gist_id}","starred_url":"https://api.github.com/users/mmoayyed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmoayyed/subscriptions","organizations_url":"https://api.github.com/users/mmoayyed/orgs","repos_url":"https://api.github.com/users/mmoayyed/repos","events_url":"https://api.github.com/users/mmoayyed/events{/privacy}","received_events_url":"https://api.github.com/users/mmoayyed/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":3,"state":"open","created_at":"2017-11-27T19:05:06Z","updated_at":"2018-02-14T19:43:03Z","due_on":"2018-03-30T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/apereo/cas/pulls/3204/commits","review_comments_url":"https://api.github.com/repos/apereo/cas/pulls/3204/comments","review_comment_url":"https://api.github.com/repos/apereo/cas/pulls/comments{/number}","comments_url":"https://api.github.com/repos/apereo/cas/issues/3204/comments","statuses_url":"https://api.github.com/repos/apereo/cas/statuses/0c58603ba412f6d5dc5d3d76f182a94123ff52bb","head":{"label":"dodok1:feature/radius-failover","ref":"feature/radius-failover","sha":"0c58603ba412f6d5dc5d3d76f182a94123ff52bb","user":{"login":"dodok1","id":199430,"avatar_url":"https://avatars0.githubusercontent.com/u/199430?v=4","gravatar_id":"","url":"https://api.github.com/users/dodok1","html_url":"https://github.com/dodok1","followers_url":"https://api.github.com/users/dodok1/followers","following_url":"https://api.github.com/users/dodok1/following{/other_user}","gists_url":"https://api.github.com/users/dodok1/gists{/gist_id}","starred_url":"https://api.github.com/users/dodok1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dodok1/subscriptions","organizations_url":"https://api.github.com/users/dodok1/orgs","repos_url":"https://api.github.com/users/dodok1/repos","events_url":"https://api.github.com/users/dodok1/events{/privacy}","received_events_url":"https://api.github.com/users/dodok1/received_events","type":"User","site_admin":false},"repo":{"id":57295015,"name":"cas","full_name":"dodok1/cas","owner":{"login":"dodok1","id":199430,"avatar_url":"https://avatars0.githubusercontent.com/u/199430?v=4","gravatar_id":"","url":"https://api.github.com/users/dodok1","html_url":"https://github.com/dodok1","followers_url":"https://api.github.com/users/dodok1/followers","following_url":"https://api.github.com/users/dodok1/following{/other_user}","gists_url":"https://api.github.com/users/dodok1/gists{/gist_id}","starred_url":"https://api.github.com/users/dodok1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dodok1/subscriptions","organizations_url":"https://api.github.com/users/dodok1/orgs","repos_url":"https://api.github.com/users/dodok1/repos","events_url":"https://api.github.com/users/dodok1/events{/privacy}","received_events_url":"https://api.github.com/users/dodok1/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dodok1/cas","description":"Apereo CAS - Single Sign On for the Web","fork":true,"url":"https://api.github.com/repos/dodok1/cas","forks_url":"https://api.github.com/repos/dodok1/cas/forks","keys_url":"https://api.github.com/repos/dodok1/cas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dodok1/cas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dodok1/cas/teams","hooks_url":"https://api.github.com/repos/dodok1/cas/hooks","issue_events_url":"https://api.github.com/repos/dodok1/cas/issues/events{/number}","events_url":"https://api.github.com/repos/dodok1/cas/events","assignees_url":"https://api.github.com/repos/dodok1/cas/assignees{/user}","branches_url":"https://api.github.com/repos/dodok1/cas/branches{/branch}","tags_url":"https://api.github.com/repos/dodok1/cas/tags","blobs_url":"https://api.github.com/repos/dodok1/cas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dodok1/cas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dodok1/cas/git/refs{/sha}","trees_url":"https://api.github.com/repos/dodok1/cas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dodok1/cas/statuses/{sha}","languages_url":"https://api.github.com/repos/dodok1/cas/languages","stargazers_url":"https://api.github.com/repos/dodok1/cas/stargazers","contributors_url":"https://api.github.com/repos/dodok1/cas/contributors","subscribers_url":"https://api.github.com/repos/dodok1/cas/subscribers","subscription_url":"https://api.github.com/repos/dodok1/cas/subscription","commits_url":"https://api.github.com/repos/dodok1/cas/commits{/sha}","git_commits_url":"https://api.github.com/repos/dodok1/cas/git/commits{/sha}","comments_url":"https://api.github.com/repos/dodok1/cas/comments{/number}","issue_comment_url":"https://api.github.com/repos/dodok1/cas/issues/comments{/number}","contents_url":"https://api.github.com/repos/dodok1/cas/contents/{+path}","compare_url":"https://api.github.com/repos/dodok1/cas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dodok1/cas/merges","archive_url":"https://api.github.com/repos/dodok1/cas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dodok1/cas/downloads","issues_url":"https://api.github.com/repos/dodok1/cas/issues{/number}","pulls_url":"https://api.github.com/repos/dodok1/cas/pulls{/number}","milestones_url":"https://api.github.com/repos/dodok1/cas/milestones{/number}","notifications_url":"https://api.github.com/repos/dodok1/cas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dodok1/cas/labels{/name}","releases_url":"https://api.github.com/repos/dodok1/cas/releases{/id}","deployments_url":"https://api.github.com/repos/dodok1/cas/deployments","created_at":"2016-04-28T10:54:53Z","updated_at":"2016-04-28T10:55:09Z","pushed_at":"2018-02-14T21:10:36Z","git_url":"git://github.com/dodok1/cas.git","ssh_url":"git@github.com:dodok1/cas.git","clone_url":"https://github.com/dodok1/cas.git","svn_url":"https://github.com/dodok1/cas","homepage":"http://jasig.github.io/cas/","size":1077554,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"apereo:master","ref":"master","sha":"5e71412db3683a326313e88fa04fb9269831d95a","user":{"login":"apereo","id":4679233,"avatar_url":"https://avatars3.githubusercontent.com/u/4679233?v=4","gravatar_id":"","url":"https://api.github.com/users/apereo","html_url":"https://github.com/apereo","followers_url":"https://api.github.com/users/apereo/followers","following_url":"https://api.github.com/users/apereo/following{/other_user}","gists_url":"https://api.github.com/users/apereo/gists{/gist_id}","starred_url":"https://api.github.com/users/apereo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apereo/subscriptions","organizations_url":"https://api.github.com/users/apereo/orgs","repos_url":"https://api.github.com/users/apereo/repos","events_url":"https://api.github.com/users/apereo/events{/privacy}","received_events_url":"https://api.github.com/users/apereo/received_events","type":"Organization","site_admin":false},"repo":{"id":2352744,"name":"cas","full_name":"apereo/cas","owner":{"login":"apereo","id":4679233,"avatar_url":"https://avatars3.githubusercontent.com/u/4679233?v=4","gravatar_id":"","url":"https://api.github.com/users/apereo","html_url":"https://github.com/apereo","followers_url":"https://api.github.com/users/apereo/followers","following_url":"https://api.github.com/users/apereo/following{/other_user}","gists_url":"https://api.github.com/users/apereo/gists{/gist_id}","starred_url":"https://api.github.com/users/apereo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apereo/subscriptions","organizations_url":"https://api.github.com/users/apereo/orgs","repos_url":"https://api.github.com/users/apereo/repos","events_url":"https://api.github.com/users/apereo/events{/privacy}","received_events_url":"https://api.github.com/users/apereo/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/apereo/cas","description":"Apereo CAS - Enterprise Single Sign On for all earthlings and beyond.","fork":false,"url":"https://api.github.com/repos/apereo/cas","forks_url":"https://api.github.com/repos/apereo/cas/forks","keys_url":"https://api.github.com/repos/apereo/cas/keys{/key_id}","collaborators_url":"https://api.github.com/repos/apereo/cas/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/apereo/cas/teams","hooks_url":"https://api.github.com/repos/apereo/cas/hooks","issue_events_url":"https://api.github.com/repos/apereo/cas/issues/events{/number}","events_url":"https://api.github.com/repos/apereo/cas/events","assignees_url":"https://api.github.com/repos/apereo/cas/assignees{/user}","branches_url":"https://api.github.com/repos/apereo/cas/branches{/branch}","tags_url":"https://api.github.com/repos/apereo/cas/tags","blobs_url":"https://api.github.com/repos/apereo/cas/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/apereo/cas/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/apereo/cas/git/refs{/sha}","trees_url":"https://api.github.com/repos/apereo/cas/git/trees{/sha}","statuses_url":"https://api.github.com/repos/apereo/cas/statuses/{sha}","languages_url":"https://api.github.com/repos/apereo/cas/languages","stargazers_url":"https://api.github.com/repos/apereo/cas/stargazers","contributors_url":"https://api.github.com/repos/apereo/cas/contributors","subscribers_url":"https://api.github.com/repos/apereo/cas/subscribers","subscription_url":"https://api.github.com/repos/apereo/cas/subscription","commits_url":"https://api.github.com/repos/apereo/cas/commits{/sha}","git_commits_url":"https://api.github.com/repos/apereo/cas/git/commits{/sha}","comments_url":"https://api.github.com/repos/apereo/cas/comments{/number}","issue_comment_url":"https://api.github.com/repos/apereo/cas/issues/comments{/number}","contents_url":"https://api.github.com/repos/apereo/cas/contents/{+path}","compare_url":"https://api.github.com/repos/apereo/cas/compare/{base}...{head}","merges_url":"https://api.github.com/repos/apereo/cas/merges","archive_url":"https://api.github.com/repos/apereo/cas/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/apereo/cas/downloads","issues_url":"https://api.github.com/repos/apereo/cas/issues{/number}","pulls_url":"https://api.github.com/repos/apereo/cas/pulls{/number}","milestones_url":"https://api.github.com/repos/apereo/cas/milestones{/number}","notifications_url":"https://api.github.com/repos/apereo/cas/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/apereo/cas/labels{/name}","releases_url":"https://api.github.com/repos/apereo/cas/releases{/id}","deployments_url":"https://api.github.com/repos/apereo/cas/deployments","created_at":"2011-09-09T01:36:42Z","updated_at":"2018-02-15T07:41:25Z","pushed_at":"2018-02-15T08:43:24Z","git_url":"git://github.com/apereo/cas.git","ssh_url":"git@github.com:apereo/cas.git","clone_url":"https://github.com/apereo/cas.git","svn_url":"https://github.com/apereo/cas","homepage":"https://apereo.github.io/cas/","size":1360472,"stargazers_count":3722,"watchers_count":3722,"language":"Java","has_issues":false,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":2001,"mirror_url":null,"archived":false,"open_issues_count":15,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":2001,"open_issues":15,"watchers":3722,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/apereo/cas/pulls/3204"},"html":{"href":"https://github.com/apereo/cas/pull/3204"},"issue":{"href":"https://api.github.com/repos/apereo/cas/issues/3204"},"comments":{"href":"https://api.github.com/repos/apereo/cas/issues/3204/comments"},"review_comments":{"href":"https://api.github.com/repos/apereo/cas/pulls/3204/comments"},"review_comment":{"href":"https://api.github.com/repos/apereo/cas/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/apereo/cas/pulls/3204/commits"},"statuses":{"href":"https://api.github.com/repos/apereo/cas/statuses/0c58603ba412f6d5dc5d3d76f182a94123ff52bb"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mmoayyed"}}