-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathlib.test.w
100 lines (83 loc) · 2.46 KB
/
lib.test.w
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
bring cloud;
bring expect;
bring util;
bring "./lib.w" as lib;
bring "./types.w" as types;
let eventBridge = new lib.Bus(name: "test");
class InboundGithubEvents {
pub bucket: cloud.Bucket;
new() {
this.bucket = new cloud.Bucket();
let counter = new cloud.Counter();
eventBridge.onEvent("github.pull-request.created", inflight (event) => {
log("subscribed event received {Json.stringify(event)}");
this.bucket.put("test-{counter.inc()}", Json.stringify(event));
}, {
"detail-type": [{"prefix": "pull-request."}],
"source": ["github.com"],
});
}
}
class Environments {
pub bucket: cloud.Bucket;
new() {
let queue = new cloud.Queue();
this.bucket = new cloud.Bucket();
queue.setConsumer(inflight (event) => {
log("subscribed event {event} received {Json.stringify(event)}");
this.bucket.put("environment", event);
});
eventBridge.subscribeQueue("environments.created", queue, {
"detail-type": [{"prefix": "myTest"}],
source: ["myTest"],
});
}
}
let github = new InboundGithubEvents();
let env = new Environments();
test "publish to eventbridge" {
log("publishing to eventbridge");
eventBridge.putEvents({
detailType: "pull-request.created",
resources: ["test"],
source: "github.com",
version: "0",
detail: {
"test": "test",
},
});
log("published");
util.waitUntil(inflight () => {
log("checking bucket for event");
return github.bucket.exists("test-0");
}, {
timeout: 60s,
});
log("after wait");
let published = types.Event.fromJson(github.bucket.getJson("test-0"));
expect.equal("pull-request.created", published.detailType);
expect.equal("test", published.resources[0]);
expect.equal("github.com", published.source);
expect.equal(0, env.bucket.list().length);
eventBridge.putEvents({
detailType: "myTest.check",
resources: ["test"],
source: "myTest",
version: "0",
detail: {
"fake": "env",
},
});
log("published 2nd event");
util.waitUntil(inflight () => {
log("checking environment bucket for event");
return env.bucket.exists("environment");
}, {
timeout: 60s,
});
// cant deserialize events coming from queue (see https://github.com/winglang/wing/issues/3686)
let published2 = env.bucket.getJson("environment");
expect.equal("myTest.check", published2["detail-type"]);
expect.equal("test", published2["resources"][0]);
expect.equal("myTest", published2["source"]);
}