forked from bugsnag/bugsnag-cocoa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
user_persistence.feature
109 lines (89 loc) · 4.07 KB
/
user_persistence.feature
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Feature: Persisting User Information
Background:
Given I clear all persistent data
Scenario: User Info is persisted from config across app runs
When I run "UserPersistencePersistUserScenario"
# User is set and comes through
And I wait to receive a session
And I relaunch the app
Then the session is valid for the session reporting API
And the session "user.id" equals "foo"
And the session "user.email" equals "[email protected]"
And the session "user.name" equals "bar"
And I discard the oldest session
# Generate session and event
Then I run "UserPersistenceNoUserScenario"
And I wait to receive a session
And I wait to receive an error
And I relaunch the app
# Session - User persisted
Then the session is valid for the session reporting API
And the session "user.id" equals "foo"
And the session "user.email" equals "[email protected]"
And the session "user.name" equals "bar"
# Event - User persisted
Then the error is valid for the error reporting API
And the error payload field "events.0.user.id" equals "foo"
And the error payload field "events.0.user.email" equals "[email protected]"
And the error payload field "events.0.user.name" equals "bar"
Scenario: User Info is persisted from client across app runs
When I run "UserPersistencePersistUserClientScenario"
# Session is captured before the user can be set on the Client
And I wait to receive a session
And I wait for 1 second
And I relaunch the app
Then the session is valid for the session reporting API
And the session "user.id" is not null
And the session "user.email" is null
And the session "user.name" is null
And I discard the oldest session
# Generate session and event
Then I run "UserPersistenceNoUserScenario"
And I wait to receive a session
And I wait to receive an error
And I relaunch the app
# Session - User persisted
Then the session is valid for the session reporting API
And the session "user.id" equals "foo"
And the session "user.email" equals "[email protected]"
And the session "user.name" equals "bar"
# Event - User persisted
Then the error is valid for the error reporting API
And the error payload field "events.0.user.id" equals "foo"
And the error payload field "events.0.user.email" equals "[email protected]"
And the error payload field "events.0.user.name" equals "bar"
Scenario: User Info is not persisted across app runs
When I run "UserPersistenceDontPersistUserScenario"
# User is set and comes through
And I wait to receive a session
And I wait to receive an error
And I relaunch the app
# First Session
Then the session is valid for the session reporting API
And the session "user.id" equals "john"
And the session "user.email" equals "[email protected]"
And the session "user.name" equals "paul"
And I discard the oldest session
# First Event
Then the error is valid for the error reporting API
And the error payload field "events.0.user.id" equals "john"
And the error payload field "events.0.user.email" equals "[email protected]"
And the error payload field "events.0.user.name" equals "paul"
And I discard the oldest error
# Restart app - expect no user
When I run "UserPersistenceNoUserScenario"
And I wait to receive a session
And I wait to receive an error
# Second Session
Then the session is valid for the session reporting API
And the session "user.id" does not equal "john"
And the session "user.id" does not equal "foo"
And the session "user.email" is null
And the session "user.name" is null
# Second Event (Manually sent, non-persisted, generated id)
Then the error is valid for the error reporting API
And the error payload field "events.0.user.id" is not null
And the error payload field "events.0.user.id" does not equal "john"
And the error payload field "events.0.user.id" does not equal "foo"
And the error payload field "events.0.user.email" is null
And the error payload field "events.0.user.name" is null