1
+ import { FullscriptOptions } from "../../fullscript" ;
1
2
import { createDispatcher , Dispatcher } from "../dispatcher" ;
2
3
3
4
import { initializeMessageListener } from "./messageListener" ;
4
5
5
6
describe ( "initializeMessageListener" , ( ) => {
6
7
let dispatcher : Dispatcher ;
8
+ let mockFullscriptOptions : FullscriptOptions ;
7
9
8
10
beforeEach ( ( ) => {
9
11
dispatcher = createDispatcher ( ) ;
12
+ mockFullscriptOptions = {
13
+ publicKey : "mockPublicKey" ,
14
+ env : "us" ,
15
+ } ;
10
16
} ) ;
11
17
12
18
it ( "registers a message event listener" , ( ) => {
13
19
const addEventListener = jest . fn ( ) ;
14
20
window . addEventListener = addEventListener ;
15
21
16
- initializeMessageListener ( "us" , dispatcher ) ;
22
+ initializeMessageListener ( mockFullscriptOptions , dispatcher ) ;
17
23
expect ( addEventListener ) . toHaveBeenCalled ( ) ;
18
24
} ) ;
19
25
@@ -24,7 +30,7 @@ describe("initializeMessageListener", () => {
24
30
} ) ;
25
31
window . addEventListener = addEventListener ;
26
32
dispatcher . dispatch = jest . fn ( ) ;
27
- initializeMessageListener ( "us" , dispatcher ) ;
33
+ initializeMessageListener ( mockFullscriptOptions , dispatcher ) ;
28
34
29
35
const mockEvent = {
30
36
origin : "https://us.fullscript.com" ,
@@ -38,14 +44,39 @@ describe("initializeMessageListener", () => {
38
44
expect ( dispatcher . dispatch ) . toHaveBeenCalledWith ( mockEvent . data . type , mockEvent . data . payload ) ;
39
45
} ) ;
40
46
41
- it ( "does not dispatch events if message origin does not match fullscript-js origin" , ( ) => {
47
+ it ( "dispatches events if message origin and custom domain match" , ( ) => {
48
+ let mockCallback ;
49
+ const optionsWithDomain = {
50
+ ...mockFullscriptOptions ,
51
+ domain : "http://test.fullscript.com" ,
52
+ } ;
53
+ const addEventListener = jest . fn ( ( _ , callback ) => {
54
+ mockCallback = callback ;
55
+ } ) ;
56
+ window . addEventListener = addEventListener ;
57
+ dispatcher . dispatch = jest . fn ( ) ;
58
+ initializeMessageListener ( optionsWithDomain , dispatcher ) ;
59
+
60
+ const mockEvent = {
61
+ origin : "http://test.fullscript.com" ,
62
+ data : {
63
+ type : "treatmentPlan.activated" ,
64
+ payload : "treatmentPlanData" ,
65
+ } ,
66
+ } ;
67
+
68
+ mockCallback ( new MessageEvent ( "message" , mockEvent ) ) ;
69
+ expect ( dispatcher . dispatch ) . toHaveBeenCalledWith ( mockEvent . data . type , mockEvent . data . payload ) ;
70
+ } ) ;
71
+
72
+ it ( "does not dispatch events if message origin does not match fullscript-js origin and no custom domain" , ( ) => {
42
73
let mockCallback ;
43
74
const addEventListener = jest . fn ( ( _ , callback ) => {
44
75
mockCallback = callback ;
45
76
} ) ;
46
77
window . addEventListener = addEventListener ;
47
78
dispatcher . dispatch = jest . fn ( ) ;
48
- initializeMessageListener ( "us" , dispatcher ) ;
79
+ initializeMessageListener ( mockFullscriptOptions , dispatcher ) ;
49
80
50
81
const mockEvent = {
51
82
origin : "https://malicious.com" ,
@@ -65,7 +96,7 @@ describe("initializeMessageListener", () => {
65
96
mockCallback = callback ;
66
97
} ) ;
67
98
window . addEventListener = addEventListener ;
68
- initializeMessageListener ( "us" , dispatcher ) ;
99
+ initializeMessageListener ( mockFullscriptOptions , dispatcher ) ;
69
100
70
101
const mockEvent = {
71
102
origin : "https://us.fullscript.com" ,
0 commit comments