Skip to content

Commit 39f4570

Browse files
authored
chore(argocd): add e2e tests for multiinstance (#8822)
* Add argocd multiinstance tests Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Test app links Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> * Fix review issues Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com> --------- Signed-off-by: Dominika Zemanovicova <dzemanov@redhat.com>
1 parent 5726f4f commit 39f4570

10 files changed

Lines changed: 545 additions & 83 deletions

File tree

workspaces/argocd/plugins/argocd/dev/__data__/applications.ts

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ const commonMetadata = {
2020
labels: {
2121
'rht-gitops.com/janus-argocd': 'quarkus-app-bootstrap',
2222
},
23-
instance: { name: 'main', url: 'https:/kubernetes.default.svc' },
23+
instance: {
24+
name: 'main',
25+
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com',
26+
},
2427
name: 'quarkus-app-dev',
2528
};
2629

@@ -148,6 +151,16 @@ export const mockApplication: Application = {
148151
status: commonStatus,
149152
};
150153

154+
export const mockBasicApplication: Application = {
155+
...mockApplication,
156+
metadata: {
157+
...mockApplication.metadata,
158+
uid: '0791efe1-164a-48f8-b1ed-11310efa6bef',
159+
name: 'basic-app',
160+
labels: { 'backstage.io/kubernetes-id': 'basic-app' },
161+
},
162+
};
163+
151164
export const mockQuarkusApplication: Application = {
152165
metadata: {
153166
...commonMetadata,
@@ -200,6 +213,14 @@ export const mockQuarkusApplication: Application = {
200213
},
201214
};
202215

216+
export const mockQuarkus2Application: Application = {
217+
...mockQuarkusApplication,
218+
metadata: {
219+
...mockQuarkusApplication.metadata,
220+
uid: '142880cc-931f-48b0-84d0-909b78680f51',
221+
},
222+
};
223+
203224
const preProdHelmParameters = {
204225
parameters: [
205226
{
@@ -320,7 +341,10 @@ export const prodApplication: Application = {
320341
labels: {
321342
'rht-gitops.com/janus-argocd': 'quarkus-app-bootstrap',
322343
},
323-
instance: { name: 'main', url: 'https://kubernetes.default.svc' },
344+
instance: {
345+
name: 'main',
346+
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com',
347+
},
324348
name: 'quarkus-app-prod',
325349
},
326350
spec: {
@@ -421,7 +445,7 @@ export const multiSourceArgoApp = {
421445
},
422446
instance: {
423447
name: 'main',
424-
url: 'https://kubernetes.default.svc',
448+
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com',
425449
},
426450
},
427451
spec: {

workspaces/argocd/plugins/argocd/dev/__data__/config.ts

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,36 @@
1515
*/
1616
export const mockArgocdConfig = {
1717
argocd: {
18-
baseUrl: 'https://localhost:8080',
18+
baseUrl: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com',
19+
appLocatorMethods: [
20+
{
21+
type: 'config',
22+
instances: [
23+
{
24+
name: 'main',
25+
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com',
26+
token: 'fake-jwt-token',
27+
},
28+
],
29+
},
30+
],
31+
},
32+
};
33+
34+
export const mockArgocdMultiInstanceConfig = {
35+
argocd: {
1936
appLocatorMethods: [
2037
{
2138
type: 'config',
2239
instances: [
2340
{
2441
name: 'argoInstance1',
25-
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com/',
42+
url: 'https://test1-openshift-gitops.apps.test.devcluster.openshift.com',
2643
token: 'fake-jwt-token1',
2744
},
2845
{
2946
name: 'argoInstance2',
30-
url: 'https://test-openshift-gitops.apps.test.devcluster.openshift.com/',
47+
url: 'https://test2-openshift-gitops.apps.test.devcluster.openshift.com',
3148
token: 'fake-jwt-token2',
3249
},
3350
],
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/*
2+
* Copyright 2026 The Backstage Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
import {
18+
Application,
19+
Instance,
20+
} from '@backstage-community/plugin-argocd-common';
21+
import {
22+
mockApplication,
23+
mockBasicApplication,
24+
mockQuarkus2Application,
25+
mockQuarkusApplication,
26+
preProdApplication,
27+
prodApplication,
28+
} from './applications';
29+
import { mockArgocdMultiInstanceConfig } from './config';
30+
31+
const createInstanceApplication = (
32+
instance: Pick<Instance, 'name' | 'url'>,
33+
application: Application,
34+
): Application => {
35+
return {
36+
...application,
37+
metadata: { ...application.metadata, instance: { ...instance } },
38+
};
39+
};
40+
41+
const argoInstance1Config =
42+
mockArgocdMultiInstanceConfig.argocd.appLocatorMethods[0].instances[0];
43+
44+
const argoInstance2Config =
45+
mockArgocdMultiInstanceConfig.argocd.appLocatorMethods[0].instances[1];
46+
47+
export const DEV_INSTANCE_APPLICATIONS: Record<string, Application[]> = {
48+
main: [
49+
mockApplication,
50+
preProdApplication,
51+
prodApplication,
52+
mockQuarkusApplication,
53+
],
54+
argoInstance1: [
55+
createInstanceApplication(argoInstance1Config, mockApplication),
56+
createInstanceApplication(argoInstance1Config, preProdApplication),
57+
createInstanceApplication(argoInstance1Config, mockQuarkusApplication),
58+
],
59+
argoInstance2: [
60+
createInstanceApplication(argoInstance2Config, mockBasicApplication),
61+
createInstanceApplication(argoInstance2Config, prodApplication),
62+
createInstanceApplication(argoInstance2Config, mockQuarkus2Application),
63+
],
64+
};

workspaces/argocd/plugins/argocd/dev/__data__/entity.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const mockEntity: Entity = {
2525
'argocd/app-selector':
2626
'rht-gitops.com/janus-argocd=quarkus-app-bootstrap',
2727
'argocd/project-name': 'project-name',
28-
'argocd/instance-name': 'instance-1',
28+
'argocd/instance-name': 'main',
2929
'backstage.io/kubernetes-id': 'quarkus-app',
3030
},
3131
},
@@ -35,3 +35,42 @@ export const mockEntity: Entity = {
3535
owner: 'user:guest',
3636
},
3737
};
38+
39+
export const mockArgoMultiInstanceSelectorEntity: Entity = {
40+
...mockEntity,
41+
metadata: {
42+
name: 'backstage-argocd-multi-selector',
43+
description: 'argocd plugin multi-instance selector',
44+
annotations: {
45+
'argocd/app-selector':
46+
'rht-gitops.com/janus-argocd=quarkus-app-bootstrap',
47+
'argocd/instance-name': 'argoInstance1,argoInstance2',
48+
'backstage.io/kubernetes-id': 'quarkus-app',
49+
},
50+
},
51+
};
52+
53+
export const mockArgoMultiInstanceAppNameEntity: Entity = {
54+
...mockEntity,
55+
metadata: {
56+
name: 'backstage-argocd-multi-app-name',
57+
description: 'argocd plugin multi-instance app name',
58+
annotations: {
59+
'argocd/app-name': 'quarkus-app',
60+
'argocd/instance-name': 'argoInstance1,argoInstance2',
61+
'backstage.io/kubernetes-id': 'quarkus-app',
62+
},
63+
},
64+
};
65+
66+
export const mockArgoOneAppEntity: Entity = {
67+
...mockEntity,
68+
metadata: {
69+
name: 'backstage-argocd-multi-one-app-name',
70+
description: 'argocd plugin multi-instance one app name',
71+
annotations: {
72+
'argocd/app-name': 'basic-app',
73+
'backstage.io/kubernetes-id': 'basic-app',
74+
},
75+
},
76+
};

workspaces/argocd/plugins/argocd/dev/__data__/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
*/
1616
export * from './applications';
1717
export * from './config';
18+
export * from './devInstanceApplications';
1819
export * from './entity';
1920
export * from './revision';

workspaces/argocd/plugins/argocd/dev/__data__/revision.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,22 @@ export const mockRevision: RevisionInfo = {
2222
revisionID: '90f9758b7033a4bbb7c33a35ee474d61091644bc',
2323
};
2424

25-
export const mockRevisionTwo = {
25+
export const mockRevisionTwo: RevisionInfo = {
2626
author: 'author-name',
27-
date: '2023-10-11T05:28:38Z',
27+
date: new Date('2023-10-11T05:28:38Z'),
2828
message: 'Commit v1.0.0 tag release',
2929
};
3030

31-
export const mockRevisionThree = {
31+
export const mockRevisionThree: RevisionInfo = {
3232
author: 'author-name',
33-
date: '2023-10-13T05:28:38Z',
33+
date: new Date('2023-10-13T05:28:38Z'),
3434
message: 'Initial commit',
3535
};
3636

3737
export const mockRevisions = [mockRevision, mockRevisionTwo, mockRevisionThree];
38+
39+
export const mockIdRevisions: Record<string, RevisionInfo> = {
40+
'90f9758b7033a4bbb7c33a35ee474d61091644bc': mockRevision,
41+
'80f9758b7033a4bbb7c33a35ee474d61091644bc': mockRevisionTwo,
42+
'70f9758b7033a4bbb7c33a35ee474d61091644bc': mockRevisionThree,
43+
};

0 commit comments

Comments
 (0)