Skip to content

Commit 535c8ef

Browse files
authored
chore(datastore): allow:private integ tests (#1556)
1 parent 3ced6e6 commit 535c8ef

File tree

4 files changed

+127
-8
lines changed

4 files changed

+127
-8
lines changed
Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import XCTest
1111
@testable import AmplifyPlugins
1212
@testable import AmplifyTestCommon
1313

14-
class AWSDataStoreAuthImplicitExplicitOwnerTests: AWSDataStoreAuthBaseTest {
14+
class AWSDataStoreCategoryPluginAuthOwnerIntegrationTests: AWSDataStoreAuthBaseTest {
1515

1616
/// Given: a user signed in with CognitoUserPools, a model with a custom implicit owner
1717
/// When: DataStore query/mutation operations are sent with CognitoUserPools
@@ -133,10 +133,40 @@ class AWSDataStoreAuthImplicitExplicitOwnerTests: AWSDataStoreAuthBaseTest {
133133
assertUsedAuthTypes([.amazonCognitoUserPools])
134134
}
135135

136+
/// Given: a user signed in with CognitoUserPools, a model with `allow:private` auth rule
137+
/// When: DataStore query/mutation operations are sent with CognitoUserPools
138+
/// Then: DataStore is successfully initialized, query returns a result,
139+
/// mutation is processed for an authenticated users
140+
func testAllowPrivate() {
141+
setup(withModels: AllowPrivateModelRegistration(),
142+
testType: .defaultAuthCognito)
143+
144+
signIn(user: user1)
145+
146+
let expectations = makeExpectations()
147+
148+
assertDataStoreReady(expectations)
149+
150+
// Query
151+
assertQuerySuccess(modelType: TodoCognitoPrivate.self,
152+
expectations) { error in
153+
XCTFail("Error query \(error)")
154+
}
155+
156+
let todo = TodoCognitoPrivate(title: "title")
157+
158+
// Mutations
159+
assertMutations(model: todo, expectations) { error in
160+
XCTFail("Error mutation \(error)")
161+
}
162+
163+
assertUsedAuthTypes([.amazonCognitoUserPools])
164+
}
165+
136166
}
137167

138168
// MARK: - Models registration
139-
extension AWSDataStoreAuthImplicitExplicitOwnerTests {
169+
extension AWSDataStoreCategoryPluginAuthOwnerIntegrationTests {
140170

141171
struct CustomOwnerImplicitModelRegistration: AmplifyModelRegistration {
142172
public let version: String = "version"
@@ -166,4 +196,11 @@ extension AWSDataStoreAuthImplicitExplicitOwnerTests {
166196
}
167197
}
168198

199+
struct AllowPrivateModelRegistration: AmplifyModelRegistration {
200+
public let version: String = "version"
201+
func registerModels(registry: ModelRegistry.Type) {
202+
ModelRegistry.register(modelType: TodoCognitoPrivate.self)
203+
}
204+
}
205+
169206
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//
2+
// Copyright Amazon.com Inc. or its affiliates.
3+
// All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
// swiftlint:disable all
9+
import Amplify
10+
import Foundation
11+
12+
extension TodoCognitoPrivate {
13+
// MARK: - CodingKeys
14+
public enum CodingKeys: String, ModelKey {
15+
case id
16+
case title
17+
case createdAt
18+
case updatedAt
19+
}
20+
21+
public static let keys = CodingKeys.self
22+
// MARK: - ModelSchema
23+
24+
public static let schema = defineSchema { model in
25+
let todoCognitoPrivate = TodoCognitoPrivate.keys
26+
27+
model.authRules = [
28+
rule(allow: .private, provider: .userPools, operations: [.create, .update, .delete, .read])
29+
]
30+
31+
model.pluralName = "TodoCognitoPrivates"
32+
33+
model.fields(
34+
.id(),
35+
.field(todoCognitoPrivate.title, is: .required, ofType: .string),
36+
.field(todoCognitoPrivate.createdAt, is: .optional, isReadOnly: true, ofType: .dateTime),
37+
.field(todoCognitoPrivate.updatedAt, is: .optional, isReadOnly: true, ofType: .dateTime)
38+
)
39+
}
40+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//
2+
// Copyright Amazon.com Inc. or its affiliates.
3+
// All Rights Reserved.
4+
//
5+
// SPDX-License-Identifier: Apache-2.0
6+
//
7+
8+
// swiftlint:disable all
9+
import Amplify
10+
import Foundation
11+
12+
public struct TodoCognitoPrivate: Model {
13+
public let id: String
14+
public var title: String
15+
public var createdAt: Temporal.DateTime?
16+
public var updatedAt: Temporal.DateTime?
17+
18+
public init(id: String = UUID().uuidString,
19+
title: String) {
20+
self.init(id: id,
21+
title: title,
22+
createdAt: nil,
23+
updatedAt: nil)
24+
}
25+
internal init(id: String = UUID().uuidString,
26+
title: String,
27+
createdAt: Temporal.DateTime? = nil,
28+
updatedAt: Temporal.DateTime? = nil) {
29+
self.id = id
30+
self.title = title
31+
self.createdAt = createdAt
32+
self.updatedAt = updatedAt
33+
}
34+
}

AmplifyPlugins/DataStore/DataStoreCategoryPlugin.xcodeproj/project.pbxproj

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,9 @@
132132
7617929127559554001EABD6 /* TodoIAMPrivate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7617928D27559554001EABD6 /* TodoIAMPrivate.swift */; };
133133
7617929227559554001EABD6 /* TodoIAMPrivate+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7617928E27559554001EABD6 /* TodoIAMPrivate+Schema.swift */; };
134134
7617929327559554001EABD6 /* TodoIAMPublic+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7617928F27559554001EABD6 /* TodoIAMPublic+Schema.swift */; };
135+
761792A327594339001EABD6 /* TodoCognitoPrivate+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761792A127594339001EABD6 /* TodoCognitoPrivate+Schema.swift */; };
136+
761792A427594339001EABD6 /* TodoCognitoPrivate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761792A227594339001EABD6 /* TodoCognitoPrivate.swift */; };
137+
761792A62759443E001EABD6 /* AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 761792A52759443E001EABD6 /* AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift */; };
135138
762383A527501EBC00EAF1C7 /* RemoteSyncEngine+AuthModeStrategyDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 762383A427501EBC00EAF1C7 /* RemoteSyncEngine+AuthModeStrategyDelegate.swift */; };
136139
7625470C2735FCC400E5F6A3 /* AWSDataStoreAuthBaseTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7625470B2735FCC400E5F6A3 /* AWSDataStoreAuthBaseTest.swift */; };
137140
762547C02735FD0C00E5F6A3 /* GroupPublicUPAPIPost+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7625478A2735FD0C00E5F6A3 /* GroupPublicUPAPIPost+Schema.swift */; };
@@ -203,7 +206,6 @@
203206
76C009142736061200ADA120 /* TodoImplicitOwnerField+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C009102736061200ADA120 /* TodoImplicitOwnerField+Schema.swift */; };
204207
76C0091D2736198700ADA120 /* TodoCustomOwnerImplicit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C0091B2736198700ADA120 /* TodoCustomOwnerImplicit.swift */; };
205208
76C0091E2736198700ADA120 /* TodoCustomOwnerImplicit+Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C0091C2736198700ADA120 /* TodoCustomOwnerImplicit+Schema.swift */; };
206-
76C0092027361A8200ADA120 /* AWSDataStoreAuthImplicitExplicitOwnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C0091F27361A8200ADA120 /* AWSDataStoreAuthImplicitExplicitOwnerTests.swift */; };
207209
8141657E756CC7B2EE1CE851 /* Pods_HostApp_AWSDataStoreCategoryPluginAuthIntegrationTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA320D973669D3843FDF755E /* Pods_HostApp_AWSDataStoreCategoryPluginAuthIntegrationTests.framework */; };
208210
9728F2B02683D98D00A506A8 /* DataStoreConsecutiveUpdatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9728F2AF2683D98D00A506A8 /* DataStoreConsecutiveUpdatesTests.swift */; };
209211
973AF1AF26E016EC00BED353 /* ModelCompareTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 973AF1AE26E016EC00BED353 /* ModelCompareTests.swift */; };
@@ -499,6 +501,9 @@
499501
7617928F27559554001EABD6 /* TodoIAMPublic+Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TodoIAMPublic+Schema.swift"; sourceTree = "<group>"; };
500502
7617929527559BD7001EABD6 /* singleauth-iam-schema.graphql */ = {isa = PBXFileReference; lastKnownFileType = text; path = "singleauth-iam-schema.graphql"; sourceTree = "<group>"; };
501503
7617929727559BF5001EABD6 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
504+
761792A127594339001EABD6 /* TodoCognitoPrivate+Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TodoCognitoPrivate+Schema.swift"; sourceTree = "<group>"; };
505+
761792A227594339001EABD6 /* TodoCognitoPrivate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoCognitoPrivate.swift; sourceTree = "<group>"; };
506+
761792A52759443E001EABD6 /* AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift; sourceTree = "<group>"; };
502507
7618ABC62728CCB300712E86 /* TodoExplicitOwnerField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoExplicitOwnerField.swift; sourceTree = "<group>"; };
503508
7618ABC72728CCB300712E86 /* TodoImplicitOwnerField+Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TodoImplicitOwnerField+Schema.swift"; sourceTree = "<group>"; };
504509
7618ABC82728CCB300712E86 /* TodoImplicitOwnerField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoImplicitOwnerField.swift; sourceTree = "<group>"; };
@@ -578,7 +583,6 @@
578583
76C009102736061200ADA120 /* TodoImplicitOwnerField+Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TodoImplicitOwnerField+Schema.swift"; sourceTree = "<group>"; };
579584
76C0091B2736198700ADA120 /* TodoCustomOwnerImplicit.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TodoCustomOwnerImplicit.swift; sourceTree = "<group>"; };
580585
76C0091C2736198700ADA120 /* TodoCustomOwnerImplicit+Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "TodoCustomOwnerImplicit+Schema.swift"; sourceTree = "<group>"; };
581-
76C0091F27361A8200ADA120 /* AWSDataStoreAuthImplicitExplicitOwnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSDataStoreAuthImplicitExplicitOwnerTests.swift; sourceTree = "<group>"; };
582586
9728F2AF2683D98D00A506A8 /* DataStoreConsecutiveUpdatesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataStoreConsecutiveUpdatesTests.swift; sourceTree = "<group>"; };
583587
973AF1AE26E016EC00BED353 /* ModelCompareTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelCompareTests.swift; sourceTree = "<group>"; };
584588
97406B372666DC0200C41E19 /* DataStoreCustomPrimaryKeyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataStoreCustomPrimaryKeyTests.swift; sourceTree = "<group>"; };
@@ -1140,12 +1144,12 @@
11401144
769CF226266AF63E007843A0 /* DefaultAuthCognito */ = {
11411145
isa = PBXGroup;
11421146
children = (
1147+
21233DDF2475935600039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests.swift */,
1148+
21233E142476EFC400039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests+Support.swift */,
1149+
761792A52759443E001EABD6 /* AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift */,
11431150
76C0090C2736061200ADA120 /* Models */,
11441151
762547132735FCD800E5F6A3 /* README.md */,
11451152
762547142735FCD800E5F6A3 /* singleauth-cognito-schema.graphql */,
1146-
21233DDF2475935600039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests.swift */,
1147-
21233E142476EFC400039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests+Support.swift */,
1148-
76C0091F27361A8200ADA120 /* AWSDataStoreAuthImplicitExplicitOwnerTests.swift */,
11491153
);
11501154
path = DefaultAuthCognito;
11511155
sourceTree = "<group>";
@@ -1163,6 +1167,8 @@
11631167
76C0090C2736061200ADA120 /* Models */ = {
11641168
isa = PBXGroup;
11651169
children = (
1170+
761792A227594339001EABD6 /* TodoCognitoPrivate.swift */,
1171+
761792A127594339001EABD6 /* TodoCognitoPrivate+Schema.swift */,
11661172
7617928627558BFA001EABD6 /* TodoCustomOwnerExplicit.swift */,
11671173
7617928727558BFA001EABD6 /* TodoCustomOwnerExplicit+Schema.swift */,
11681174
76C0091B2736198700ADA120 /* TodoCustomOwnerImplicit.swift */,
@@ -2032,6 +2038,7 @@
20322038
762547CB2735FD0C00E5F6A3 /* PrivatePrivatePublicUPIAMAPIPost+Schema.swift in Sources */,
20332039
76C0091E2736198700ADA120 /* TodoCustomOwnerImplicit+Schema.swift in Sources */,
20342040
7617928827558BFA001EABD6 /* TodoCustomOwnerExplicit.swift in Sources */,
2041+
761792A62759443E001EABD6 /* AWSDataStoreCategoryPluginAuthOwnerIntegrationTests.swift in Sources */,
20352042
762547E42735FD0C00E5F6A3 /* GroupUPPost.swift in Sources */,
20362043
762547EF2735FD0C00E5F6A3 /* GroupPublicUPAPIPost.swift in Sources */,
20372044
762547E22735FD0C00E5F6A3 /* GroupPrivateUPIAMPost+Schema.swift in Sources */,
@@ -2067,6 +2074,7 @@
20672074
762547E72735FD0C00E5F6A3 /* PrivatePrivatePublicUPIAMIAMPost+Schema.swift in Sources */,
20682075
762547D12735FD0C00E5F6A3 /* OwnerPublicOIDAPIPost.swift in Sources */,
20692076
762547DD2735FD0C00E5F6A3 /* PrivatePrivateUPIAMPost+Schema.swift in Sources */,
2077+
761792A327594339001EABD6 /* TodoCognitoPrivate+Schema.swift in Sources */,
20702078
762547E12735FD0C00E5F6A3 /* GroupPublicUPIAMPost.swift in Sources */,
20712079
762547EC2735FD0C00E5F6A3 /* OwnerPrivateUPIAMPost+Schema.swift in Sources */,
20722080
76C0091D2736198700ADA120 /* TodoCustomOwnerImplicit.swift in Sources */,
@@ -2079,7 +2087,6 @@
20792087
21233DE02475935600039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests.swift in Sources */,
20802088
762547C12735FD0C00E5F6A3 /* PrivatePublicUPIAMPost+Schema.swift in Sources */,
20812089
762547D32735FD0C00E5F6A3 /* GroupPrivatePublicUPIAMAPIPost.swift in Sources */,
2082-
76C0092027361A8200ADA120 /* AWSDataStoreAuthImplicitExplicitOwnerTests.swift in Sources */,
20832090
7617929127559554001EABD6 /* TodoIAMPrivate.swift in Sources */,
20842091
762547D42735FD0C00E5F6A3 /* OwnerUPPost.swift in Sources */,
20852092
767C398B266EE4DA00CB64B9 /* AWSDataStoreMultiAuthThreeRulesTests.swift in Sources */,
@@ -2095,6 +2102,7 @@
20952102
21233E152476EFC400039337 /* AWSDataStoreCategoryPluginAuthIntegrationTests+Support.swift in Sources */,
20962103
769B2A1C267BEF7B00A084CD /* AuthRecorderInterceptor.swift in Sources */,
20972104
762547E02735FD0C00E5F6A3 /* PrivatePublicComboAPIPost+Schema.swift in Sources */,
2105+
761792A427594339001EABD6 /* TodoCognitoPrivate.swift in Sources */,
20982106
7617928927558BFA001EABD6 /* TodoCustomOwnerExplicit+Schema.swift in Sources */,
20992107
762547D62735FD0C00E5F6A3 /* PublicAPIPost+Schema.swift in Sources */,
21002108
762547E52735FD0C00E5F6A3 /* PrivatePublicPublicUPAPIIAMPost+Schema.swift in Sources */,

0 commit comments

Comments
 (0)