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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
{
"consumer": {
"name": "Pipelines#show"
},
"provider": {
"name": "GET pipeline header data"
},
"interactions": [
{
"description": "a request for the pipeline header data",
"providerState": "a pipeline for a project exists",
"request": {
"method": "POST",
"path": "/api/graphql",
"headers": {
"content-type": "application/json"
},
"body": {
"query": "query getPipelineHeaderData($fullPath: ID!, $iid: ID!) {\n project(fullPath: $fullPath) {\n id\n pipeline(iid: $iid) {\n id\n iid\n status\n retryable\n cancelable\n userPermissions {\n destroyPipeline\n updatePipeline\n }\n detailedStatus {\n id\n detailsPath\n icon\n group\n text\n }\n createdAt\n user {\n id\n name\n username\n webPath\n webUrl\n email\n avatarUrl\n status {\n message\n emoji\n }\n }\n }\n }\n}\n",
"variables": {
"fullPath": "gitlab-org/gitlab-qa",
"iid": 1
}
},
"matchingRules": {
"$.body.query": {
"match": "regex",
"regex": "query\\s*getPipelineHeaderData\\(\\$fullPath:\\s*ID!,\\s*\\$iid:\\s*ID!\\)\\s*\\{\\s*project\\(fullPath:\\s*\\$fullPath\\)\\s*\\{\\s*id\\s*pipeline\\(iid:\\s*\\$iid\\)\\s*\\{\\s*id\\s*iid\\s*status\\s*retryable\\s*cancelable\\s*userPermissions\\s*\\{\\s*destroyPipeline\\s*updatePipeline\\s*\\}\\s*detailedStatus\\s*\\{\\s*id\\s*detailsPath\\s*icon\\s*group\\s*text\\s*\\}\\s*createdAt\\s*user\\s*\\{\\s*id\\s*name\\s*username\\s*webPath\\s*webUrl\\s*email\\s*avatarUrl\\s*status\\s*\\{\\s*message\\s*emoji\\s*\\}\\s*\\}\\s*\\}\\s*\\}\\s*\\}\\s*"
}
}
},
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json; charset=utf-8"
},
"body": {
"data": {
"project": {
"id": "gid://gitlab/Project/278964",
"pipeline": {
"id": "gid://gitlab/Ci::Pipeline/577266584",
"iid": "1175084",
"status": "RUNNING",
"retryable": false,
"cancelable": true,
"userPermissions": {
"destroyPipeline": false,
"updatePipeline": true
},
"detailedStatus": {
"id": "running-577266584-577266584",
"detailsPath": "/gitlab-org/gitlab/-/pipelines/577266584",
"icon": "status_running",
"group": "running",
"text": "running"
},
"createdAt": "2022-06-30T16:58:59Z",
"user": {
"id": "gid://gitlab/User/194645",
"name": "John Doe",
"username": "jdoe",
"webPath": "/gitlab-bot",
"webUrl": "https://gitlab.com/gitlab-bot",
"email": null,
"avatarUrl": "https://www.gravatar.com/avatar/10fc7f102be8de7657fb4d80898bbfe3?s=80&d=identicon",
"status": null
}
}
}
}
},
"matchingRules": {
"$.body.data.project.id": {
"match": "type"
},
"$.body.data.project.pipeline.id": {
"match": "type"
},
"$.body.data.project.pipeline.iid": {
"match": "type"
},
"$.body.data.project.pipeline.status": {
"match": "regex",
"regex": "^(CANCELED|CREATED|FAILED|MANUAL|PENDING|PREPARING|RUNNING|SCHEDULED|SKIPPED|SUCCESS|WAITING_FOR_RESOURCE)$"
},
"$.body.data.project.pipeline.retryable": {
"match": "type"
},
"$.body.data.project.pipeline.cancelable": {
"match": "type"
},
"$.body.data.project.pipeline.userPermissions.destroyPipeline": {
"match": "type"
},
"$.body.data.project.pipeline.userPermissions.updatePipeline": {
"match": "type"
},
"$.body.data.project.pipeline.detailedStatus.id": {
"match": "type"
},
"$.body.data.project.pipeline.detailedStatus.detailsPath": {
"match": "regex",
"regex": "^\\/[a-zA-Z0-9#-=?_]+$"
},
"$.body.data.project.pipeline.detailedStatus.icon": {
"match": "regex",
"regex": "^status_(canceled|created|failed|manual|pending|preparing|running|scheduled|skipped|success|warning)$"
},
"$.body.data.project.pipeline.detailedStatus.group": {
"match": "regex",
"regex": "^(canceled|created|failed|manual|pending|preparing|running|scheduled|skipped|success|success_warning|waiting-for-resource)$"
},
"$.body.data.project.pipeline.detailedStatus.text": {
"match": "regex",
"regex": "^(canceled|created|delayed|failed|manual|passed|pending|preparing|running|skipped|waiting)$"
},
"$.body.data.project.pipeline.createdAt": {
"match": "regex",
"regex": "^\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)$"
},
"$.body.data.project.pipeline.user.id": {
"match": "type"
},
"$.body.data.project.pipeline.user.name": {
"match": "type"
},
"$.body.data.project.pipeline.user.username": {
"match": "type"
},
"$.body.data.project.pipeline.user.webPath": {
"match": "regex",
"regex": "^\\/[a-zA-Z0-9#-=?_]+$"
},
"$.body.data.project.pipeline.user.webUrl": {
"match": "regex",
"regex": "^(http|https):\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$"
},
"$.body.data.project.pipeline.user.avatarUrl": {
"match": "regex",
"regex": "^(http|https):\\/\\/[a-z0-9]+([-.]{1}[a-z0-9]+)*.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$"
}
}
}
}
],
"metadata": {
"pactSpecification": {
"version": "2.0.0"
}
}
}
|