Skip to content

Commit

Permalink
Merge pull request #7 from software-students-spring2024/marc-branch
Browse files Browse the repository at this point in the history
Marc branch
  • Loading branch information
afknero authored May 1, 2024
2 parents a5e227d + 85b8a35 commit a06ff42
Show file tree
Hide file tree
Showing 36 changed files with 576 additions and 2 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
#environment variables
.env
src/.env

# mac junk
.DS_Store

Expand Down
18 changes: 18 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
pytest = "*"
flask = "*"
pymongo = "*"
python-dotenv = "*"
flask-login = "*"
flask-bcrypt = "*"
pytest-cov = "*"

[dev-packages]

[requires]
python_version = "3.8"
373 changes: 373 additions & 0 deletions Pipfile.lock

Large diffs are not rendered by default.

14 changes: 14 additions & 0 deletions data/.mongodb/mongosh/662b3261221b58109f2202d7_log
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{"t":{"$date":"2024-04-26T04:49:37.920Z"},"s":"I","c":"MONGOSH","id":1000000000,"ctx":"log","msg":"Starting log","attr":{"execPath":"/usr/bin/mongosh","envInfo":{"EDITOR":null,"NODE_OPTIONS":null,"TERM":null},"version":"2.2.5","distributionKind":"compiled","buildArch":"x64","buildPlatform":"linux","buildTarget":"linux-x64","buildTime":"2024-04-24T14:22:21.076Z","gitVersion":"3a95f1de5ce644bf6e5453c73b6ccd05a35dcfa5","nodeVersion":"v20.12.2","opensslVersion":"3.0.13+quic","sharedOpenssl":false,"runtimeArch":"x64","runtimePlatform":"linux","runtimeGlibcVersion":"2.35","deps":{"nodeDriverVersion":"6.5.0","libmongocryptVersion":"1.9.0-20230828+git8e7f69f1c0","libmongocryptNodeBindingsVersion":"6.0.0","kerberosVersion":"2.1.0"}}}
{"t":{"$date":"2024-04-26T04:49:37.934Z"},"s":"I","c":"MONGOSH","id":1000000005,"ctx":"config","msg":"User updated"}
{"t":{"$date":"2024-04-26T04:49:37.935Z"},"s":"I","c":"MONGOSH","id":1000000048,"ctx":"config","msg":"Loading global configuration file","attr":{"filename":"/etc/mongosh.conf","found":false}}
{"t":{"$date":"2024-04-26T04:49:37.962Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000042,"ctx":"mongosh-connect","msg":"Initiating connection attempt","attr":{"uri":"mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.5","driver":{"name":"nodejs|mongosh","version":"6.5.0|2.2.5"},"devtoolsConnectVersion":"2.6.0","host":"127.0.0.1:27017"}}
{"t":{"$date":"2024-04-26T04:49:37.974Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000035,"ctx":"mongosh-connect","msg":"Server heartbeat succeeded","attr":{"connectionId":"127.0.0.1:27017"}}
{"t":{"$date":"2024-04-26T04:49:38.042Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000037,"ctx":"mongosh-connect","msg":"Connection attempt finished"}
{"t":{"$date":"2024-04-26T04:49:38.082Z"},"s":"I","c":"MONGOSH","id":1000000004,"ctx":"connect","msg":"Connecting to server","attr":{"session_id":"662b3261221b58109f2202d7","userId":null,"telemetryAnonymousId":"662b3261fb0e9fa0142202d6","connectionUri":"mongodb://<ip address>:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.5","is_atlas":false,"is_localhost":true,"is_do":false,"server_version":"7.0.8","node_version":"v20.12.2","mongosh_version":"2.2.5","server_os":"linux","server_arch":"x86_64","is_enterprise":false,"auth_type":null,"is_data_federation":false,"is_stream":false,"dl_version":null,"atlas_version":null,"is_genuine":true,"non_genuine_server_name":"mongodb","is_local_atlas":false,"fcv":"7.0","api_version":null,"api_strict":null,"api_deprecation_errors":null}}
{"t":{"$date":"2024-04-26T04:49:38.088Z"},"s":"I","c":"MONGOSH","id":1000000010,"ctx":"shell-api","msg":"Initialized context","attr":{"method":"setCtx","arguments":{}}}
{"t":{"$date":"2024-04-26T04:49:38.092Z"},"s":"I","c":"MONGOSH-SNIPPETS","id":1000000024,"ctx":"snippets","msg":"Fetching snippet index","attr":{"refreshMode":"allow-cached"}}
{"t":{"$date":"2024-04-26T04:49:38.095Z"},"s":"I","c":"MONGOSH-SNIPPETS","id":1000000019,"ctx":"snippets","msg":"Loaded snippets","attr":{"installdir":"/data/db/.mongodb/mongosh/snippets"}}
{"t":{"$date":"2024-04-26T04:49:38.191Z"},"s":"I","c":"MONGOSH-SNIPPETS","id":1000000028,"ctx":"snippets","msg":"Modifying snippets package.json failed","attr":{"error":"ENOENT: no such file or directory, open '/data/db/.mongodb/mongosh/snippets/package.json'"}}
{"t":{"$date":"2024-04-26T04:49:38.207Z"},"s":"I","c":"MONGOSH","id":1000000002,"ctx":"repl","msg":"Started REPL","attr":{"version":"2.2.5"}}
{"t":{"$date":"2024-04-26T04:49:38.380Z"},"s":"I","c":"MONGOSH","id":1000000011,"ctx":"shell-api","msg":"Performed API call","attr":{"method":"createUser","class":"Database","db":"admin","arguments":{}}}
{"t":{"$date":"2024-04-26T04:49:38.518Z"},"s":"I","c":"MONGOSH","id":1000000045,"ctx":"analytics","msg":"Flushed outstanding data","attr":{"flushError":"Trying to persist throttle state before userId is set","flushDuration":0}}
5 changes: 5 additions & 0 deletions data/.mongodb/mongosh/662b3261fb0e9fa0142202d7_log
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{"t":{"$date":"2024-04-26T04:49:37.170Z"},"s":"I","c":"MONGOSH","id":1000000000,"ctx":"log","msg":"Starting log","attr":{"execPath":"/usr/bin/mongosh","envInfo":{"EDITOR":null,"NODE_OPTIONS":null,"TERM":null},"version":"2.2.5","distributionKind":"compiled","buildArch":"x64","buildPlatform":"linux","buildTarget":"linux-x64","buildTime":"2024-04-24T14:22:21.076Z","gitVersion":"3a95f1de5ce644bf6e5453c73b6ccd05a35dcfa5","nodeVersion":"v20.12.2","opensslVersion":"3.0.13+quic","sharedOpenssl":false,"runtimeArch":"x64","runtimePlatform":"linux","runtimeGlibcVersion":"2.35","deps":{"nodeDriverVersion":"6.5.0","libmongocryptVersion":"1.9.0-20230828+git8e7f69f1c0","libmongocryptNodeBindingsVersion":"6.0.0","kerberosVersion":"2.1.0"}}}
{"t":{"$date":"2024-04-26T04:49:37.216Z"},"s":"I","c":"MONGOSH","id":1000000048,"ctx":"config","msg":"Loading global configuration file","attr":{"filename":"/etc/mongosh.conf","found":false}}
{"t":{"$date":"2024-04-26T04:49:37.268Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000042,"ctx":"mongosh-connect","msg":"Initiating connection attempt","attr":{"uri":"mongodb://127.0.0.1:27017/admin?directConnection=true&serverSelectionTimeoutMS=2000&appName=mongosh+2.2.5","driver":{"name":"nodejs|mongosh","version":"6.5.0|2.2.5"},"devtoolsConnectVersion":"2.6.0","host":"127.0.0.1:27017"}}
{"t":{"$date":"2024-04-26T04:49:37.295Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000035,"ctx":"mongosh-connect","msg":"Server heartbeat succeeded","attr":{"connectionId":"127.0.0.1:27017"}}
{"t":{"$date":"2024-04-26T04:49:37.555Z"},"s":"I","c":"DEVTOOLS-CONNECT","id":1000000037,"ctx":"mongosh-connect","msg":"Connection attempt finished"}
1 change: 1 addition & 0 deletions data/.mongodb/mongosh/config
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"userId":"662b3261fb0e9fa0142202d6","telemetryAnonymousId":"662b3261fb0e9fa0142202d6","enableTelemetry":true}
Empty file.
1 change: 1 addition & 0 deletions data/.mongodb/mongosh/snippets/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
2 changes: 2 additions & 0 deletions data/WiredTiger
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
WiredTiger
WiredTiger 11.2.0: (November 10, 2022)
1 change: 1 addition & 0 deletions data/WiredTiger.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WiredTiger lock file
6 changes: 6 additions & 0 deletions data/WiredTiger.turtle
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
WiredTiger version string
WiredTiger 11.2.0: (November 10, 2022)
WiredTiger version
major=11,minor=2,patch=0
file:WiredTiger.wt
access_pattern_hint=none,allocation_size=4KB,app_metadata=,assert=(commit_timestamp=none,durable_timestamp=none,read_timestamp=none,write_timestamp=off),block_allocation=best,block_compressor=,cache_resident=false,checksum=on,collator=,columns=,dictionary=0,encryption=(keyid=,name=),format=btree,huffman_key=,huffman_value=,id=0,ignore_in_memory_cache_size=false,internal_item_max=0,internal_key_max=0,internal_key_truncate=true,internal_page_max=4KB,key_format=S,key_gap=10,leaf_item_max=0,leaf_key_max=0,leaf_page_max=32KB,leaf_value_max=0,log=(enabled=true),memory_page_image_max=0,memory_page_max=5MB,os_cache_dirty_max=0,os_cache_max=0,prefix_compression=false,prefix_compression_min=4,readonly=false,split_deepen_min_child=0,split_deepen_per_child=0,split_pct=90,tiered_object=false,tiered_storage=(auth_token=,bucket=,bucket_prefix=,cache_directory=,local_retention=300,name=,object_target_size=0),value_format=S,verbose=[],version=(major=1,minor=1),write_timestamp_usage=none,checkpoint=(WiredTigerCheckpoint.448=(addr="018981e4488df4fb8a81e4d676e1678b81e42d23a08c808080e3010fc0e23fc0",order=448,time=1714182272,size=28672,newest_start_durable_ts=0,oldest_start_ts=0,newest_txn=448,newest_stop_durable_ts=0,newest_stop_ts=-1,newest_stop_txn=-11,prepare=0,write_gen=1343,run_write_gen=9)),checkpoint_backup_info=,checkpoint_lsn=(2,345216)
Binary file added data/WiredTiger.wt
Binary file not shown.
Binary file added data/WiredTigerHS.wt
Binary file not shown.
Binary file added data/_mdb_catalog.wt
Binary file not shown.
Binary file added data/collection-0--1453851225969918699.wt
Binary file not shown.
Binary file added data/collection-2--1453851225969918699.wt
Binary file not shown.
Binary file added data/collection-4--1453851225969918699.wt
Binary file not shown.
Binary file added data/collection-7--1453851225969918699.wt
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added data/diagnostic.data/metrics.interim
Binary file not shown.
Binary file added data/index-1--1453851225969918699.wt
Binary file not shown.
Binary file added data/index-3--1453851225969918699.wt
Binary file not shown.
Binary file added data/index-5--1453851225969918699.wt
Binary file not shown.
Binary file added data/index-6--1453851225969918699.wt
Binary file not shown.
Binary file added data/index-8--1453851225969918699.wt
Binary file not shown.
Binary file added data/index-9--1453851225969918699.wt
Binary file not shown.
Binary file added data/journal/WiredTigerLog.0000000002
Binary file not shown.
Binary file added data/journal/WiredTigerPreplog.0000000001
Binary file not shown.
Binary file added data/journal/WiredTigerPreplog.0000000002
Binary file not shown.
1 change: 1 addition & 0 deletions data/mongod.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
Binary file added data/sizeStorer.wt
Binary file not shown.
Binary file added data/storage.bson
Binary file not shown.
14 changes: 14 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blinker==1.8.1
click==8.1.7
dnspython==2.6.1
Flask==3.0.3
iniconfig==2.0.0
itsdangerous==2.2.0
Jinja2==3.1.3
MarkupSafe==2.1.5
packaging==24.0
pluggy==1.5.0
pymongo==4.7.0
pytest==8.2.0
python-dotenv==1.0.1
Werkzeug==3.0.2
3 changes: 1 addition & 2 deletions src/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

#if using Atlas database uncomment next line!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! and comment out the next four lines
client = pymongo.MongoClient(os.getenv("MONGO_URI"))

#if using containerized instance of mongo uncomment next 4 lines else comment them out
#root_username = os.environ["MONGO_INITDB_ROOT_USERNAME"] #1
#root_password = os.environ["MONGO_INITDB_ROOT_PASSWORD"] #2
Expand Down Expand Up @@ -393,7 +393,6 @@ def friends():
def unauthorized_handler():
return redirect(url_for('log_in'))


# run the app
if __name__ == "__main__":
# use the PORT environment variable, or default to 5000
Expand Down
135 changes: 135 additions & 0 deletions src/test_app.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
import pytest
from app import app, db

import datetime
from bson.objectid import ObjectId
from bson.decimal128 import Decimal128

TEST_USER_POST = {'fusername': 'marc3', 'fpassword': 'password'}
TEST_INCORRECT_POST = {'fusername': 'marc3', 'fpassword': 'assword'}
TEST_USER_MONGO = {'username': 'marc3'}
db.users.delete_one(TEST_USER_MONGO)

TEST_ITEM_POST = {'itemname': '5555', 'description': '5555', 'price': '555', 'url': '555'}
TEST_ITEM_MONGO = {'name': '5555', 'description': '5555', 'username': 'marc1', 'image_url': '555', 'price': Decimal128('555')}
#db.items.delete_one(TEST_ITEM_MONGO)

@pytest.fixture
def client():
app.config.update({"TESTING": True})

with app.test_client() as client:
yield client

@pytest.fixture
def user(client):
client.post('/signup', data = TEST_USER_POST)

@pytest.fixture
def login(client, user):
client.post('/login', data = TEST_USER_POST)

def test_homepage(client):
response = client.get("/")
assert response.status_code == 200

#create a user and attempt to create the same user again
def test_user_already_exists(client, user):
res = client.post('/signup', data = TEST_USER_POST)
assert 'Username already in use.' in str(res.data)

#login with wrong username and test that an error message is returned
def test_incorrect_login(client, user):
res = client.post('/login', data = TEST_INCORRECT_POST)
assert "Username or password is invalid." in str(res.data)

#make user post an item to a page and check to see that that item is on the page
def test_user_add_item(client, user):
client.post('/add')

#test to see
def test_index_page__not_logged_in(client):
res = client.get('/add')
assert res.status_code == 302

def test_index_page__logged_in(client, user):
client.post('/login', data = TEST_USER_POST)
res = client.get('/add')
assert res.status_code == 200

def test_home(client):
res = client.get('/')
assert res.status_code == 200

def test_logout():
client.post('/logout',)
assert 1 == 1

def test_item():
res = client.get('/item')
assert res.status_code == 200

def test_add():
response = client.get('/add')
assert response.status_code == 200

def test_create_item(client, user, login):
client.post('/add/<user_id>', data = TEST_ITEM_POST)
res = client.get('/add')
assert 1 == 1

def test_delete(client, user, login):
client.post("/delete/<item_id>", data = TEST_ITEM_POST)
res = client.get('/delete')
assert res.status_code == 200

def test_delete_offer(client):
response = client.get('/')

def test_edit(client):
response = client.get('/')

def test_update_item(client):
response = client.get('/')

def test_view_listings(client):
response = client.get('/')

def test_set_public(client):
response = client.get('/')

def test_set_private(client):
response = client.get("/setprivate/<item_id>")
assert response.status_code == 200

def test_offer(client):
response = client.get('/')
assert response.status_code == 200

def test_view_offer(client):
response = client.get('')
assert response.status_code == 200

def test_sent_offers(client):
response = client.get('/')
assert response.status_code == 200

def test_recieved_offers(client):
response = client.get('/')
assert response.status_code == 200

def test_accepts_offers(client):
response = client.get('/')
assert response.status_code == 200

def test_reject_offer(client):
response = client.get('/')
assert response.status_code == 200

def test_unauthorized_handler(client):
response = client.get('/')
assert response.status_code == 200

db.users.delete_one(TEST_USER_MONGO)
#db.items.delete_one(TEST_ITEM_MONGO)
pytest.main()

0 comments on commit a06ff42

Please sign in to comment.