aboutsummaryrefslogtreecommitdiffstats
path: root/moon_dashboard/moon/static/moon/pdp/pdp.service.spec.js
blob: 4208467f1561c10d1d0820c66f7ef26c7c8df624 (plain)
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
(function () {
    'use strict';

    describe('moon.pdp.service', function () {
        var service, $httpBackend, URI;
        var pdpsData, policiesData, projectsData;


        function initData() {
            pdpsData = {
                pdps:
                    { 'pdpId1': { name: 'pdp1', description: 'pdpDescription1', security_pipeline: ['policyId1'], keystone_project_id: 'projectId1' } }
            };

            policiesData = {
                policies:
                    {
                        'policyId1': { name: 'policy1', description: 'pDescription1' },
                        'policyId2': { name: 'policy2', description: 'pDescription2' }
                    }
            };

            projectsData = {
                items: [
                    { name: "project1", id: "projectId1" },
                    { name: "project2", id: "projectId2" }
                ]
            };

        }

        beforeEach(module('horizon.app.core'));
        beforeEach(module('horizon.framework'));
        beforeEach(module('moon'));

        beforeEach(inject(function ($injector) {
            service = $injector.get('moon.pdp.service');
            $httpBackend = $injector.get('$httpBackend');
            URI = $injector.get('moon.URI');
        }));

        afterEach(function () {
            $httpBackend.verifyNoOutstandingExpectation();
            $httpBackend.verifyNoOutstandingRequest();
        });

        it('should initialize', function () {
            initData();
            $httpBackend.expectGET(URI.API + '/pdp').respond(200, pdpsData);
            $httpBackend.expectGET(URI.API + '/policies').respond(200, policiesData);
            $httpBackend.expectGET('/api/keystone/projects/').respond(200, projectsData);


            service.initialize();
            $httpBackend.flush();

            expect(service.pdps.length).toBe(1);
            var pdp = service.pdps[0];
            expect(pdp.id).toBe('pdpId1');
            expect(pdp.name).toBe('pdp1');
            expect(pdp.description).toBe('pdpDescription1');
            expect(pdp.security_pipeline.length).toBe(1);
            expect(pdp.security_pipeline[0].id).toBe('policyId1');
            expect(pdp.keystone_project_id).toBe('projectId1');
            expect(pdp.project.id).toBe('projectId1');

            expect(service.policies.length).toBe(2);
            var policy = service.policies[0];
            expect(policy.id).toBe('policyId1');
            expect(policy.name).toBe('policy1');
            expect(policy.description).toBe('pDescription1');


            expect(service.projects.length).toBe(2);
            var project = service.projects[0];
            expect(project.id).toBe('projectId1');
            expect(project.name).toBe('project1');

        });



        it('should create pdp', function () {
            var pdpCreatedData = {
                pdps:
                    { 'pdpId1': { name: 'pdp1', description: 'pdpDescription1', security_pipeline: [], keystone_project_id: null } }
            };

            $httpBackend.expectPOST(URI.API + '/pdp').respond(200, pdpCreatedData);

            service.createPdp({ name: 'pdp1', description: 'pdpDescription1' });
            $httpBackend.flush();

            expect(service.pdps.length).toBe(1);
            var pdp = service.pdps[0];
            expect(pdp.id).toBe('pdpId1');
            expect(pdp.name).toBe('pdp1');
            expect(pdp.description).toBe('pdpDescription1');
            expect(pdp.project).toBe(null);
            expect(pdp.security_pipeline.length).toBe(0);
        });

        it('should remove pdp', function () {
            initData();
            service.createPdps(pdpsData, policiesData, projectsData);

            $httpBackend.expectDELETE(URI.API + '/pdp/pdpId1').respond(200);

            service.removePdp({ id: 'pdpId1' });
            $httpBackend.flush();

            expect(service.pdps.length).toBe(0);
        });

        it('should update pdp', function () {
            initData();
            var pdpUpdatedData = {
                pdps:
                { 'pdpId1': { name: 'pdp2', description: 'pdpDescription2', security_pipeline: ['policyId2'], keystone_project_id: 'projectId2' } }
            };
            service.createPdps(pdpsData, policiesData, projectsData);

            $httpBackend.expectPATCH(URI.API + '/pdp/pdpId1').respond(200, pdpUpdatedData);

            service.updatePdp({ id: 'pdpId1', name: 'pdp2', description: 'pdpDescription2', security_pipeline: [service.getPolicy('policyId2')], project: service.getProject('projectId2') });
            $httpBackend.flush();

            expect(service.pdps.length).toBe(1);
            var pdp = service.pdps[0];
            expect(pdp.id).toBe('pdpId1');
            expect(pdp.name).toBe('pdp2');
            expect(pdp.description).toBe('pdpDescription2');
            expect(pdp.project.id).toBe('projectId2');
            expect(pdp.security_pipeline.length).toBe(1);
            expect(pdp.security_pipeline[0].id).toBe('policyId2');

        });


    });


})();