@aj-shadow/actorjs-documentation-text 0.0.0-aj-beta.221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/.gitattributes +26 -0
  2. package/Documentation/Document-global-Be-100-more-efficient.txt +31 -0
  3. package/Documentation/Document-global-actorjs-trigger-mock-and-intercept-anything.txt +21 -0
  4. package/Documentation/Document-global-advanced-visualization.txt +28 -0
  5. package/Documentation/Document-global-debugging.txt +4 -0
  6. package/Documentation/Document-global-divide-and-reuse.txt +37 -0
  7. package/Documentation/Document-global-general-separation.txt +2 -0
  8. package/Documentation/Document-global-markup-anchor.txt +6 -0
  9. package/Documentation/Document-global-markup-api-status.txt +39 -0
  10. package/Documentation/Document-global-markup-chart-line.txt +18 -0
  11. package/Documentation/Document-global-markup-documentation-status.txt +39 -0
  12. package/Documentation/Document-global-markup-documentation.txt +72 -0
  13. package/Documentation/Document-global-markup-embed.txt +6 -0
  14. package/Documentation/Document-global-markup-flowchart.txt +88 -0
  15. package/Documentation/Document-global-markup-html.txt +122 -0
  16. package/Documentation/Document-global-markup-ie.txt +18 -0
  17. package/Documentation/Document-global-markup-image.txt +55 -0
  18. package/Documentation/Document-global-markup-lab.txt +63 -0
  19. package/Documentation/Document-global-markup-markup.txt +21 -0
  20. package/Documentation/Document-global-markup-navigation.txt +25 -0
  21. package/Documentation/Document-global-markup-node-diagram.txt +163 -0
  22. package/Documentation/Document-global-markup-note.txt +6 -0
  23. package/Documentation/Document-global-markup-ref.txt +6 -0
  24. package/Documentation/Document-global-markup-sequence-diagram.txt +215 -0
  25. package/Documentation/Document-global-markup-state-machine.txt +121 -0
  26. package/Documentation/Document-global-markup-table.txt +34 -0
  27. package/Documentation/Document-global-navigation-pane.txt +3 -0
  28. package/Documentation/Document-global-navigation.txt +2 -0
  29. package/Documentation/Document-global-specialized-javascript-editors.txt +2 -0
  30. package/Documentation/Document-global-stacks-connection.txt +2 -0
  31. package/Documentation/Document-global-stacks-server.txt +2 -0
  32. package/Documentation/Document-global-test-environment-overview.txt +15 -0
  33. package/Documentation/Document-global-the-architecture.txt +51 -0
  34. package/Documentation/Document-global-the-development-environment.txt +5 -0
  35. package/Documentation/Document-global-the-test-environment.txt +15 -0
  36. package/Documentation/Document-global-think-ahead.txt +35 -0
  37. package/Documentation/Document-global-thinking-in-actors-unlimited.txt +1 -0
  38. package/Documentation/Document-global-what-is-a-stack.txt +2 -0
  39. package/Documentation/Document-global-why-actorjs.txt +52 -0
  40. package/Documentation/Document-global-why-actors-unlimited.txt +182 -0
  41. package/Documentation/Document-global-x-test-case-tool.txt +2 -0
  42. package/Documentation/Navigation-Documentation-actorjs-global.txt +372 -0
  43. package/Documentation/Navigation-Documentation-actorsite-global.txt +363 -0
  44. package/Documentation/abstractions/Document-global-addressing.txt +81 -0
  45. package/Documentation/abstractions/Document-global-configuration-floor.txt +2 -0
  46. package/Documentation/abstractions/Document-global-content.txt +3 -0
  47. package/Documentation/abstractions/Document-global-functions-test.txt +4 -0
  48. package/Documentation/abstractions/Document-global-functions-unde-test.txt +2 -0
  49. package/Documentation/abstractions/Document-global-load-test.txt +3 -0
  50. package/Documentation/abstractions/Document-global-repo.txt +79 -0
  51. package/Documentation/abstractions/Document-global-shared-data.txt +5 -0
  52. package/Documentation/abstractions/Document-global-system-to-test.txt +2 -0
  53. package/Documentation/abstractions/Document-global-system-under-test.txt +3 -0
  54. package/Documentation/abstractions/Document-global-test-data.txt +251 -0
  55. package/Documentation/abstractions/Document-global-test-suite.txt +37 -0
  56. package/Documentation/abstractions/Document-global-verification-data.txt +103 -0
  57. package/Documentation/abstractions/actor/Document-global-actor-condition.txt +74 -0
  58. package/Documentation/abstractions/actor/Document-global-actor-local.txt +44 -0
  59. package/Documentation/abstractions/actor/Document-global-actor-originating.txt +100 -0
  60. package/Documentation/abstractions/actor/Document-global-actor-proxy.txt +119 -0
  61. package/Documentation/abstractions/actor/Document-global-actor-terminating.txt +101 -0
  62. package/Documentation/abstractions/actor/Document-global-actor.txt +90 -0
  63. package/Documentation/abstractions/actor/Document-global-execution-states.txt +21 -0
  64. package/Documentation/abstractions/actorpart/Document-global-actorpart.txt +2 -0
  65. package/Documentation/abstractions/stack/Document-global-client-connection.txt +3 -0
  66. package/Documentation/abstractions/stack/Document-global-connection.txt +3 -0
  67. package/Documentation/abstractions/stack/Document-global-decoder.txt +3 -0
  68. package/Documentation/abstractions/stack/Document-global-encoder.txt +3 -0
  69. package/Documentation/abstractions/stack/Document-global-message.txt +4 -0
  70. package/Documentation/abstractions/stack/Document-global-server-connection.txt +3 -0
  71. package/Documentation/abstractions/stack/Document-global-stack.txt +12 -0
  72. package/Documentation/abstractions/stack/Document-global-worker.txt +3 -0
  73. package/Documentation/abstractions/test-case/Document-global-phases.txt +30 -0
  74. package/Documentation/abstractions/test-case/Document-global-test-case-result.txt +23 -0
  75. package/Documentation/abstractions/test-case/Document-global-test-case.txt +199 -0
  76. package/Documentation/actor-api/Document-global-actor-part.txt +7 -0
  77. package/Documentation/actor-api/Document-global-actor.txt +375 -0
  78. package/Documentation/actor-api/Document-global-async.txt +176 -0
  79. package/Documentation/actor-api/Document-global-client-stack.txt +215 -0
  80. package/Documentation/actor-api/Document-global-content.txt +106 -0
  81. package/Documentation/actor-api/Document-global-logger.txt +426 -0
  82. package/Documentation/actor-api/Document-global-process.txt +7 -0
  83. package/Documentation/actor-api/Document-global-server-stack.txt +213 -0
  84. package/Documentation/actor-api/Document-global-shared-data.txt +259 -0
  85. package/Documentation/actor-api/Document-global-test-data.txt +816 -0
  86. package/Documentation/actor-api/Document-global-timer.txt +70 -0
  87. package/Documentation/actor-api/Document-global-verification-data.txt +624 -0
  88. package/Documentation/connection-worker-api/Document-global-logger.txt +3 -0
  89. package/Documentation/documentation-references.json +199 -0
  90. package/Documentation/embedded/Document-global-test-case-result.txt +10 -0
  91. package/Documentation/howto/Document-global-create-actor.txt +1 -0
  92. package/Documentation/howto/Document-global-create-stack.txt +1 -0
  93. package/Documentation/howto/Document-global-create-test-case.txt +1 -0
  94. package/Documentation/howto/Document-global-create-test-suite.txt +1 -0
  95. package/Documentation/howto/Document-global-define-addresses.txt +1 -0
  96. package/Documentation/howto/Document-global-define-fut.txt +1 -0
  97. package/Documentation/howto/Document-global-define-sut.txt +16 -0
  98. package/Documentation/howto/Document-global-full-workflow.txt +143 -0
  99. package/Documentation/howto/Document-global-normal-workflow.txt +58 -0
  100. package/Documentation/howto/Document-global-prerequisites.txt +8 -0
  101. package/Documentation/howto/prerequisites/Document-global-install-actorjs.txt +64 -0
  102. package/Documentation/howto/prerequisites/Document-global-install-git.txt +26 -0
  103. package/Documentation/howto/prerequisites/Document-global-install-nodejs.txt +19 -0
  104. package/Documentation/markup/Document-global-markup-test-case.txt +6 -0
  105. package/Documentation/markup/Document-global-markup-test-suite.txt +13 -0
  106. package/Documentation/markup/embed/Document-global-inner_markup_tc.txt +164 -0
  107. package/Documentation/nodejs-api/Document-global-fs.txt +7 -0
  108. package/Documentation/stack-api/Document-global-ascii-dictionary.txt +108 -0
  109. package/Documentation/stack-api/Document-global-binary-log.txt +91 -0
  110. package/Documentation/stack-api/Document-global-bit-byte.txt +80 -0
  111. package/Documentation/stack-api/Document-global-content-base.txt +169 -0
  112. package/Documentation/stack-api/Document-global-ip-log.txt +101 -0
  113. package/Documentation/stack-api/Document-global-log-inner.txt +152 -0
  114. package/Documentation/stack-api/Document-global-log-part-error.txt +12 -0
  115. package/Documentation/stack-api/Document-global-log-part-ref.txt +80 -0
  116. package/Documentation/stack-api/Document-global-log-part-text.txt +81 -0
  117. package/Documentation/tools/Document-global-actors.txt +196 -0
  118. package/Documentation/tools/Document-global-addressing.txt +38 -0
  119. package/Documentation/tools/Document-global-content.txt +1 -0
  120. package/Documentation/tools/Document-global-global-test-data.txt +197 -0
  121. package/Documentation/tools/Document-global-stacks.txt +1 -0
  122. package/Documentation/tools/Document-global-test-case-analyze.txt +3 -0
  123. package/Documentation/tools/Document-global-test-case-debug.txt +16 -0
  124. package/Documentation/tools/Document-global-test-case-definition.txt +37 -0
  125. package/Documentation/tools/Document-global-test-case-execution.txt +28 -0
  126. package/Documentation/tools/Document-global-test-case-log.txt +95 -0
  127. package/Documentation/tools/Document-global-test-case-sequence-diagram.txt +17 -0
  128. package/Documentation/tools/Document-global-test-case-specification.txt +3 -0
  129. package/Documentation/tools/Document-global-test-cases.txt +11 -0
  130. package/Documentation/tools/Document-global-tool-test-suite.txt +202 -0
  131. package/Education/Document-global-add-your-first-addresses.txt +75 -0
  132. package/Education/Document-global-define-your-first-sut.txt +18 -0
  133. package/Education/Document-global-make-your-first-actors.txt +35 -0
  134. package/Education/Document-global-make-your-first-test-case.txt +43 -0
  135. package/Education/Document-global-make-your-first-test-suite.txt +29 -0
  136. package/Education/Document-global-share-your-work.txt +35 -0
  137. package/Education/Navigation-Education-actorjs-global.txt +31 -0
  138. package/LICENSE.txt +96 -0
  139. package/README.md +5 -0
  140. package/Workshop/Document-global-actordemo-image-ai.txt +5 -0
  141. package/Workshop/Document-global-actordemo-login.txt +10 -0
  142. package/Workshop/Document-global-actordemo-site.txt +3 -0
  143. package/Workshop/Document-global-actordemo-start.txt +5 -0
  144. package/Workshop/Document-global-actordemo-the-architecture.txt +27 -0
  145. package/Workshop/Document-global-introduction-actor.txt +84 -0
  146. package/Workshop/Document-global-introduction-actorjs.txt +42 -0
  147. package/Workshop/Document-global-introduction-stack.txt +25 -0
  148. package/Workshop/Document-global-introduction-system-under-test.txt +102 -0
  149. package/Workshop/Document-global-introduction-test-case.txt +50 -0
  150. package/Workshop/Document-global-introduction-test-suite.txt +31 -0
  151. package/Workshop/Document-global-login-with-puppeter.txt +45 -0
  152. package/Workshop/Document-global-mock-with-http.txt +83 -0
  153. package/Workshop/Document-global-mock-with-icap.txt +94 -0
  154. package/Workshop/Document-global-prerequisites-actorJs.txt +18 -0
  155. package/Workshop/Document-global-prerequisites-actordemo.txt +15 -0
  156. package/Workshop/Document-global-trigger-with-http.txt +93 -0
  157. package/Workshop/Document-global-trigger-with-puppeter.txt +49 -0
  158. package/Workshop/Navigation-Workshop-actorjs-global.txt +86 -0
  159. package/npm-shrinkwrap.json +13 -0
  160. package/package.json +10 -0
@@ -0,0 +1,251 @@
1
+ [[NOTE={"guid":"ff553d94-1ee1-4dc2-8a38-c41a57118259"}]]
2
+ # **Test Data Abstraction**
3
+ ## **Description**
4
+ All kinds of data that the [[REF=, ABS_Actor]]s might need to execute is called [[REF=, ABS_Test_Data]], except data needed for verification which is called [[REF=, ABS_Verification_Data]] and MIME formatted data which is called [[REF=, ABS_Content]]. To be able to reuse an [[REF=, ABS_Actor]] in many [[REF=, ABS_Test_Case]]s, the [[REF=, ABS_Test_Data]] must be separated from the implementation. [[REF=, ABS_Test_Data]] required by a [[REF=, ABS_Test_Case]] is not explicitly determined by the [[REF=, ABS_Test_Case]]; the [[REF=, ABS_Actor]]s decide what [[REF=, ABS_Test_Data]] they need.
5
+
6
+ See how to use it in the [[REF=, API_Actor_Test_Data]].
7
+
8
+ [[ANCHOR={"id":"test-data-processing","visible":true}]]
9
+ [[NOTE={"guid":"d119bea5-2635-432e-a382-ac67a08656fc"}]]
10
+ ## **Test Data processing**
11
+ Generation of the required [[REF=, ABS_Test_Data]] involves very complex processing of the [[REF=, ABS_Test_Data]].
12
+ ```node
13
+ Config(nodeWidth: 100, nodeHeight: 35, nodeWidthBetween: 25, nodeHeightBetween: 25, widthBias: 30, heightBias: 30, border: true, backgroundColor: default)
14
+
15
+ Nodes[API call, Table Lookup, Formatting, Dictionary, Result]
16
+ Nodes[, Default Value, , JSON.parse || cast]
17
+
18
+
19
+ API call => Table Lookup[, , , false]:
20
+ Table Lookup => Default Value[, , , false]:
21
+ Table Lookup => Formatting[, , , false]:
22
+ Default Value => Formatting[, , , false]:
23
+ Formatting => Dictionary[, , , false]:
24
+ Formatting => JSON.parse || cast[, , left, false]:
25
+ Dictionary => Result[, , , false]:
26
+ JSON.parse || cast => Result[, , , false]:
27
+ ```
28
+ [[ANCHOR={"id":"test-data-processing-steps","visible":true}]]
29
+ [[NOTE={"guid":"3c03c953-a74d-4f55-981e-da0bd3502536"}]]
30
+ ### **Test Data processing steps:**
31
+ 1) An [[REF=, ABS_Actor]] calls a method in the [[REF=, API_Actor_Test_Data]].
32
+ 2) [[REF=, ABS_Test_Data_Input]] is found:
33
+ * Through a [[REF=, ABS_Test_Data_Table_Lookup]] in one of the [[REF=, ABS_Test_Data]] tables, or
34
+ * As [[REF=, ABS_Test_Data_Default_Value]] provided in the call to the [[REF=, API_Actor_Test_Data]]
35
+ 3) If ***value*** contains a ***key*** to other [[REF=, ABS_Test_Data]], [[REF=Formatting, ABS_Test_Data_Formatting]] is performed; that is, ***value*** = [[IE="Hello **$[**name**]**, how do you do?"]] contains the ***key*** name.
36
+ 4) Once [[REF=, ABS_Test_Data_Formatting]] is complete, one of the following [[REF=, ABS_Test_Data_Transformations]] can be performed in these cases:
37
+ * If the [[REF=, ABS_Actor]] provides a [[REF=, ABS_Test_Data_Dictionary]], then this [[REF=, ABS_Test_Data_Dictionary]] is used, or
38
+ * If the type is incorrect, a JSON.parse or cast will be performed
39
+ 5) The [[REF=, ABS_Test_Data_Resulting]] is returned or an exception is thrown.
40
+
41
+ [[ANCHOR={"id":"test-data-flowchart","visible":true}]]
42
+ ```flow
43
+ Title: Test Data Processing Flowchart
44
+ Blocks[, Start(start:getTestData...::)]
45
+ Blocks[]
46
+ Blocks[, getValue(action:get table value with key::)]
47
+ Blocks[]
48
+ Blocks[, dValue(decision:table value found ?::), ]
49
+ Blocks[]
50
+ Blocks[yesValue(action:format value::), , , noValue(action:get default::)]
51
+ Blocks[forAllKeys(action:for all found keys::)]
52
+ Blocks[callTestData...(action:call getTestData::), , , dDefault(decision:default found ?::), ]
53
+ Blocks[]
54
+ Blocks[, , dDefaultType(decision:typeof default ?::), , noDefault(end:exception:#e74c3c:)]
55
+ Blocks[]
56
+ Blocks[, , , function(action:function returns value::)]
57
+ Blocks[, value(end:value::)]
58
+ Blocks[]
59
+ Blocks[, dDictionary(decision:dictionary found ?::)]
60
+ Blocks[]
61
+ Blocks[yesDictionary(action:lookup value::), , nodDictionary(decision:correct type ?::)]
62
+ Blocks[]
63
+ Blocks[, , , noType(action:JSON.parse || cast::)]
64
+ Blocks[notFound(end:exception:#e74c3c:), yesType(end:value: #2ecc71 :), , , parseCastError(end:exception:#e74c3c:)]
65
+
66
+ Start => getValue[unknown]:
67
+ getValue => dValue[unknown]:
68
+ dValue => yesValue[unknown]: yes
69
+ dValue => noValue[unknown]: no
70
+ noValue => dDefault[unknown]:
71
+ yesValue => [unknown]: yesValue => dDefaultType
72
+ dDefault => dDefaultType[unknown]: yes
73
+ dDefault => noDefault[unknown]: no
74
+ dDefaultType => value[unknown]: string
75
+ dDefaultType => function[unknown]: function
76
+ yesValue => value[unknown]:
77
+ function => value[unknown]:
78
+ value => dDictionary[unknown]:
79
+ dDictionary => yesDictionary[unknown]: yes
80
+ dDictionary => nodDictionary[unknown]: no
81
+ yesDictionary => yesType[unknown]: found
82
+ yesDictionary => notFound[unknown]: not found
83
+ nodDictionary => yesType[unknown]: yes
84
+ nodDictionary => noType[unknown]: no
85
+ noType => yesType[unknown]: ok
86
+ noType => parseCastError[unknown]: failure
87
+ ```
88
+ [[ANCHOR={"id":"test-data-input","visible":true}]]
89
+ [[NOTE={"guid":"02da482d-c148-456a-8948-d2282f59117d"}]]
90
+ ## **Test Data input**
91
+ [[ANCHOR={"id":"test-data-format","visible":true}]]
92
+ [[NOTE={"guid":"0f48e652-1da5-49de-bcbb-20ad64394db6"}]]
93
+ ### **Test Data format**
94
+ The general format of [[REF=, ABS_Test_Data]] is:
95
+ 1) **key**: name of the [[REF=, ABS_Test_Data]].
96
+ 2) **value**: value of the [[REF=, ABS_Test_Data]]. The string ***value*** must be in a format so a cast or a JSON.parse can transform it into the requested type.
97
+ 3) **description**: optional text added to describe the purpose of [[REF=, ABS_Test_Data]].
98
+
99
+ [[ANCHOR={"id":"test-data-types","visible":true}]]
100
+ [[NOTE={"guid":"47c85525-9dbc-43bf-a3e9-71dc0887a388"}]]
101
+ ### **Test Data types**
102
+ * [[REF=, MDN_string]], a string, [[IE='this is a string']].
103
+ * [[REF=, MDN_strings]], a string array, [[IE=["This is the first string", "This is the second string"] ]].
104
+ * [[REF=, MDN_arraystrings]], an array of string arrays, [ [IE=[["This", "is", "the", "first", "array"], ["The", "second", "array"] ] ]]
105
+ * [[REF=, MDN_number]], a number, [[IE=1, -39, 1.2222]].
106
+ * [[REF=, MDN_numbers]], a number array, [[IE=[1, 2] ]].
107
+ * [[REF=, MDN_arraynumbers]], an array of number arrays, [[IE=[ [11, 12, 13, 14], [21, 22, 23, 24] ] ]]
108
+ * [[REF=, MDN_boolean]], a boolean, [[IE=true || false]] else [[IE=undefined]].
109
+ * [[REF=, MDN_booleans]], a boolean array, [[IE=[true, false, false, true, undefined] ]]
110
+ * [[REF=, MDN_arraybooleans]], an array of boolean arrays, [[IE=[ [true, false, false, true, undefined], [true, true, true, true] ] ]]
111
+ * [[REF=, MDN_object]], an object, [[IE={name: 'hello', age: 32}]].
112
+
113
+ More [[REF=, ABS_Test_Data]] types will be added in the future, but for now developers of [[REF=, ABS_Actor]]s can read in data as strings and then *cast* them as needed.
114
+
115
+ [[ANCHOR={"id":"test-data-source","visible":true}]]
116
+ [[NOTE={"guid":"b816d6aa-3163-4b70-a426-a0507f6271ef"}]]
117
+ ### **Test Data source**
118
+ [[REF=, ABS_Test_Data]] can be provided in several ways. For [[REF=, ABS_Test_Case]]s and [[REF=, ABS_Test_Data]] to be maintainable, it is important to store the [[REF=, ABS_Test_Data]] in the correct layer according to its intended use:
119
+
120
+ 1) [[REF=, ABS_Local_Test_Data]] layer: [[REF=, ABS_Test_Data]] will be used only by [[REF=, ABS_Actor]]s in the [[REF=, ABS_Test_Case]].
121
+
122
+ 2) [[REF=, ABS_Global_Test_Data]] layer: [[REF=, ABS_Test_Data]] will be global and used by all kinds of [[REF=, ABS_Test_Case]]s.
123
+
124
+ 3) [[REF=, ABS_Static_Test_Data]] layer: [[REF=, ABS_Test_Data]] will be static so it can be either hard-coded in the [[REF=, ABS_Actor]] or provided by the [[REF=, API_Actor_Test_Data]].
125
+
126
+ `IMPORTANT! DO NOT:`
127
+ 1) Store [[REF=, ABS_Local_Test_Data]] as [[REF=, ABS_Global_Test_Data]]. Updating this [[REF=, ABS_Test_Data]] will affect all [[REF=, ABS_Actor]]s using this data.
128
+
129
+ 2) Store [[REF=, ABS_Global_Test_Data]] as [[REF=, ABS_Local_Test_Data]]. Doing so will create significant maintenance problems! Any single update will require updates in all [[REF=, ABS_Test_Case]]s using this [[REF=, ABS_Test_Data]].
130
+ 3) Use [[REF=, ABS_Static_Test_Data]] when changes are needed for different [[REF=, ABS_Test_Case]]s.
131
+
132
+ #### **Tools for handling Test Data**
133
+ * [[REF=, ABS_Local_Test_Data]] is handled in the [[REF=, TOOL_Test_Case_Definition]].
134
+
135
+ * [[REF=, ABS_Global_Test_Data]] is handled in the [[REF=, TOOL_Global_Test_Data]].
136
+
137
+ * [[REF=, ABS_Static_Test_Data]] is handled in the implementation of an [[REF=, ABS_Actor]] in the [[REF=, TOOL_Actor_Editor]].
138
+
139
+ [[ANCHOR={"id":"test-data-table-lookup","visible":true}]]
140
+ [[NOTE={"guid":"3def3e11-9c95-45ad-84a5-a0bee2947a19"}]]
141
+ ### **Table Lookup**
142
+ When an [[REF=, ABS_Actor]] requires [[REF=, ABS_Test_Data]], the [[REF=, API_Actor_Test_Data]] searches for [[REF=, ABS_Test_Data]] layer by layer in the following order: Local, Global, Static. The first occurrence found will be the returned [[REF=, ABS_Test_Data]]. This makes the [[REF=, ABS_Test_Data]] overrideable; for example, if [[REF=, ABS_Test_Data]] is set in the global tables, this [[REF=, ABS_Test_Data]] will be used as long as no [[REF=, ABS_Test_Data]] with the same **key** is found in the local tables.
143
+
144
+ ##### **Test Data layer search order:**
145
+ * [[REF=, ABS_Test_Data_Runtime_Layer]]
146
+ * [[REF=, ABS_Test_Data_Local_Layer]]
147
+ * [[REF=, ABS_Test_Data_Global_Layer]]
148
+ * [[REF=, ABS_Test_Data_Static_Layer]]
149
+
150
+ [[ANCHOR={"id":"runtime-test-data-layer","visible":true}]]
151
+ [[NOTE={"guid":"afaa3196-2376-4cbe-87b2-f06d65e9138d"}]]
152
+ #### **Runtime Test Data layer** `Not Implemented`
153
+ The layer contains data generated in runtime in the [[REF=, ABS_Actor]]s. The [[REF=, ABS_Actor]]s can proved an array with [[REF=, ABS_Test_Data]] to the [[REF=, API_Actor_Test_Data]]. The format is an array where every array element contains an array defining ***key*** and ***value***.
154
+ ##### **Example**
155
+ ```javascript
156
+
157
+ const myRuntimeTestData = [['name', 'john'], [age, 31]];
158
+
159
+ ```
160
+
161
+ [[ANCHOR={"id":"local-test-data-layer","visible":true}]]
162
+ [[NOTE={"guid":"46b20c60-3a5c-4376-ab6e-452fe1857e0b"}]]
163
+ #### **Local Test Data layer**
164
+ The [[REF=, ABS_Local_Test_Data]] layer contains the following sub-layers:
165
+ * Actor Test Data layer
166
+ * Test Data Iteration layer
167
+ * Test Case Test Data layer
168
+
169
+ [[ANCHOR={"id":"global-test-data-layer","visible":true}]]
170
+ [[NOTE={"guid":"0c105321-c172-46b0-b806-06bf966bb32d"}]]
171
+
172
+ #### **Global Test Data layer**
173
+ The [[REF=, ABS_Global_Test_Data]] layer contains the following sub-layers:
174
+ * [[REF=, TOOL_Global_Test_Data_General]]
175
+ * [[REF=, TOOL_Global_Test_Data_General_Local]] – [[REF=, ABS_Repo_Local]]
176
+ * [[REF=, TOOL_Global_Test_Data_General_Global]] – [[REF=, ABS_Repo_Global]]
177
+ * [[REF=, TOOL_Global_Test_Data_System]]
178
+ * [[REF=, TOOL_Global_Test_Data_System_Local]] – [[REF=, ABS_Repo_Local]]
179
+ * [[REF=, TOOL_Global_Test_Data_System_Global]] – [[REF=, ABS_Repo_Global]]
180
+ * [[REF=, TOOL_Global_Test_Data_Log]]
181
+ * [[REF=, TOOL_Global_Test_Data_Log_Local]] – [[REF=, ABS_Repo_Local]]
182
+ * [[REF=, TOOL_Global_Test_Data_Log_Global]] – [[REF=, ABS_Repo_Global]]
183
+ * [[REF=, TOOL_Global_Test_Data_Environment]]
184
+ * [[REF=, TOOL_Global_Test_Data_Environment_Local]] – [[REF=, ABS_Repo_Local]]
185
+ * [[REF=, TOOL_Global_Test_Data_Environment_Global]] – [[REF=, ABS_Repo_Global]]
186
+ * [[REF=, TOOL_Global_Test_Data_Environment_Static]] – static
187
+
188
+ [[ANCHOR={"id":"test-data-default-value","visible":true}]]
189
+ [[NOTE={"guid":"c8fe90ab-115d-4260-a077-cc76e992f0aa"}]]
190
+ ### **Default Value**
191
+ [[ANCHOR={"id":"static-test-data-layer","visible":true}]]
192
+ [[NOTE={"guid":"a267256c-d8c4-47ee-ac41-4a2099a898c4"}]]
193
+ #### **Static Test Data layer**
194
+ The [[REF=, ABS_Static_Test_Data]] layer contains hard-coded default values from the implementation of [[REF=, ABS_Actor]]s or values provided by the [[REF=, API_Actor_Test_Data]]:
195
+ * [[REF=, TOOL_Global_Test_Data_Environment_Static]] – static
196
+
197
+ [[ANCHOR={"id":"test-data-formatting","visible":true}]]
198
+ [[NOTE={"guid":"9b93a17b-cb3a-4adb-9b41-03f07ac87a6b"}]]
199
+ ## **Test Data formatting**
200
+ [[REF=, ABS_Test_Data]] can contain references to other [[REF=, ABS_Test_Data]]. [[REF=, ABS_Test_Data]] is constructed by a key/value pair, and if the value contains references to other [[REF=, ABS_Test_Data]], formatting will take place. [[REF=, ABS_Test_Data]] can contain references to [[REF=, ABS_Test_Data]], which in turn contains references to [[REF=, ABS_Test_Data]], which in turn contains ...and so on. However, circular references are not allowed.
201
+
202
+ The format of being be able to link to another [[REF=, ABS_Test_Data]] is similar to JavaScript's *template string*, but square brackets are used instead of regular brackets.
203
+
204
+ **Example**
205
+ {**key**: 'name', **value**: 'Bill'} [[IE=No formatting: "Bill"]].
206
+ {**sentence**: 'name', **value**: 'Hello $[name], How do you do?'} [[IE=Formatting: "Hello Bill, How do you do?"]].
207
+
208
+ **$[**name**]** is now replaced by the value of the [[REF=, ABS_Test_Data]] with the value identified by the **key** "name", which in this example is Bill.
209
+
210
+ [[ANCHOR={"id":"test-data-transformations","visible":true}]]
211
+ [[NOTE={"guid":"07177719-e39e-4e9b-ab64-7bba1af347bd"}]]
212
+ ## **Transformations**
213
+ If a [[REF=, ABS_Test_Data_Dictionary]] is provided, this [[REF=, ABS_Test_Data_Dictionary]] will be used to transform the [[REF=, ABS_Test_Data]]. Otherwise, the [[REF=, API_Actor_Test_Data]] could cast to the requested type, or perform a JSON.parse to form arrays or objects.
214
+ [[ANCHOR={"id":"test-data-dictionary","visible":true}]]
215
+ [[NOTE={"guid":"bfb63d24-65f5-49a5-9e56-acb2f5717342"}]]
216
+ ### **Test Data Dictionary**
217
+ When a [[REF=, ABS_Test_Data_Dictionary]] is provided, [[REF=Reflection, MDN_Reflect]] is used to find a member with the name equal to ***value*** of the [[REF=, ABS_Test_Data]]. When a member is found, ***value*** is set to that member's value. This pattern enables the implementation of an [[REF=, ABS_Actor]] to avoid long **if** or **switch** statements.
218
+
219
+ **Example**
220
+ ```javascript
221
+
222
+ const e = this.getTestDataString('demoKeyObject', 'AP', {
223
+ ASAP: 'As soon as Possible',
224
+ FYI: 'For your information',
225
+ AP: 'Action point'
226
+ });
227
+ }
228
+ ```
229
+ * **Value** of [[REF=, ABS_Test_Data]] demoKeyObject is 'ASAP': the resulting [[REF=, ABS_Test_Data]] will be [[IE=As soon as Possible]]
230
+ * **Value** of [[REF=, ABS_Test_Data]] demoKeyObject is 'FYI: the resulting [[REF=, ABS_Test_Data]] will be [[IE=For your information]]
231
+ * **Value** of [[REF=, ABS_Test_Data]] demoKeyObject is 'AP: the resulting [[REF=, ABS_Test_Data]] will be [[IE=Action point]]
232
+ * **Value** of [[REF=, ABS_Test_Data]] demoKeyObject is not found: the resulting [[REF=, ABS_Test_Data]] will be [[IE=Action point]], because the [[REF=, ABS_Test_Data_Default_Value]] **value** is 'AP'
233
+ [[ANCHOR={"id":"test-data-resulting-test-data","visible":true}]]
234
+ [[NOTE={"guid":"cac3f4f5-4961-4994-92d2-da110867b46d"}]]
235
+ ## **Resulting Test Data**
236
+ If any [[REF=, ABS_Test_Data_Resulting]] is available, this [[REF=, ABS_Test_Data_Resulting]] will be returned from the [[REF=, API_Actor_Test_Data]] method.
237
+
238
+ If no [[REF=, ABS_Test_Data_Resulting]] is available, an exception is thrown and the [[REF=, ABS_Test_Case]] will end with result: Error. The error log will describe what went wrong.
239
+
240
+ <br>
241
+ <br>
242
+ <br>
243
+ <br>
244
+ <br>
245
+ <br>
246
+ <br>
247
+ <br>
248
+ <br>
249
+ <br>
250
+ <br>
251
+ <br>
@@ -0,0 +1,37 @@
1
+ # **Test Suite Abstraction**
2
+
3
+ ## **Description**
4
+
5
+
6
+ [[ANCHOR={"id":"7f833cd6-1770-45b8-96b9-32423f91fbda","visible":true}]]
7
+ [[NOTE={"guid":"4bcabc8f-99ca-487d-9c1c-a0d0d0a788e2"}]]
8
+ ### **Creating a Test Suite**
9
+ [[ANCHOR={"id":"5c3f4148-fb0d-42fc-9984-0d86e3f51848","visible":true}]]
10
+ [[NOTE={"guid":"87a9842a-16a2-4eaa-99d4-29ea7a3c50f8"}]]
11
+ #### **Table**
12
+ To Create a [[REF=, ABS_Test_Suite]] it is just to create a table with the [[REF=, ABS_Test_Case]]s and [[REF=, ABS_Test_Suite]]s to be executed.
13
+ ```ts
14
+ |TestSuiteAbstraction |
15
+ |name |execution|iterations|
16
+ |tc.Actor.Demo.DemoMobileBrowsingLogin | | |
17
+ |tc.Actor.Demo.DemoMobileBrowsingGetImage | | |
18
+ |tc.Actor.Demo.DemoMobileBrowsingRightsGetImage| | |
19
+ |tc.Actor.Demo.DemoMobileBrowsingImageBmp | | |
20
+ |tc.Actor.Demo.DemoMobileBrowsingImageGif | | |
21
+ |tc.Actor.Demo.DemoMobileBrowsingImageJpg | | |
22
+ ```
23
+ [[ANCHOR={"id":"322e8788-50aa-4d9b-889e-96a0ba2d70cf","visible":true}]]
24
+ [[NOTE={"guid":"d6466c03-7924-44b8-8500-9ddbb19ffc3c"}]]
25
+ #### **Markup**
26
+ Editing the tables will be done in a markup text format. This means that they will be easy to store in a repo and it will be easy to merge them.
27
+ ```escape
28
+
29
+ |TestSuiteAbstraction |
30
+ |name |execution|iterations|
31
+ |tc.Actor.Demo.DemoMobileBrowsingLogin | | |
32
+ |tc.Actor.Demo.DemoMobileBrowsingGetImage | | |
33
+ |tc.Actor.Demo.DemoMobileBrowsingRightsGetImage| | |
34
+ |tc.Actor.Demo.DemoMobileBrowsingImageBmp | | |
35
+ |tc.Actor.Demo.DemoMobileBrowsingImageGif | | |
36
+ |tc.Actor.Demo.DemoMobileBrowsingImageJpg | | |
37
+ ```
@@ -0,0 +1,103 @@
1
+ # **Verification Data Abstraction**
2
+ ## **Description**
3
+ All kinds of data that the [[REF=, ABS_Actor]]s might need to perform verification is called [[REF=, ABS_Verification_Data]]. To be able to reuse an [[REF=, ABS_Actor]] in many [[REF=, ABS_Test_Case]]s, the [[REF=, ABS_Verification_Data]] must be separated from the implementation. [[REF=, ABS_Verification_Data]] required by a [[REF=, ABS_Test_Case]] is not explicitly determined by the [[REF=, ABS_Test_Case]]; the [[REF=, ABS_Actor]]s decide what [[REF=, ABS_Verification_Data]] they need.
4
+
5
+ [[REF=, ABS_Verification_Data]] is separated from [[REF=, ABS_Test_Data]] to simplify the management of data. [[REF=, ABS_Verification_Data]] can use [[REF=, ABS_Test_Data]] and [[REF=, ABS_Test_Data_Formatting]].
6
+
7
+ ## **Types of Verifications**
8
+ There are three types of verification:
9
+ * [[REF=, ABS_Verification_Data_Value]]
10
+ * [[REF=, ABS_Verification_Data_Optional]]
11
+ * [[REF=, ABS_Verification_Data_Mandatory]]
12
+
13
+ [[ANCHOR={"id":"verify-value","visible":true}]]
14
+ [[NOTE={"guid":"fa901d92-3e22-4313-9283-5be1093356f4"}]]
15
+ ### **Verify Value**
16
+ Verify Value is hard-coded verification in the [[REF=, ABS_Actor]]. This verification is used when the [[REF=, ABS_Actor]] always expects the same value.
17
+ #### **Example**
18
+ When getting an image over http we know that we always expect a 200 Ok as response to succeed the [[REF=, ABS_Test_Case]].
19
+ ```seq
20
+ Config(nodeWidth: 150, nodeMessageHeight: 17, nodeEventHeight: 10, nodeCommentHeight: 26, widthBias: 30, heightBias: 30, lineNumbers: false, border: true, backgroundColor: default)
21
+
22
+ Nodes[orig, SUT, term]
23
+ orig => SUT[http]: GET /image
24
+ SUT => term[http]: GET /image
25
+ term => SUT[http]: 200 Ok
26
+ SUT => orig[http]: 200 Ok
27
+ ```
28
+ ```javascript
29
+
30
+ this.httpConnection.send(new HttpMsgGetRequest(this.requistUri));
31
+
32
+ const response = this.httpConnection.receive();
33
+ VERIFY_VALUE(HttpApi.StatusCode.OK, response.statusCode, ' HTTP response line status code:');
34
+
35
+ ```
36
+
37
+ [[ANCHOR={"id":"verify-optional","visible":true}]]
38
+ [[NOTE={"guid":"391155b6-6eb3-420c-ac0c-f66bc1d65382"}]]
39
+ ### **Verify Optional**
40
+ Verify Optional is verification in the [[REF=, ABS_Actor]] where the developer can choose in the [[REF=, ABS_Test_Case]] to do the verification or not. If the expected value is not provided in the [[REF=, ABS_Test_Case]] the verification will not be done and it will succeed.
41
+
42
+ #### **Example**
43
+ When getting an image over http the developer of the [[REF=, ABS_Actor]] can let developer of the [[REF=, ABS_Actor]] to choose to verify the response or not in the [[REF=, ABS_Test_Case]].
44
+ ```seq
45
+ Config(nodeWidth: 150, nodeMessageHeight: 17, nodeEventHeight: 10, nodeCommentHeight: 26, widthBias: 30, heightBias: 30, lineNumbers: false, border: true, backgroundColor: default)
46
+
47
+ Nodes[orig, SUT, term]
48
+ orig => SUT[http]: GET /image
49
+ SUT => term[http]: GET /image
50
+ term => SUT[http]: 200 Ok
51
+ SUT => orig[http]: 200 Ok
52
+ ```
53
+ ```javascript
54
+
55
+ this.httpConnection.send(new HttpMsgGetRequest(this.requistUri));
56
+
57
+ const response = this.httpConnection.receive();
58
+ VERIFY_VALUE(HttpApi.StatusCode.OK, response.statusCode, ' HTTP response line status code:');
59
+ VERIFY_CONTENT_OPTIONAL('content-name', response.getHeaderNumber(HttpApi.Header.CONTENT_LENGTH), response.getBody());
60
+
61
+ ```
62
+ Only if the developer of the [[REF=, ABS_Test_Case]] provides the value the verification will take place.
63
+ ```tc
64
+ |TestDataTestCase |
65
+ |key |value |description|
66
+ |content-name|pettersson| |
67
+ | | | |
68
+ ```
69
+
70
+ [[ANCHOR={"id":"verify-mandatory","visible":true}]]
71
+ [[NOTE={"guid":"4feef5af-d2c8-445d-88fd-877869004e61"}]]
72
+ ### **Verify Mandatory**
73
+ Verify Mandatory is verification in the [[REF=, ABS_Actor]] where the developer must provide the expected value in the [[REF=, ABS_Test_Case]]. If the expected value is not provided in the [[REF=, ABS_Test_Case]], the verification will fail.
74
+
75
+ #### **Example**
76
+ When getting an image over http the developer of the [[REF=, ABS_Actor]] can force the developer of the [[REF=, ABS_Test_Case]] to verify the response in the [[REF=, ABS_Test_Case]].
77
+ ```seq
78
+ Config(nodeWidth: 150, nodeMessageHeight: 17, nodeEventHeight: 10, nodeCommentHeight: 26, widthBias: 30, heightBias: 30, lineNumbers: false, border: true, backgroundColor: default)
79
+
80
+ Nodes[orig, SUT, term]
81
+ orig => SUT[http]: GET /image
82
+ SUT => term[http]: GET /image
83
+ term => SUT[http]: 200 Ok
84
+ SUT => orig[http]: 200 Ok
85
+ ```
86
+ ```javascript
87
+
88
+ this.httpConnection.send(new HttpMsgGetRequest(this.requistUri));
89
+
90
+ const response = this.httpConnection.receive();
91
+ VERIFY_VALUE(HttpApi.StatusCode.OK, response.statusCode, ' HTTP response line status code:');
92
+ VERIFY_CONTENT_MANDATORY('content-name', response.getHeaderNumber(HttpApi.Header.CONTENT_LENGTH), response.getBody());
93
+
94
+ ```
95
+
96
+ The developer of the [[REF=, ABS_Test_Case]] must provide the value for the verification else it will fail.
97
+ ```tc
98
+ |TestDataTestCase |
99
+ |key |value |description|
100
+ |content-name|pettersson| |
101
+ | | | |
102
+ ```
103
+
@@ -0,0 +1,74 @@
1
+ # **Actor Condition**
2
+
3
+ ## **Description**
4
+ The [[REF=, ABS_Actor_Condition]] does have client capabilities. It means that it can use a [[REF=, ABS_Stack_Client_Connection]]s to setup connections and communicate with servers.
5
+ The [[REF=, ABS_Actor_Condition]] can be used in the [[REF=, ABS_Test_Case_Phase_Precondition]] and the [[REF=, ABS_Test_Case_Phase_Postcondition]]. The [[REF=, ABS_Actor_Condition]] is special constructed for restoring configuration at the [[REF=, ABS_System_Under_Test]]. If it succeeded in the [[REF=, ABS_Test_Case_Phase_Precondition]] it will also be executed in the [[REF=, ABS_Test_Case_Phase_Postcondition]] even if there is an error or failure!
6
+
7
+ ## **States**
8
+ The [[REF=, ABS_Actor_Originating]] supports the following [[REF=, ABS_Actor_State_Execution]]:
9
+ * ***data**
10
+ * ***initClientPre**
11
+ * ***runPre**
12
+ * ***exitPre**
13
+ * ***initClientPost**
14
+ * ***runPost**
15
+ * ***exitPost**
16
+
17
+ ```state
18
+ Title: ActorCondition
19
+ Config(width: 400, height: 200, widthBias: 25, heightBias: 25)
20
+
21
+ States[data, initClientPre, runPre]
22
+ States[, , exitPre]
23
+ States[, , initClientPost, runPost]
24
+ States[, done, , exitPost]
25
+
26
+ data -> initClientPre[success]: success
27
+ data -> done[failure]: error, failure, interrupt
28
+ initClientPre -> runPre[success]: success
29
+ initClientPre -> done[failure]: error, failure, interrupt
30
+ runPre -> exitPre[normal]: always
31
+ exitPre -> initClientPost[normal]: always
32
+ initClientPost -> runPost[success]: success
33
+ initClientPost -> done[failure]: error, failure
34
+ runPost -> exitPost[normal]: always
35
+ exitPost -> done[normal]: always
36
+ ```
37
+
38
+ ## **Example 1 - Actor Condition Wizard**
39
+ Here is the code produced by the [[REF=, ABS_Actor_Condition]] Wizard.
40
+ ```javascript
41
+
42
+ const ActorApi = require('actor-api');
43
+
44
+
45
+ class NotImplementedCond extends ActorApi.ActorCondition {
46
+ constructor() {
47
+ super();
48
+ }
49
+
50
+ *data() {
51
+ }
52
+
53
+ *initClientPre() {
54
+ }
55
+
56
+ *runPre() {
57
+ }
58
+
59
+ *exitPre() {
60
+ }
61
+
62
+ *initClientPost() {
63
+ }
64
+
65
+ *runPost() {
66
+ }
67
+
68
+ *exitPost() {
69
+ }
70
+ }
71
+
72
+ module.exports = NotImplementedCond;
73
+
74
+ ```
@@ -0,0 +1,44 @@
1
+ # **Actor Local**
2
+
3
+ ## **Description**
4
+ The [[REF=, ABS_Actor_Local]] does not have any client or server capabilities. It is usually used to verify or calculate Data. The [[REF=, ABS_Actor_Local]] can be used in all [[REF=, ABS_Test_Case_Phases]].
5
+
6
+ ## **States**
7
+ The [[REF=, ABS_Actor_Local]] supports the following [[REF=, ABS_Actor_State_Execution]]:
8
+ * ***data**
9
+ * ***run**
10
+
11
+ ```state
12
+ Title: ActorLocal
13
+ Config(width: 400, height: 200, widthBias: 25, heightBias: 25)
14
+
15
+ States[data, run]
16
+ States[, done]
17
+
18
+ data -> run[success]: success
19
+ data -> done[failure]: error, failure, interrupt
20
+ run -> done[normal]: always
21
+ ```
22
+
23
+ ## **Example 1 - Actor Local Wizard**
24
+ Here is the code produced by the [[REF=, ABS_Actor_Local]] Wizard.
25
+ ```javascript
26
+
27
+ const ActorApi = require('actor-api');
28
+
29
+
30
+ class NotImplementedLocal extends ActorApi.ActorLocal {
31
+ constructor() {
32
+ super();
33
+ }
34
+
35
+ *data() {
36
+ }
37
+
38
+ *run() {
39
+ }
40
+ }
41
+
42
+ module.exports = NotImplementedLocal;
43
+
44
+ ```
@@ -0,0 +1,100 @@
1
+ # **Actor Originating**
2
+
3
+ ## **Description**
4
+ The [[REF=, ABS_Actor_Originating]] does have client capabilities. It means that it can use a [[REF=, ABS_Stack_Client_Connection]]s to setup connections and communicate with servers. The [[REF=, ABS_Actor_Originating]] can be used in all [[REF=, ABS_Test_Case_Phases]].
5
+
6
+ ## **States**
7
+ The [[REF=, ABS_Actor_Originating]] supports the following [[REF=, ABS_Actor_State_Execution]]:
8
+ * ***data**
9
+ * ***initClient**
10
+ * ***run**
11
+ * ***exit**
12
+
13
+ ```state
14
+ Title: ActorOriginating
15
+ Config(width: 400, height: 200, widthBias: 25, heightBias: 25)
16
+
17
+ States[data, initClient, run]
18
+ States[, done, exit]
19
+
20
+ data -> initClient[success]: success
21
+ data -> done[failure]: error, failure, interrupt
22
+ initClient -> run[success]: success
23
+ initClient -> done[failure]: error, failure, interrupt
24
+ run -> exit[normal]: always
25
+ exit -> done[normal]: always
26
+ ```
27
+
28
+ ## **Example 1 - Actor Originating Wizard**
29
+ Here is the code produced by the [[REF=, ABS_Actor_Originating]] Wizard.
30
+ ```javascript
31
+
32
+ const ActorApi = require('actor-api');
33
+
34
+
35
+ class NotImplementedOrig extends ActorApi.ActorOriginating {
36
+ constructor() {
37
+ super();
38
+ this.connection = this.create();
39
+ }
40
+
41
+ *data() {
42
+ }
43
+
44
+ *initClient() {
45
+ this.createConnection('[stack]', this.connection);
46
+ }
47
+
48
+ *run() {
49
+ }
50
+
51
+ *exit() {
52
+ this.closeConnection(this.connection);
53
+ }
54
+ }
55
+
56
+ module.exports = NotImplementedOrig;
57
+
58
+ ```
59
+
60
+ ## **Example 2 - static http**
61
+ This is a very simple example where the [[REF=, ABS_Actor]] connects to a web server. It then sends an HTTP GET and verifies that it gets a response with the status code 200.
62
+
63
+ ```javascript
64
+
65
+
66
+ const ActorApi = require('actor-api');
67
+ const HttpApi = require('http-stack-api');
68
+ const HttpMsgGetRequest = require('./msg/HttpMsgGetRequest');
69
+
70
+
71
+ class StaticHttpActorOrig extends ActorApi.ActorOriginating {
72
+ constructor() {
73
+ super();
74
+ this.httpConnection = this.create();
75
+ }
76
+
77
+ *data() {
78
+ this.requistUri = this.getTestDataString('Request-URI', '/demo');
79
+ }
80
+
81
+ *initClient() {
82
+ this.createConnection('http', this.httpConnection);
83
+ }
84
+
85
+ *run() {
86
+ this.httpConnection.send(new HttpMsgGetRequest(this.requistUri));
87
+
88
+ const response = this.httpConnection.receive();
89
+ VERIFY_VALUE(HttpApi.StatusCode.OK, response.statusCode, ' HTTP response line status code:');
90
+ VERIFY_CONTENT_OPTIONAL('content-name', response.getHeaderNumber(HttpApi.Header.CONTENT_LENGTH), response.getBody());
91
+ }
92
+
93
+ *exit() {
94
+ this.closeConnection(this.httpConnection);
95
+ }
96
+ }
97
+
98
+ module.exports = StaticHttpActorOrig;
99
+
100
+ ```