diff --git a/app/components/identity/blocked.hbs b/app/components/identity/blocked.hbs
new file mode 100644
index 00000000..1a3d68fe
--- /dev/null
+++ b/app/components/identity/blocked.hbs
@@ -0,0 +1,8 @@
+
Status Blocked
+
The system failed to link
+ your profile service with the Identity service,
+ Please try again!
+
\ No newline at end of file
diff --git a/app/components/identity/get-started.hbs b/app/components/identity/get-started.hbs
new file mode 100644
index 00000000..03877160
--- /dev/null
+++ b/app/components/identity/get-started.hbs
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/app/components/identity/reload.hbs b/app/components/identity/reload.hbs
new file mode 100644
index 00000000..373bbab0
--- /dev/null
+++ b/app/components/identity/reload.hbs
@@ -0,0 +1,6 @@
+
Status Pending
+
Reload to complete and
+ verify the link between Profile Service and RealDevSquad Service.
+
\ No newline at end of file
diff --git a/app/components/identity/reload.js b/app/components/identity/reload.js
new file mode 100644
index 00000000..e94bba78
--- /dev/null
+++ b/app/components/identity/reload.js
@@ -0,0 +1,9 @@
+import Component from '@glimmer/component';
+import { action } from '@ember/object';
+
+export default class ReloadComponent extends Component {
+ @action async handleReload(e) {
+ e.preventDefault();
+ window.location.reload();
+ }
+}
diff --git a/app/components/identity/step1.hbs b/app/components/identity/step1.hbs
new file mode 100644
index 00000000..a7256e09
--- /dev/null
+++ b/app/components/identity/step1.hbs
@@ -0,0 +1,45 @@
+
Step 1: Chaincode
+ Generation
+
A private key that you need
+ to use in your profile service URL and deploy for validation that you’re the
+ source of URL.
-
- I have saved my profile URL, generated a chaincode and successfully
- added that to my service.
-
+ I have saved my profile URL, generated a chaincode and successfully
+ added that to my service.
+
+
+
-
-
-
{{this.identityError}}
- {{/if}}
-
\ No newline at end of file
+ >
+ {{#if this.isVerifyClicked}}
+
+ {{/if}}
+ Link Chaincode
+
+
{{this.identityError}}
+ {{/if}}
+
+{{/if}}
\ No newline at end of file
diff --git a/public/identity/closeeye.svg b/public/identity/closeeye.svg
new file mode 100644
index 00000000..bc669422
--- /dev/null
+++ b/public/identity/closeeye.svg
@@ -0,0 +1,4 @@
+
diff --git a/public/identity/copy.svg b/public/identity/copy.svg
new file mode 100644
index 00000000..57829ce6
--- /dev/null
+++ b/public/identity/copy.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/identity/footer.svg b/public/identity/footer.svg
new file mode 100644
index 00000000..4db6119c
--- /dev/null
+++ b/public/identity/footer.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/identity/header-hero.svg b/public/identity/header-hero.svg
new file mode 100644
index 00000000..17888ed0
--- /dev/null
+++ b/public/identity/header-hero.svg
@@ -0,0 +1,9 @@
+
diff --git a/public/identity/header.svg b/public/identity/header.svg
new file mode 100644
index 00000000..4890d550
--- /dev/null
+++ b/public/identity/header.svg
@@ -0,0 +1,3 @@
+
diff --git a/public/identity/hero.svg b/public/identity/hero.svg
new file mode 100644
index 00000000..62cace42
--- /dev/null
+++ b/public/identity/hero.svg
@@ -0,0 +1,9 @@
+
diff --git a/public/identity/logo.svg b/public/identity/logo.svg
new file mode 100644
index 00000000..6d03df9a
--- /dev/null
+++ b/public/identity/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/public/identity/openeye.svg b/public/identity/openeye.svg
new file mode 100644
index 00000000..40220d51
--- /dev/null
+++ b/public/identity/openeye.svg
@@ -0,0 +1,3 @@
+
diff --git a/tests/acceptance/mobile-test.js b/tests/acceptance/mobile-test.js
index d58457ea..ba9fd984 100644
--- a/tests/acceptance/mobile-test.js
+++ b/tests/acceptance/mobile-test.js
@@ -38,7 +38,7 @@ module('Acceptance | login', function (hooks) {
// eslint-disable-next-line ember/no-pause-test
await pauseTest();
assert.equal(currentURL(), '/mobile');
-
+ stub.restore();
server.shutdown();
});
diff --git a/tests/integration/components/identity/blocked-test.js b/tests/integration/components/identity/blocked-test.js
new file mode 100644
index 00000000..97f7615c
--- /dev/null
+++ b/tests/integration/components/identity/blocked-test.js
@@ -0,0 +1,25 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Component | identity/blocked', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity blocked component', async function (assert) {
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(hbs``);
+
+ assert.dom('[data-test-blocked-heading]').exists();
+ assert.dom('[data-test-blocked-heading]').hasText('Status Blocked');
+
+ assert.dom('[data-test-blocked-desc]').exists();
+
+ await click('[data-test-blocked-button]');
+
+ assert.verifySteps(['step1']);
+ });
+});
diff --git a/tests/integration/components/identity/get-started-test.js b/tests/integration/components/identity/get-started-test.js
new file mode 100644
index 00000000..7fe5edb4
--- /dev/null
+++ b/tests/integration/components/identity/get-started-test.js
@@ -0,0 +1,27 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Component | identity/get-started', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity get-started component', async function (assert) {
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(hbs``);
+
+ assert.dom('[data-test-getStarted-heading]').exists();
+ assert
+ .dom('[data-test-getStarted-heading]')
+ .hasText('Qualification Criteria');
+
+ assert.dom('[data-test-getStarted-desc]').exists();
+
+ await click('[data-test-getStarted-button]');
+
+ assert.verifySteps(['step1']);
+ });
+});
diff --git a/tests/integration/components/identity/reload-test.js b/tests/integration/components/identity/reload-test.js
new file mode 100644
index 00000000..1f3530af
--- /dev/null
+++ b/tests/integration/components/identity/reload-test.js
@@ -0,0 +1,17 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Component | identity/reload', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity reload component', async function (assert) {
+ await render(hbs``);
+
+ assert.dom('[data-test-reload-heading]').exists();
+ assert.dom('[data-test-reload-heading]').hasText('Status Pending');
+
+ assert.dom('[data-test-reload-desc]').exists();
+ });
+});
diff --git a/tests/integration/components/identity/step1-test.js b/tests/integration/components/identity/step1-test.js
new file mode 100644
index 00000000..7675672e
--- /dev/null
+++ b/tests/integration/components/identity/step1-test.js
@@ -0,0 +1,80 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+import { Server } from 'ember-cli-mirage';
+import ENV from 'website-my/config/environment';
+import sinon from 'sinon';
+
+module('Integration | Component | identity/step1', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity step1 component', async function (assert) {
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(hbs``);
+
+ assert.dom('[data-test-step1-heading]').exists();
+ assert
+ .dom('[data-test-step1-heading]')
+ .hasText('Step 1: Chaincode Generation');
+
+ assert.dom('[data-test-step1-desc]').exists();
+ assert.dom('[data-test-step1-button]').exists();
+ });
+
+ test('it generates the chaincode', async function (assert) {
+ let stub = sinon.stub(window, 'confirm');
+ stub.returns(true);
+
+ let server = new Server({
+ models: {},
+ routes() {
+ this.namespace = ENV.BASE_API_URL;
+
+ this.get('/users/chaincode', { chaincode: 'abcdefghijklmnopqrs' });
+ },
+ });
+
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(hbs``);
+
+ assert.dom('[data-test-step1-heading]').exists();
+ assert
+ .dom('[data-test-step1-heading]')
+ .hasText('Step 1: Chaincode Generation');
+
+ assert.dom('[data-test-step1-desc]').exists();
+ assert.dom('[data-test-step1-button]').exists();
+
+ await click('[data-test-step1-button]');
+
+ setTimeout(() => {
+ this.resumeTest();
+ }, 500);
+ // eslint-disable-next-line ember/no-pause-test
+ await this.pauseTest();
+
+ assert
+ .dom('[data-test-step1-chaincode]')
+ .exists()
+ .hasText('********************');
+
+ await click('[data-test-step1-eye]');
+ assert
+ .dom('[data-test-step1-chaincode]')
+ .exists()
+ .hasText('abcdefghijklmnopqrs');
+
+ await click('[data-test-step1-next-button]');
+
+ assert.verifySteps(['step2']);
+ stub.restore();
+ server.shutdown();
+ });
+});
diff --git a/tests/integration/components/identity/step2-test.js b/tests/integration/components/identity/step2-test.js
new file mode 100644
index 00000000..2ed4a7ea
--- /dev/null
+++ b/tests/integration/components/identity/step2-test.js
@@ -0,0 +1,63 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+import { Server } from 'ember-cli-mirage';
+import ENV from 'website-my/config/environment';
+
+module('Integration | Component | identity/step2', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity step2 component without next button', async function (assert) {
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(
+ hbs``
+ );
+
+ assert.dom('[data-test-step2-heading]').exists();
+ assert
+ .dom('[data-test-step2-heading]')
+ .hasText('Step 2: Profile Service URL');
+
+ assert.dom('[data-test-step2-desc]').exists();
+ assert.dom('[data-test-step2-input]').exists().hasNoText();
+ assert.dom('[data-test-step2-next-button]').doesNotExist();
+ });
+
+ test('it renders the identity step2 component without next button', async function (assert) {
+ let server = new Server({
+ models: {},
+ routes() {
+ this.namespace = ENV.BASE_API_URL;
+
+ this.patch('/users/profileURL', {});
+ },
+ });
+
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ await render(
+ hbs``
+ );
+
+ assert.dom('[data-test-step2-heading]').exists();
+ assert
+ .dom('[data-test-step2-heading]')
+ .hasText('Step 2: Profile Service URL');
+
+ assert.dom('[data-test-step2-input]').exists().hasNoText();
+ assert.dom('[data-test-step2-input]').exists().hasNoText();
+ assert.dom('[data-test-step2-next-button]').exists();
+
+ await click('[data-test-step2-next-button]');
+
+ assert.verifySteps(['step3']);
+
+ server.shutdown();
+ });
+});
diff --git a/tests/integration/components/identity/step3-test.js b/tests/integration/components/identity/step3-test.js
new file mode 100644
index 00000000..f5aa10e5
--- /dev/null
+++ b/tests/integration/components/identity/step3-test.js
@@ -0,0 +1,43 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render, click } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+import sinon from 'sinon';
+import { Server } from 'ember-cli-mirage';
+import ENV from 'website-my/config/environment';
+
+module('Integration | Component | identity/step3', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity step3 component', async function (assert) {
+ let stub = sinon.stub(window, 'confirm');
+ stub.returns(true);
+
+ this.set('setState', (val) => {
+ assert.step(val);
+ });
+
+ let server = new Server({
+ models: {},
+ routes() {
+ this.namespace = ENV.BASE_API_URL;
+
+ this.post('/users/verify', {});
+ },
+ });
+
+ await render(hbs``);
+
+ assert.dom('[data-test-step3-heading]').exists();
+ assert
+ .dom('[data-test-step3-heading]')
+ .hasText('Step 3: Link Profile Service');
+
+ assert.dom('[data-test-step3-desc]').exists();
+
+ await click('[data-test-step3-button]');
+
+ stub.restore();
+ server.shutdown();
+ });
+});
diff --git a/tests/integration/components/identity/verified-test.js b/tests/integration/components/identity/verified-test.js
new file mode 100644
index 00000000..9390d535
--- /dev/null
+++ b/tests/integration/components/identity/verified-test.js
@@ -0,0 +1,17 @@
+import { module, test } from 'qunit';
+import { setupRenderingTest } from 'ember-qunit';
+import { render } from '@ember/test-helpers';
+import { hbs } from 'ember-cli-htmlbars';
+
+module('Integration | Component | identity/verified', function (hooks) {
+ setupRenderingTest(hooks);
+
+ test('it renders the identity verified component', async function (assert) {
+ await render(hbs``);
+
+ assert.dom('[data-test-verified-heading]').exists();
+ assert.dom('[data-test-verified-heading]').hasText('Verified');
+
+ assert.dom('[data-test-verified-desc]').exists();
+ });
+});