|
| 1 | +/* |
| 2 | + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one |
| 3 | + * or more contributor license agreements. Licensed under the Elastic License; |
| 4 | + * you may not use this file except in compliance with the Elastic License. |
| 5 | + */ |
| 6 | +import { decodeCloudId } from './decode_cloud_id'; |
| 7 | + |
| 8 | +describe('Ingest Manager - decodeCloudId', () => { |
| 9 | + it('parses various CloudID formats', () => { |
| 10 | + const tests = [ |
| 11 | + { |
| 12 | + cloudID: |
| 13 | + 'staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==', |
| 14 | + expectedEsURL: 'https://cec6f261a74bf24ce33bb8811b84294f.us-east-1.aws.found.io:443', |
| 15 | + expectedKibanaURL: 'https://c6c2ca6d042249af0cc7d7a9e9625743.us-east-1.aws.found.io:443', |
| 16 | + }, |
| 17 | + { |
| 18 | + cloudID: |
| 19 | + 'dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==', |
| 20 | + expectedEsURL: 'https://cec6f261a74bf24ce33bb8811b84294f.us-east-1.aws.found.io:443', |
| 21 | + expectedKibanaURL: 'https://c6c2ca6d042249af0cc7d7a9e9625743.us-east-1.aws.found.io:443', |
| 22 | + }, |
| 23 | + { |
| 24 | + cloudID: |
| 25 | + ':dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==', |
| 26 | + expectedEsURL: 'https://cec6f261a74bf24ce33bb8811b84294f.us-east-1.aws.found.io:443', |
| 27 | + expectedKibanaURL: 'https://c6c2ca6d042249af0cc7d7a9e9625743.us-east-1.aws.found.io:443', |
| 28 | + }, |
| 29 | + { |
| 30 | + cloudID: |
| 31 | + 'gcp-cluster:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJDhhMDI4M2FmMDQxZjE5NWY3NzI5YmMwNGM2NmEwZmNlJDBjZDVjZDU2OGVlYmU1M2M4OWViN2NhZTViYWM4YjM3', |
| 32 | + expectedEsURL: 'https://8a0283af041f195f7729bc04c66a0fce.us-central1.gcp.cloud.es.io:443', |
| 33 | + expectedKibanaURL: |
| 34 | + 'https://0cd5cd568eebe53c89eb7cae5bac8b37.us-central1.gcp.cloud.es.io:443', |
| 35 | + }, |
| 36 | + { |
| 37 | + cloudID: |
| 38 | + 'custom-port:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvOjkyNDMkYWMzMWViYjkwMjQxNzczMTU3MDQzYzM0ZmQyNmZkNDYkYTRjMDYyMzBlNDhjOGZjZTdiZTg4YTA3NGEzYmIzZTA=', |
| 39 | + expectedEsURL: 'https://ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io:9243', |
| 40 | + expectedKibanaURL: |
| 41 | + 'https://a4c06230e48c8fce7be88a074a3bb3e0.us-central1.gcp.cloud.es.io:9243', |
| 42 | + }, |
| 43 | + { |
| 44 | + cloudID: |
| 45 | + 'different-es-kb-port:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFjMzFlYmI5MDI0MTc3MzE1NzA0M2MzNGZkMjZmZDQ2OjkyNDMkYTRjMDYyMzBlNDhjOGZjZTdiZTg4YTA3NGEzYmIzZTA6OTI0NA==', |
| 46 | + expectedEsURL: 'https://ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io:9243', |
| 47 | + expectedKibanaURL: |
| 48 | + 'https://a4c06230e48c8fce7be88a074a3bb3e0.us-central1.gcp.cloud.es.io:9244', |
| 49 | + }, |
| 50 | + { |
| 51 | + cloudID: |
| 52 | + 'only-kb-set:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFjMzFlYmI5MDI0MTc3MzE1NzA0M2MzNGZkMjZmZDQ2JGE0YzA2MjMwZTQ4YzhmY2U3YmU4OGEwNzRhM2JiM2UwOjkyNDQ=', |
| 53 | + expectedEsURL: 'https://ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io:443', |
| 54 | + expectedKibanaURL: |
| 55 | + 'https://a4c06230e48c8fce7be88a074a3bb3e0.us-central1.gcp.cloud.es.io:9244', |
| 56 | + }, |
| 57 | + { |
| 58 | + cloudID: |
| 59 | + 'host-and-kb-set:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvOjkyNDMkYWMzMWViYjkwMjQxNzczMTU3MDQzYzM0ZmQyNmZkNDYkYTRjMDYyMzBlNDhjOGZjZTdiZTg4YTA3NGEzYmIzZTA6OTI0NA==', |
| 60 | + expectedEsURL: 'https://ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io:9243', |
| 61 | + expectedKibanaURL: |
| 62 | + 'https://a4c06230e48c8fce7be88a074a3bb3e0.us-central1.gcp.cloud.es.io:9244', |
| 63 | + }, |
| 64 | + { |
| 65 | + cloudID: |
| 66 | + 'extra-items:dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJGFjMzFlYmI5MDI0MTc3MzE1NzA0M2MzNGZkMjZmZDQ2JGE0YzA2MjMwZTQ4YzhmY2U3YmU4OGEwNzRhM2JiM2UwJGFub3RoZXJpZCRhbmRhbm90aGVy', |
| 67 | + expectedEsURL: 'https://ac31ebb90241773157043c34fd26fd46.us-central1.gcp.cloud.es.io:443', |
| 68 | + expectedKibanaURL: |
| 69 | + 'https://a4c06230e48c8fce7be88a074a3bb3e0.us-central1.gcp.cloud.es.io:443', |
| 70 | + }, |
| 71 | + ]; |
| 72 | + |
| 73 | + for (const test of tests) { |
| 74 | + const decoded = decodeCloudId(test.cloudID); |
| 75 | + expect(decoded).toBeTruthy(); |
| 76 | + expect(decoded?.elasticsearchUrl === test.expectedEsURL).toBe(true); |
| 77 | + expect(decoded?.kibanaUrl === test.expectedKibanaURL).toBe(true); |
| 78 | + } |
| 79 | + }); |
| 80 | + |
| 81 | + it('returns undefined for invalid formats', () => { |
| 82 | + const tests = [ |
| 83 | + { |
| 84 | + cloudID: |
| 85 | + 'staging:garbagedXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==', |
| 86 | + errorMsg: 'base64 decoding failed', |
| 87 | + }, |
| 88 | + { |
| 89 | + cloudID: 'dXMtY2VudHJhbDEuZ2NwLmNsb3VkLmVzLmlvJDhhMDI4M2FmMDQxZjE5NWY3NzI5YmMwNGM2NmEwZg==', |
| 90 | + errorMsg: 'Expected at least 3 parts', |
| 91 | + }, |
| 92 | + ]; |
| 93 | + |
| 94 | + for (const test of tests) { |
| 95 | + const decoded = decodeCloudId(test.cloudID); |
| 96 | + expect(decoded).toBe(undefined); |
| 97 | + // decodeCloudId currently only logs; not throws errors |
| 98 | + } |
| 99 | + }); |
| 100 | +}); |
0 commit comments