Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OKTA-289657: Add Factors API Integration Tests #391

Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,28 @@ import com.okta.sdk.client.Client
import com.okta.sdk.resource.user.User
import com.okta.sdk.resource.user.factor.ActivateFactorRequest
import com.okta.sdk.resource.user.factor.CallUserFactor
import com.okta.sdk.resource.user.factor.EmailUserFactor
import com.okta.sdk.resource.user.factor.EmailUserFactorProfile
import com.okta.sdk.resource.user.factor.FactorProvider
import com.okta.sdk.resource.user.factor.FactorStatus
import com.okta.sdk.resource.user.factor.FactorType
import com.okta.sdk.resource.user.factor.HardwareUserFactor
import com.okta.sdk.resource.user.factor.HardwareUserFactorProfile
import com.okta.sdk.resource.user.factor.PushUserFactor
import com.okta.sdk.resource.user.factor.SecurityQuestionUserFactor
import com.okta.sdk.resource.user.factor.SecurityQuestionList
import com.okta.sdk.resource.user.factor.SmsUserFactor
import com.okta.sdk.resource.user.factor.TokenUserFactor
import com.okta.sdk.resource.user.factor.TokenUserFactorProfile
import com.okta.sdk.resource.user.factor.TotpUserFactor
import com.okta.sdk.resource.user.factor.U2fUserFactor
import com.okta.sdk.resource.user.factor.U2fUserFactorProfile
import com.okta.sdk.resource.user.factor.UserFactor
import com.okta.sdk.resource.user.factor.UserFactorList
import com.okta.sdk.resource.user.factor.VerifyFactorRequest
import com.okta.sdk.resource.user.factor.VerifyUserFactorResponse
import com.okta.sdk.resource.user.factor.WebUserFactor
import com.okta.sdk.resource.user.factor.WebUserFactorProfile
import com.okta.sdk.tests.it.util.ITSupport
import org.jboss.aerogear.security.otp.Totp
import org.testng.annotations.Test
Expand Down Expand Up @@ -178,6 +189,43 @@ class FactorsIT extends ITSupport {
assertThat response.getFactorResult(), is(VerifyUserFactorResponse.FactorResultEnum.SUCCESS)
}

@Test
void testEmailUserFactor() {
User user = randomUser()
assertThat user.listFactors(), emptyIterable()

EmailUserFactor emailUserFactor = client.instantiate(EmailUserFactor)
.setFactorType(FactorType.EMAIL)
.setProvider(FactorProvider.OKTA)
.setProfile(client.instantiate(EmailUserFactorProfile)
.setEmail(user.getProfile().getEmail()))

assertThat emailUserFactor.id, nullValue()
// enroll and activate
assertThat emailUserFactor, sameInstance(user.enrollFactor(emailUserFactor, false, null, null, true))
assertThat emailUserFactor.getStatus(), is(FactorStatus.ACTIVE)
assertThat emailUserFactor.id, notNullValue()

VerifyFactorRequest request = client.instantiate(VerifyFactorRequest)
VerifyUserFactorResponse response = emailUserFactor.verify(request, null, null)
assertThat response.getFactorResult(), is(VerifyUserFactorResponse.FactorResultEnum.CHALLENGE)
}

@Test
void testGoogleTotpUserFactorCreation() {
User user = randomUser()
assertThat user.listFactors(), emptyIterable()

TokenUserFactor tokenUserFactor = client.instantiate(TokenUserFactor)
.setFactorType(FactorType.TOKEN_SOFTWARE_TOTP)
.setProvider(FactorProvider.GOOGLE)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a little overlap with the activateTotpFactor for this one, maybe changing the name to include GoogleTotp would make it more clear (if that is the goal of this test)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense, yeah that's the idea of this test.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

renamed test to testGoogleTotpUserFactorCreation.


assertThat tokenUserFactor.id, nullValue()
assertThat tokenUserFactor, sameInstance(user.enrollFactor(tokenUserFactor))
assertThat tokenUserFactor.id, notNullValue()
assertThat tokenUserFactor.getStatus(), is(FactorStatus.PENDING_ACTIVATION)
}

@Test
void deleteFactorTest() {

Expand Down