Skip to content

Commit 5aa2a2a

Browse files
authored
Merge branch 'devopshobbies:master' into master
2 parents 818d508 + 020aef5 commit 5aa2a2a

File tree

9 files changed

+130
-14
lines changed

9 files changed

+130
-14
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
steps:
4444
- uses: actions/checkout@v4
4545
with:
46-
submodules: recursive
46+
submodules: true
4747

4848
- name: install requirements
4949
run: pip install -r requirements.txt

app/tests/conftest.py

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
from app.models import (
77
IaCTemplateGenerationDocker, IaCTemplateGenerationEC2, IaCTemplateGenerationS3, IaCTemplateGenerationIAM,
88
IaCTemplateGenerationArgoCD, IaCTemplateGenerationELB, IaCTemplateGenerationEFS, SyncPolicy, ArgoApplication,
9-
HelmTemplateGeneration, Pod, Persistance, Ingress, Environment, IaCBasicInput, IaCBugfixInput, IaCInstallationInput
9+
HelmTemplateGeneration, Pod, Persistance, Ingress, Environment, IaCBasicInput, IaCBugfixInput, IaCInstallationInput,
10+
AnsibleInstallNginx, AnsibleInstallDocker, AnsibleInstallKuber, Build, Service, Network, PreCreatedNetwork,
11+
DockerCompose
1012
)
1113

1214

@@ -154,4 +156,59 @@ def iac_install_invalid_sample_input():
154156
return {
155157
'os': 'Kali', # Unsupported OS
156158
'service': 'terraform',
157-
}
159+
}
160+
161+
162+
@pytest.fixture
163+
def ansible_nginx_sample_input():
164+
return AnsibleInstallNginx().model_dump()
165+
166+
167+
@pytest.fixture
168+
def ansible_nginx_invalid_sample_input():
169+
sample_input = AnsibleInstallNginx().model_dump()
170+
sample_input['os'] = 'Kali'
171+
return sample_input
172+
173+
174+
@pytest.fixture
175+
def ansible_docker_sample_input():
176+
return AnsibleInstallDocker().model_dump()
177+
178+
179+
@pytest.fixture
180+
def ansible_docker_invalid_sample_input():
181+
sample_input = AnsibleInstallDocker().model_dump()
182+
sample_input['os'] = 'Kali'
183+
return sample_input
184+
185+
186+
@pytest.fixture
187+
def ansible_kuber_sample_input():
188+
return AnsibleInstallKuber(
189+
k8s_worker_nodes=['node-1', 'node-2'],
190+
k8s_master_nodes=['node-1', 'node-2']
191+
).model_dump()
192+
193+
194+
@pytest.fixture
195+
def ansible_kuber_invalid_sample_input():
196+
sample_input = AnsibleInstallKuber(
197+
k8s_worker_nodes=['node-1', 'node-2'],
198+
k8s_master_nodes=['node-1', 'node-2']
199+
).model_dump()
200+
sample_input['os'] = 'Kali'
201+
return sample_input
202+
203+
204+
@pytest.fixture
205+
def docker_compose_sample_input():
206+
return DockerCompose().model_dump()
207+
208+
209+
@pytest.fixture
210+
def docker_compose_invalid_sample_input():
211+
sample_input = DockerCompose().model_dump()
212+
sample_input['services']['web']['build'] = None
213+
sample_input['services']['web']['image'] = None
214+
return sample_input

app/tests/test_ansible.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from unittest.mock import MagicMock, patch, mock_open
2+
3+
class TestAnsibleInstall:
4+
def setup_method(self):
5+
mock_client_instance = MagicMock()
6+
mock_client_instance.chat.completions.create.return_value = MagicMock(
7+
choices=[MagicMock(message=MagicMock(content='Mocked OpenAI Response'))]
8+
)
9+
10+
self.mock_execute_python_file = patch('app.main.execute_pythonfile').start()
11+
self.mock_edit_directory_generator = patch('app.main.edit_directory_generator').start()
12+
self.mock_gpt_service = patch('app.main.gpt_service', return_value='Mocked GPT Response').start()
13+
self.mock_openai = patch('app.gpt_services.OpenAI', return_value=mock_client_instance).start()
14+
self.mock_builtin_open = patch('builtins.open', mock_open()).start()
15+
self.mock_os_makedirs = patch('os.makedirs').start()
16+
self.mock_os_path_join = patch('os.path.join', side_effect=lambda *args: '/'.join(args)).start()
17+
self.mock_shutil_copy = patch('shutil.copy').start()
18+
self.mock_shutil_rmtree = patch('shutil.rmtree').start()
19+
20+
self.ansible_nginx_url = '/api/ansible-install/nginx/'
21+
self.ansible_docker_url = '/api/ansible-install/docker/'
22+
self.ansible_kuber_url = '/api/ansible-install/kuber/'
23+
24+
def test_ansible_nginx_input(self, client, ansible_nginx_sample_input):
25+
response = client.post(self.ansible_nginx_url, json=ansible_nginx_sample_input)
26+
assert response.status_code == 200
27+
28+
def test_ansible_nginx_invalid_input(self, client, ansible_nginx_invalid_sample_input):
29+
response = client.post(self.ansible_nginx_url, json=ansible_nginx_invalid_sample_input)
30+
assert response.status_code == 422
31+
32+
def test_ansible_docker_input(self, client, ansible_docker_sample_input):
33+
response = client.post(self.ansible_docker_url, json=ansible_docker_sample_input)
34+
assert response.status_code == 200
35+
36+
def test_ansible_docker_invalid_input(self, client, ansible_docker_invalid_sample_input):
37+
response = client.post(self.ansible_docker_url, json=ansible_docker_invalid_sample_input)
38+
assert response.status_code == 422
39+
40+
def test_ansible_kuber_input(self, client, ansible_kuber_sample_input):
41+
response = client.post(self.ansible_kuber_url, json=ansible_kuber_sample_input)
42+
assert response.status_code == 200
43+
44+
def test_ansible_kuber_invalid_input(self, client, ansible_kuber_invalid_sample_input):
45+
response = client.post(self.ansible_kuber_url, json=ansible_kuber_invalid_sample_input)
46+
assert response.status_code == 422

app/tests/test_docker_compose.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
2+
3+
class TestDockerCompose:
4+
def setup_method(self):
5+
self.url = '/api/docker-compose/'
6+
7+
def test_docker_compose_input(self, client, docker_compose_sample_input):
8+
response = client.post(self.url, json=docker_compose_sample_input)
9+
assert response.status_code == 200
10+
11+
def test_docker_compose_invalid_input(self, client, docker_compose_invalid_sample_input):
12+
response = client.post(self.url, json=docker_compose_invalid_sample_input)
13+
assert response.status_code == 422

app/tests/test_helm_template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def setup_method(self):
1515
self.mock_builtin_open = patch('builtins.open', mock_open()).start()
1616
self.mock_shutil_rm = patch('shutil.rmtree').start()
1717

18-
self.url = '/Helm-template/'
18+
self.url = '/api/Helm-template/'
1919

2020
def teardown_method(self):
2121
patch.stopall()

app/tests/test_iac_basic.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def setup_method(self):
1111
self.mock_gpt_service = patch('app.main.gpt_service', return_value='Mocked GPT Response').start()
1212
self.mock_openai = patch('app.gpt_services.OpenAI', return_value=mock_client_instance).start()
1313

14-
self.url = '/IaC-basic/'
14+
self.url = '/api/IaC-basic/'
1515

1616
def teardown_method(self):
1717
patch.stopall()

app/tests/test_iac_bugfix.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def setup_method(self):
1111
self.mock_gpt_service = patch('app.main.gpt_service', return_value='Mocked GPT Response').start()
1212
self.mock_openai = patch('app.gpt_services.OpenAI', return_value=mock_client_instance).start()
1313

14-
self.url = '/IaC-bugfix/'
14+
self.url = '/api/IaC-bugfix/'
1515

1616
def teardown_method(self):
1717
patch.stopall()

app/tests/test_iac_install.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def setup_method(self):
1616
self.mock_gpt_service = patch('app.main.gpt_service', return_value='Mocked GPT Response').start()
1717
self.mock_openai = patch('app.gpt_services.OpenAI', return_value=mock_client_instance).start()
1818

19-
self.url = '/IaC-install/'
19+
self.url = '/api/IaC-install/'
2020

2121
def teardown_method(self):
2222
patch.stopall()

app/tests/test_iac_template.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ def setup_method(self):
1414
self.mock_openai = patch('app.gpt_services.OpenAI', return_value=mock_client_instance).start()
1515
self.mock_builtin_open = patch('builtins.open', mock_open()).start()
1616

17-
self.iac_template_docker_url = '/IaC-template/docker'
18-
self.iac_template_ec2_url = '/IaC-template/aws/ec2'
19-
self.iac_template_s3_url = '/IaC-template/aws/s3'
20-
self.iac_template_iam_url = '/IaC-template/aws/iam'
21-
self.iac_template_argocd_url = '/IaC-template/argocd'
22-
self.iac_template_elb_url = '/IaC-template/aws/elb'
23-
self.iac_template_efs_url = '/IaC-template/aws/efs'
17+
self.iac_template_docker_url = '/api/IaC-template/docker'
18+
self.iac_template_ec2_url = '/api/IaC-template/aws/ec2'
19+
self.iac_template_s3_url = '/api/IaC-template/aws/s3'
20+
self.iac_template_iam_url = '/api/IaC-template/aws/iam'
21+
self.iac_template_argocd_url = '/api/IaC-template/argocd'
22+
self.iac_template_elb_url = '/api/IaC-template/aws/elb'
23+
self.iac_template_efs_url = '/api/IaC-template/aws/efs'
2424

2525
def teardown_method(self):
2626
patch.stopall()

0 commit comments

Comments
 (0)