-
Notifications
You must be signed in to change notification settings - Fork 199
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
183 changed files
with
10,617 additions
and
551 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,101 @@ | ||
name: Integration Tests | Auth - WebAuthn | ||
on: | ||
workflow_dispatch: | ||
workflow_call: | ||
|
||
permissions: | ||
id-token: write | ||
contents: read | ||
|
||
jobs: | ||
auth-webauthn-integration-tests: | ||
name: iOS Tests | AuthWebAuthnApp | ||
runs-on: macos-15 | ||
timeout-minutes: 30 | ||
environment: IntegrationTest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | ||
with: | ||
persist-credentials: false | ||
|
||
- name: Get build parameters for iOS | ||
id: platform | ||
uses: ./.github/composite_actions/get_platform_parameters | ||
with: | ||
platform: iOS | ||
|
||
- name: Create the test configuration directory | ||
run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/ | ||
|
||
- name: Download the Integration Test configurations | ||
uses: ./.github/composite_actions/download_test_configuration | ||
with: | ||
resource_subfolder: auth | ||
aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }} | ||
aws_region: ${{ secrets.AWS_REGION }} | ||
aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG_V2 }} | ||
destination: ~/.aws-amplify/amplify-ios/testconfiguration/ | ||
|
||
- name: Set up node | ||
uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 | ||
with: | ||
node-version: 16.x | ||
|
||
- name: Attempt to use the dependencies cache | ||
id: dependencies-cache | ||
timeout-minutes: 4 | ||
continue-on-error: true | ||
uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | ||
with: | ||
path: ~/Library/Developer/Xcode/DerivedData/Amplify | ||
key: amplify-packages-${{ hashFiles('Package.resolved') }} | ||
restore-keys: | | ||
amplify-packages- | ||
- name: Attempt to restore the build cache | ||
id: build-cache | ||
timeout-minutes: 4 | ||
continue-on-error: true | ||
uses: actions/cache/restore@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8 # v3.3.1 | ||
with: | ||
path: ${{ github.workspace }}/Build | ||
key: Amplify-iOS-build-cache | ||
|
||
- name: Run Local Server | ||
run: | | ||
cd ./AmplifyPlugins/Auth/Tests/AuthWebAuthnApp/LocalServer | ||
npm install | ||
npm start & | ||
shell: bash | ||
|
||
- name: Run iOS Integration Tests | ||
id: run-tests | ||
continue-on-error: true | ||
uses: ./.github/composite_actions/run_xcodebuild_test | ||
with: | ||
scheme: AuthWebAuthnApp | ||
destination: ${{ steps.platform.outputs.destination }} | ||
sdk: ${{ steps.platform.outputs.sdk }} | ||
xcode_path: /Applications/Xcode_${{ steps.platform.outputs.xcode-version }}.app | ||
project_path: ./AmplifyPlugins/Auth/Tests/AuthWebAuthnApp | ||
generate_coverage: false | ||
cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify | ||
derived_data_path: ${{ github.workspace }}/Build | ||
disable_package_resolution: ${{ steps.dependencies-cache.outputs.cache-hit }} | ||
|
||
- name: Retry iOS Integration Tests | ||
if: steps.run-tests.outcome=='failure' | ||
id: retry-tests | ||
uses: ./.github/composite_actions/run_xcodebuild_test | ||
with: | ||
scheme: AuthWebAuthnApp | ||
destination: ${{ steps.platform.outputs.destination }} | ||
sdk: ${{ steps.platform.outputs.sdk }} | ||
xcode_path: /Applications/Xcode_${{ steps.platform.outputs.xcode-version }}.app | ||
project_path: ./AmplifyPlugins/Auth/Tests/AuthWebAuthnApp | ||
generate_coverage: false | ||
cloned_source_packages_path: ~/Library/Developer/Xcode/DerivedData/Amplify | ||
derived_data_path: ${{ github.workspace }}/Build | ||
disable_package_resolution: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
Amplify/Categories/Auth/AuthCategory+WebAuthnBehaviour.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
// | ||
// Copyright Amazon.com Inc. or its affiliates. | ||
// All Rights Reserved. | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// | ||
|
||
import Foundation | ||
|
||
extension AuthCategory: AuthCategoryWebAuthnBehaviour { | ||
#if os(iOS) || os(macOS) | ||
@available(iOS 17.4, macOS 13.5, *) | ||
public func associateWebAuthnCredential( | ||
presentationAnchor: AuthUIPresentationAnchor? = nil, | ||
options: AuthAssociateWebAuthnCredentialRequest.Options? = nil | ||
) async throws { | ||
try await plugin.associateWebAuthnCredential( | ||
presentationAnchor: presentationAnchor, | ||
options: options | ||
) | ||
} | ||
#elseif os(visionOS) | ||
public func associateWebAuthnCredential( | ||
presentationAnchor: AuthUIPresentationAnchor, | ||
options: AuthAssociateWebAuthnCredentialRequest.Options? = nil | ||
) async throws { | ||
try await plugin.associateWebAuthnCredential( | ||
presentationAnchor: presentationAnchor, | ||
options: options | ||
) | ||
} | ||
#endif | ||
|
||
public func listWebAuthnCredentials( | ||
options: AuthListWebAuthnCredentialsRequest.Options? = nil | ||
) async throws -> AuthListWebAuthnCredentialsResult { | ||
return try await plugin.listWebAuthnCredentials( | ||
options: options | ||
) | ||
} | ||
|
||
public func deleteWebAuthnCredential( | ||
credentialId: String, | ||
options: AuthDeleteWebAuthnCredentialRequest.Options? = nil | ||
) async throws { | ||
try await plugin.deleteWebAuthnCredential( | ||
credentialId: credentialId, | ||
options: options | ||
) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
Amplify/Categories/Auth/AuthCategoryWebAuthnBehaviour.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
// | ||
// Copyright Amazon.com Inc. or its affiliates. | ||
// All Rights Reserved. | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// | ||
|
||
import Foundation | ||
|
||
public protocol AuthCategoryWebAuthnBehaviour: AnyObject { | ||
#if os(iOS) || os(macOS) | ||
/// - Tag: AuthCategoryWebAuthnBehaviour.associate | ||
@available(iOS 17.4, macOS 13.5, *) | ||
func associateWebAuthnCredential( | ||
presentationAnchor: AuthUIPresentationAnchor?, | ||
options: AuthAssociateWebAuthnCredentialRequest.Options? | ||
) async throws | ||
#elseif os(visionOS) | ||
func associateWebAuthnCredential( | ||
presentationAnchor: AuthUIPresentationAnchor, | ||
options: AuthAssociateWebAuthnCredentialRequest.Options? | ||
) async throws | ||
#endif | ||
|
||
/// - Tag: AuthCategoryWebAuthnBehaviour.list | ||
func listWebAuthnCredentials( | ||
options: AuthListWebAuthnCredentialsRequest.Options? | ||
) async throws -> AuthListWebAuthnCredentialsResult | ||
|
||
/// - Tag: AuthCategoryWebAuthnBehaviour.delete | ||
func deleteWebAuthnCredential( | ||
credentialId: String, | ||
options: AuthDeleteWebAuthnCredentialRequest.Options? | ||
) async throws | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// | ||
// Copyright Amazon.com Inc. or its affiliates. | ||
// All Rights Reserved. | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// | ||
|
||
public enum AuthFactorType: String { | ||
|
||
/// An auth factor that uses password | ||
case password | ||
|
||
/// An auth factor that uses SRP protocol | ||
case passwordSRP | ||
|
||
/// An auth factor that uses SMS OTP | ||
case smsOTP | ||
|
||
/// An auth factor that uses Email OTP | ||
case emailOTP | ||
|
||
#if os(iOS) || os(macOS) || os(visionOS) | ||
/// An auth factor that uses WebAuthn | ||
@available(iOS 17.4, macOS 13.5, visionOS 1.0, *) | ||
case webAuthn | ||
#endif | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
52 changes: 52 additions & 0 deletions
52
Amplify/Categories/Auth/Models/AuthWebAuthnCredential.swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
// | ||
// Copyright Amazon.com Inc. or its affiliates. | ||
// All Rights Reserved. | ||
// | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// | ||
|
||
import Foundation | ||
|
||
/// Represents the output of a call to | ||
/// [`AuthCategoryWebAuthnBehaviour.listWebAuthnCredentials(options:)`](x-source-tag://AuthCategoryWebAuthnBehaviour.list) | ||
/// | ||
/// - Tag: AuthListWebAuthnCredentialsResult | ||
public struct AuthListWebAuthnCredentialsResult { | ||
/// The list of WebAuthn credentials | ||
/// | ||
/// - Tag: AuthListWebAuthnCredentialsResult.credentials | ||
public var credentials: [AuthWebAuthnCredential] | ||
|
||
/// String indicating the page offset at which to resume a listing. | ||
/// | ||
/// This value is usually copied to | ||
/// [AuthListWebAuthnCredentialsRequest.Options.nextToken](x-source-tag://AuthListWebAuthnCredentialsRequestOptions.nextToken). | ||
/// | ||
/// - Tag: AuthListWebAuthnCredentialsResult.nextToken | ||
public let nextToken: String? | ||
|
||
/// - Tag: AuthListWebAuthnCredentialsResult.init | ||
public init( | ||
credentials: [AuthWebAuthnCredential], | ||
nextToken: String? | ||
) { | ||
self.credentials = credentials | ||
self.nextToken = nextToken | ||
} | ||
} | ||
|
||
/// Defines a WebAuthn credential | ||
/// - Tag: AuthWebAuthnCredential | ||
public protocol AuthWebAuthnCredential { | ||
/// The credential's ID | ||
var credentialId: String { get } | ||
|
||
/// The credential's creation date | ||
var createdAt: Date { get } | ||
|
||
/// The credential's relying party ID | ||
var relyingPartyId: String { get } | ||
|
||
/// The credential's friendly name | ||
var friendlyName: String? { get } | ||
} |
Oops, something went wrong.