[keycloak-user] bootstrapping of keycloak for integration testing

Bill Burke bburke at redhat.com
Mon May 12 10:35:42 EDT 2014


I don't know if it is kosher to do this.  Need to ask our repo admins if 
it is ok to put up such a large distro in the maven repo.

On 5/12/2014 5:38 AM, Nils Preusker wrote:
> Hi,
>
> any news on KEYCLOAK-425 <https://issues.jboss.org/browse/KEYCLOAK-425>?
>
> Cheers,
> Nils
>
>
> On Thu, Apr 24, 2014 at 5:05 PM, Nils Preusker <n.preusker at gmail.com
> <mailto:n.preusker at gmail.com>> wrote:
>
>     Hi guys,
>
>     just a quick question about
>     https://issues.jboss.org/browse/KEYCLOAK-425
>     (keycloak-wildfly-adapter-dist-1.0-alpha-3.zip not in JBoss Maven
>     Repository). Would you agree that this should be fixed/ the adapter
>     should be in the maven repo, or should I just create the keycloak
>     wildfly adapter myself with the maven dependency plugin in the build
>     of my integration test project?
>
>     If you are planning to fix it, can you give an estimate when it will
>     be available?
>
>     Cheers,
>     Nils
>
>
>     On Wed, Apr 23, 2014 at 1:12 PM, Nils Preusker <n.preusker at gmail.com
>     <mailto:n.preusker at gmail.com>> wrote:
>
>         Great, thanks for the link Stian!
>
>         --
>         Blog: www.nilspreusker.de <http://www.nilspreusker.de>
>
>          > On Apr 23, 2014, at 12:58, Stian Thorgersen <stian at redhat.com
>         <mailto:stian at redhat.com>> wrote:
>          >
>          > In the future we may move our testsuite to Arquillian, as
>         this makes it possible for us to test the actual distribution of
>         Keycloak (on WildFly) rather than a "custom" server.
>          >
>          > For testing bearer-only services, you're right the simplest
>         solution would be to just create tokens manually. Have a look at
>         https://github.com/liveoak-io/liveoak/blob/master/modules/keycloak/src/test/java/io/liveoak/keycloak/TokenUtil.java,
>         which does exactly that.
>          >
>          > ----- Original Message -----
>          >> From: "Nils Preusker" <n.preusker at gmail.com
>         <mailto:n.preusker at gmail.com>>
>          >> To: keycloak-user at lists.jboss.org
>         <mailto:keycloak-user at lists.jboss.org>
>          >> Sent: Wednesday, 23 April, 2014 11:43:56 AM
>          >> Subject: Re: [keycloak-user] bootstrapping of keycloak for
>         integration    testing
>          >>
>          >> Another question regarding keycloak artifacts in maven,
>         shouldn't
>          >> "keycloak-wildfly-adapter-dist" also be available? At least
>         this would make
>          >> it much easier to create a maven configuration that
>         bootstraps a Wildfly
>          >> instance with the keycloak adapter.
>          >>
>          >> I've looked at the integration test suite and find the
>         approach quite nice.
>          >> However, in order to re-use it I would currently have to
>         duplicate most of
>          >> the code (KeycloakServer, AbstractKeycloakRule etc.) since
>         it is in the test
>          >> directory of the keycloak-testsuite-integration module.
>          >>
>          >> So I thought I'd do the following:
>          >>
>          >> * create an integration-test module
>          >> * bootstrap Wildfly with the wildfly adapter installed with the
>          >> maven-dependency-plugin and maven-resources-plugin
>         (currently struggling
>          >> with the missing artifacts in the repo here so I installed
>         it locally for
>          >> now...)
>          >> * deploy the auth-server.war/ keycloak-server.war and the
>         archives I want to
>          >> test in an arquillian test case (@Deploy...)
>          >>
>          >> That's where I'm at right now. I guess the next step would
>         be to get the
>          >> KeycloakSessionFactory in order to add a test realm
>         programmatically.
>          >>
>          >> However, I just realized that it might be better (and
>         easier) to just
>          >> bootstrap an embedded Keycloak instance (no server, just the
>         core services)
>          >> and use it to create a test realm and create tokens that can
>         be used in the
>          >> test cases. After all, I just need a way to generate bearer
>         tokens to make
>          >> HTTP requests to the wars I would like to test. Any thoughts
>         on how I could
>          >> best accomplish that?
>          >>
>          >> Cheers,
>          >> Nils
>          >>
>          >>
>          >>
>          >>
>          >> On Wed, Apr 23, 2014 at 11:25 AM, Nils Preusker <
>         n.preusker at gmail.com <mailto:n.preusker at gmail.com> >
>          >> wrote:
>          >>
>          >>
>          >>
>          >> Thanks Marek, I've created a JIRA issue about the missing
>         war in the maven
>          >> repo: https://issues.jboss.org/browse/KEYCLOAK-424
>          >>
>          >> I'll have a look at the integration test suite and let you
>         know what I came
>          >> up with.
>          >>
>          >> Cheers,
>          >> Nils
>          >>
>          >>
>          >> On Wed, Apr 23, 2014 at 9:25 AM, Marek Posolda <
>         mposolda at redhat.com <mailto:mposolda at redhat.com> > wrote:
>          >>
>          >>
>          >>
>          >> Hi Nils,
>          >>
>          >>
>          >> On 22.4.2014 12:55, Nils Preusker wrote:
>          >>
>          >>
>          >>
>          >> Hi guys,
>          >>
>          >> I'm just setting up an integration test project for our
>         application and I'm
>          >> wondering what's the best way to bootstrap keycloak within it.
>          >>
>          >> I'm using arquillian for testing and I'm using the
>         maven-dependency-plugin
>          >> and maven-resources-plugin to put together a wildfly
>         instance with the
>          >> keycloak-wildfly-adapter.
>          >>
>          >> So far, that approach works nicely. However, I'm not quite
>         sure yet how to go
>          >> about
>          >>
>          >> * importing a realm and
>          >> * creating a bearer/ access token to use in the test cases
>          >>
>          >> One approach would be to deploy the auth-server.war (is
>         there a mvn
>          >> repository to pull it from?), POST the realm to the
>         respective URL of the
>          >> admin console and do the authentication the same way (POST
>          >>
>         http://localhost:8080/auth/rest/realms/TestRealm/tokens/grants/access
>         ).
>          >> Looks like it's not. The WAR is here just for Alpha1
>          >>
>         https://repository.jboss.org/nexus/content/groups/public/org/keycloak/keycloak-server/1.0-alpha-1-12062013/
>          >> but not for later releases, which looks like a bug IMO. Can
>         you create JIRA
>          >> for it? I think it won't be bad if release will include all
>         the artifacts
>          >> including docs and distribution stuff (like WAR and full
>         Wildfly appliance)
>          >>
>          >>
>          >>
>          >>
>          >>
>          >> Alternatively, I suppose I could deploy a small helper war
>         or jar that
>          >> accesses the core services of keycloak to import the realm
>         and create test
>          >> access tokens (some convenience method like "createLogin()"
>         in a test
>          >> utility that is deployed with shrink wrap maybe).
>          >>
>          >> Which option do you recommend or is there a third one that
>         I'm missing?
>          >> Maybe it will be interesting for you that we have
>         integration testsuite
>          >>
>         https://github.com/keycloak/keycloak/tree/master/testsuite/integration
>         .
>          >> This testsuite is using embedded Undertow server and it
>         programmatically
>          >> deploys Keycloak server on it. You can take a look at
>         KeycloakServer class
>          >> and also at individual tests to see how it works. The point
>         is that it's
>          >> embedded, so test classes have access to
>         KeycloakSessionFactory inside
>          >> KeycloakSetup actions and so they can directly use the model
>         API to setup
>          >> needed things.
>          >>
>          >> For example in LoginTest, you can see that there is some
>         setup action, which
>          >> creates new user with usage of Keycloak model API:
>          >>
>         https://github.com/keycloak/keycloak/blob/master/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java#L54
>          >> and then there is selenium test, which verifies that this
>         user is able to
>          >> login:
>          >>
>         https://github.com/keycloak/keycloak/blob/master/testsuite/integration/src/test/java/org/keycloak/testsuite/forms/LoginTest.java#L114
>          >>
>          >> Maybe you can reuse some parts of our testsuite and
>         programmaticaly deploy
>          >> Keycloak server in similar way like it's done here (not sure
>         if it's
>          >> possible with Arquillian+Shrinkwrap+Wildfly, but I assume
>         that yes). If you
>          >> still don't have access to Keycloak model API, you can maybe
>         write some
>          >> selenium utils, which will do needed setup in KC admin
>         console UI...
>          >>
>          >> Another alternative might be that you will use 2 servers in
>         your testsuite.
>          >> Your wildfly server with adapter installed will be on
>         localhost:8080 (you
>          >> have it already running) and KC server will be on
>         localhost:8081 (You can
>          >> directly reuse our testsuite for setup this).
>          >>
>          >> Good luck and let me know if still having issues. Btw. we
>         don't have any
>          >> integration tests for admin console and real AS7 and Wildfly
>         adapters AFAIK.
>          >> So it would be nice if you can share your work once you have
>         your testsuite
>          >> up and running :-)
>          >>
>          >> Marek
>          >>
>          >>
>          >>
>          >>
>          >> Cheers,
>          >> Nils
>          >>
>          >>
>          >> _______________________________________________
>          >> keycloak-user mailing list keycloak-user at lists.jboss.org
>         <mailto:keycloak-user at lists.jboss.org>
>          >> https://lists.jboss.org/mailman/listinfo/keycloak-user
>          >>
>          >>
>          >>
>          >>
>          >> _______________________________________________
>          >> keycloak-user mailing list
>          >> keycloak-user at lists.jboss.org
>         <mailto:keycloak-user at lists.jboss.org>
>          >> https://lists.jboss.org/mailman/listinfo/keycloak-user
>
>
>
>
>
> _______________________________________________
> keycloak-user mailing list
> keycloak-user at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/keycloak-user
>

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com


More information about the keycloak-user mailing list