Skip to content

Commit 5580c6b

Browse files
authored
chore: kickoff release
2 parents 8dfb56a + 2ae60c6 commit 5580c6b

File tree

88 files changed

+2204
-1602
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+2204
-1602
lines changed

.github/CODEOWNERS

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1 @@
11
* @aws-amplify/amplify-ios
2-
3-
# This covers
4-
# - Amplify/Categories/DataStore/**
5-
# - Amplify/Categories/API/**
6-
# - AmplifyPlugins/DataStore/**
7-
# - AmplifyPlugins/API/**
8-
# - AmplifyPlugins/Core/AWSPuginsCore/**
9-
# - AmplifyTests/CategoryTests/DataStore/**
10-
# - AmplifyTestCommon/Models
11-
**/DataStore/** @aws-amplify/amplify-data @aws-amplify/amplify-ios
12-
**/API/** @aws-amplify/amplify-data @aws-amplify/amplify-ios
13-
**/Core/** @aws-amplify/amplify-data @aws-amplify/amplify-ios
14-
/AmplifyTestCommon/Models/** @aws-amplify/amplify-data @aws-amplify/amplify-ios
15-
/.circleci @aws-amplify/amplify-data @aws-amplify/amplify-ios
16-
/.github @aws-amplify/amplify-data @aws-amplify/amplify-ios

.github/composite_actions/run_xcodebuild_test/action.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ inputs:
1212
required: false
1313
type: string
1414
default: 'platform=iOS Simulator,name=iPhone 13,OS=latest'
15+
sdk:
16+
required: false
17+
type: string
18+
default: 'iphonesimulator'
19+
other_flags:
20+
required: false
21+
type: string
22+
default: ''
1523

1624
runs:
1725
using: "composite"
@@ -22,5 +30,5 @@ runs:
2230
PROJECT_PATH: ${{ inputs.project_path }}
2331
run: |
2432
cd $PROJECT_PATH
25-
xcodebuild test -scheme $SCHEME -sdk iphonesimulator -destination '${{ inputs.destination }}' | xcpretty --simple --color --report junit && exit ${PIPESTATUS[0]}
33+
xcodebuild test -scheme $SCHEME -sdk '${{ inputs.sdk }}' -destination '${{ inputs.destination }}' ${{ inputs.other_flags }} | xcpretty --simple --color --report junit && exit ${PIPESTATUS[0]}
2634
shell: bash

.github/workflows/integ_test_api.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,33 @@ jobs:
8282
project_path: ./AmplifyPlugins/API/Tests/APIHostApp
8383
scheme: AWSAPIPluginGraphQLUserPoolTests
8484

85+
api-graphql-auth-directive-test:
86+
if: ${{ false }}
87+
needs: prepare-for-test
88+
runs-on: macos-12
89+
environment: IntegrationTest
90+
steps:
91+
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
92+
with:
93+
persist-credentials: false
94+
95+
- name: Make directory
96+
run: mkdir -p ~/.aws-amplify/amplify-ios/testconfiguration/
97+
98+
- name: Copy integration test resouces
99+
uses: ./.github/composite_actions/download_test_configuration
100+
with:
101+
resource_subfolder: api
102+
aws_role_to_assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
103+
aws_region: ${{ secrets.AWS_REGION }}
104+
aws_s3_bucket: ${{ secrets.AWS_S3_BUCKET_INTEG }}
105+
106+
- name: Run Integration test
107+
uses: ./.github/composite_actions/run_xcodebuild_test
108+
with:
109+
project_path: ./AmplifyPlugins/API/Tests/APIHostApp
110+
scheme: AWSAPIPluginGraphQLAuthDirectiveTests
111+
85112
api-graphql-iam-test:
86113
if: ${{ false }}
87114
needs: prepare-for-test
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: Amplify Nightly Repeated Unit Test
2+
on:
3+
workflow_dispatch:
4+
schedule:
5+
- cron: '30 1 * * *'
6+
7+
permissions:
8+
contents: read
9+
10+
concurrency:
11+
group: ${{ github.head_ref || github.run_id }}
12+
cancel-in-progress: true
13+
14+
jobs:
15+
unit_test_ios:
16+
runs-on: macos-12
17+
strategy:
18+
matrix:
19+
scheme: [Amplify, AWSPluginsCore, AWSPinpointAnalyticsPlugin, AWSAPIPlugin, AWSCognitoAuthPlugin, AWSDataStorePlugin, AWSLocationGeoPlugin, AWSS3StoragePlugin]
20+
steps:
21+
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
22+
23+
- name: Run repeated unit test iOS
24+
uses: ./.github/composite_actions/run_xcodebuild_test
25+
with:
26+
project_path: .
27+
scheme: ${{ matrix.scheme }}
28+
other_flags: -test-iterations 100 -run-tests-until-failure
29+
30+
unit_test_macos:
31+
runs-on: macos-12
32+
strategy:
33+
matrix:
34+
scheme: [Amplify, AWSPluginsCore, AWSPinpointAnalyticsPlugin, AWSAPIPlugin, AWSCognitoAuthPlugin, AWSDataStorePlugin, AWSLocationGeoPlugin, AWSS3StoragePlugin]
35+
steps:
36+
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
37+
38+
- name: Run repeated unit test macOS
39+
uses: ./.github/composite_actions/run_xcodebuild_test
40+
with:
41+
project_path: .
42+
scheme: ${{ matrix.scheme }}
43+
sdk: macosx
44+
destination: platform=macOS,arch=x86_64
45+
other_flags: -test-iterations 100 -run-tests-until-failure
46+

.github/workflows/release_merge_pr.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

AmplifyPlugins/API/Sources/AWSAPIPlugin/Operation/AWSGraphQLSubscriptionTaskRunner.swift

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,17 @@ public class AWSGraphQLSubscriptionTaskRunner<R: Decodable>: InternalTaskRunner,
8181
// Retrieve request plugin option and
8282
// auth type in case of a multi-auth setup
8383
let pluginOptions = request.options.pluginOptions as? AWSPluginOptions
84+
let urlRequest = generateSubscriptionURLRequest(from: endpointConfig)
8485

8586
// Retrieve the subscription connection
8687
subscriptionQueue.sync {
8788
do {
8889
subscriptionConnection = try subscriptionConnectionFactory
8990
.getOrCreateConnection(for: endpointConfig,
90-
authService: authService,
91-
authType: pluginOptions?.authType,
92-
apiAuthProviderFactory: apiAuthProviderFactory)
91+
urlRequest: urlRequest,
92+
authService: authService,
93+
authType: pluginOptions?.authType,
94+
apiAuthProviderFactory: apiAuthProviderFactory)
9395
} catch {
9496
let error = APIError.operationError("Unable to get connection for api \(endpointConfig.name)", "", error)
9597
fail(error)
@@ -105,6 +107,14 @@ public class AWSGraphQLSubscriptionTaskRunner<R: Decodable>: InternalTaskRunner,
105107
})
106108
}
107109
}
110+
111+
private func generateSubscriptionURLRequest(
112+
from endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig
113+
) -> URLRequest {
114+
var urlRequest = URLRequest(url: endpointConfig.baseURL)
115+
urlRequest.setValue(AWSAPIPluginsCore.baseUserAgent(), forHTTPHeaderField: URLRequestConstants.Header.userAgent)
116+
return urlRequest
117+
}
108118

109119
// MARK: - Subscription callbacks
110120

@@ -269,15 +279,17 @@ final public class AWSGraphQLSubscriptionOperation<R: Decodable>: GraphQLSubscri
269279
// Retrieve request plugin option and
270280
// auth type in case of a multi-auth setup
271281
let pluginOptions = request.options.pluginOptions as? AWSPluginOptions
282+
let urlRequest = generateSubscriptionURLRequest(from: endpointConfig)
272283

273284
// Retrieve the subscription connection
274285
subscriptionQueue.sync {
275286
do {
276287
subscriptionConnection = try subscriptionConnectionFactory
277288
.getOrCreateConnection(for: endpointConfig,
278-
authService: authService,
279-
authType: pluginOptions?.authType,
280-
apiAuthProviderFactory: apiAuthProviderFactory)
289+
urlRequest: urlRequest,
290+
authService: authService,
291+
authType: pluginOptions?.authType,
292+
apiAuthProviderFactory: apiAuthProviderFactory)
281293
} catch {
282294
let error = APIError.operationError("Unable to get connection for api \(endpointConfig.name)", "", error)
283295
dispatch(result: .failure(error))
@@ -295,6 +307,14 @@ final public class AWSGraphQLSubscriptionOperation<R: Decodable>: GraphQLSubscri
295307
}
296308
}
297309

310+
private func generateSubscriptionURLRequest(
311+
from endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig
312+
) -> URLRequest {
313+
var urlRequest = URLRequest(url: endpointConfig.baseURL)
314+
urlRequest.setValue(AWSAPIPluginsCore.baseUserAgent(), forHTTPHeaderField: URLRequestConstants.Header.userAgent)
315+
return urlRequest
316+
}
317+
298318
// MARK: - Subscription callbacks
299319

300320
private func onAsyncSubscriptionEvent(event: SubscriptionItemEvent) {

AmplifyPlugins/API/Sources/AWSAPIPlugin/SubscriptionFactory/AWSSubscriptionConnectionFactory.swift

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,23 +22,25 @@ class AWSSubscriptionConnectionFactory: SubscriptionConnectionFactory {
2222

2323
private var apiToConnectionProvider: [MapperCacheKey: ConnectionProvider] = [:]
2424

25-
func getOrCreateConnection(for endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig,
26-
authService: AWSAuthServiceBehavior,
27-
authType: AWSAuthorizationType? = nil,
28-
apiAuthProviderFactory: APIAuthProviderFactory) throws -> SubscriptionConnection {
25+
func getOrCreateConnection(
26+
for endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig,
27+
urlRequest: URLRequest,
28+
authService: AWSAuthServiceBehavior,
29+
authType: AWSAuthorizationType? = nil,
30+
apiAuthProviderFactory: APIAuthProviderFactory
31+
) throws -> SubscriptionConnection {
2932
return try concurrencyQueue.sync {
3033
let apiName = endpointConfig.name
3134

32-
let url = endpointConfig.baseURL
33-
34-
let authInterceptor = try getInterceptor(for: getOrCreateAuthConfiguration(from: endpointConfig,
35-
authType: authType),
36-
authService: authService,
37-
apiAuthProviderFactory: apiAuthProviderFactory)
35+
let authInterceptor = try self.getInterceptor(
36+
for: self.getOrCreateAuthConfiguration(from: endpointConfig, authType: authType),
37+
authService: authService,
38+
apiAuthProviderFactory: apiAuthProviderFactory
39+
)
3840

3941
// create or retrieve the connection provider. If creating, add interceptors onto the provider.
4042
let connectionProvider = apiToConnectionProvider[MapperCacheKey(apiName: apiName, authType: authType)] ??
41-
ConnectionProviderFactory.createConnectionProviderAsync(for: url,
43+
ConnectionProviderFactory.createConnectionProviderAsync(for: urlRequest,
4244
authInterceptor: authInterceptor,
4345
connectionType: .appSyncRealtime)
4446

AmplifyPlugins/API/Sources/AWSAPIPlugin/SubscriptionFactory/SubscriptionConnectionFactory.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
// SPDX-License-Identifier: Apache-2.0
66
//
77

8+
import Foundation
9+
810
import Amplify
911
import AWSPluginsCore
1012
import AppSyncRealTimeClient
@@ -14,6 +16,7 @@ protocol SubscriptionConnectionFactory {
1416

1517
/// Get connection based on the connection type
1618
func getOrCreateConnection(for endpointConfig: AWSAPICategoryPluginConfiguration.EndpointConfig,
19+
urlRequest: URLRequest,
1720
authService: AWSAuthServiceBehavior,
1821
authType: AWSAuthorizationType?,
1922
apiAuthProviderFactory: APIAuthProviderFactory) throws -> SubscriptionConnection

0 commit comments

Comments
 (0)